1樓:
我前幾天就做了一個差不多的,監測脈衝數,每個脈衝數對應一個資料,資料差值比較大,每次採集的脈衝數會有波動,如果直接現實會出行資料跳動的情況。要做出一個資料穩定的,但是有變化時又要及時反映出來。
比如說資料平穩後突然來一個大資料,就需要對這個干擾濾除,如果之後的資料都變為大資料了,那麼我就要在這個資料點反映資料的變化。感覺有點預知未來的感覺了,其實就是每次計算都是計算前一次的資料,前一次的和新的一次的比較就可以了。
2樓:匿名使用者
你的電壓陣列本身就不靠譜啊,最後面幾個數值都是雷同的,這樣精度如何***呢?
比如,dianya[17]=14 dianya[18]=14這樣的話,你判斷條件aadianya[i])永遠也不會滿足的**有數可以大於14又小於14?
補充剛才我也沒想完整,還是不對,如果數字等於14呢?
小於15,但是不大於14,這樣還是無法滿足條件。
換句話說,只要陣列相鄰兩個數的差值小於2,那麼判斷就會出錯請你把判斷語句的符號都改成「大於等於」和「小於等於」吧
3樓:匿名使用者
if(aa>=78)
else
else }}
}我也不知道對不對,你可以試試····
編寫一個完整的微控制器c51程式
4樓:匿名使用者
12mhz的51微控制器,經過12分頻後為1mhz,則一個指令週期為1/1mhz = 1us. 使能定時器 2 使能定時器中斷 3 編寫中斷程式我估計你是覺得1秒的時間,
一定要採納哦
5樓:徐志尚
你正在考試吧?這個簡單,就是考慮定時器中斷一次時間不夠,一次定時5ms,要中斷200次,然後p1.0取反
89c51微控制器,應該怎麼編寫modbus...求高手指教.....帶例項最好...謝謝了 15
6樓:匿名使用者
首先你應該打通串列埠吧,modbus就是一個協議,是基於串列埠通訊的。所以首先要打通串列埠。
然後按協議填充陣列,包括從機號、功能碼等,自己看協議。
然後是crc校驗,這個網上有很多,隨便搜搜找一個就行。
然後就把填充的陣列通過串列埠發出去,就ok了
7樓:讓你倒黴哦
什麼是modbus啊!
請幫忙在51系列微控制器系統中,編寫一個延時1ms的子程式。謝謝。。
8樓:顛倒的世界
1、首先,在電腦中開啟keil軟體,建立好工程,然後新增c檔案,如下圖所示。
2、然後新增版c檔案,接下來輸入**,先權輸入一個標頭檔案命令。
3、然後,進行巨集定義,**如圖所示。
4、然後宣告p1口,如下圖所示。
5、最後,將延時語句全部新增進去,**按照圖中所示的直接敲入即可。
6、最後,點選編譯,生成hex檔案就可以了,這樣51微控制器延時語句就完成了。
9樓:一言中
在彙編裡面可以用jnz語句,利用所賦初值,寫一個減一不為零跳轉指令,跟c語言的for迴圈一個意思
10樓:匿名使用者
這個得看你晶振的頻率了。。根據for迴圈可以計算下大致得迴圈多少次就能定。微控制器定延時不精確的。
11樓:匿名使用者
void delay_ms(unsigned int n){unsigned int i=0,j=0;
for(i=0;i這是12mhz用的ms延時程式 我用示波器測了回,很準答
12樓:匿名使用者
void delay(unsigned int x) //延時 x ms
延時1ms 即為來
源使x=1;
這程式延時約1ms(x=1時用keil測出來約 0.96831272ms,近似1ms),用c語言很難做到準確的1ms。注意晶振為11.0592mhz的時候用~
13樓:手機使用者
假設bai12mhz.誤差自
du己調,
zhi用daonop微調。
版main: mov r5,#10
del1:mov r6,權#200
del2:mov r7,#246
nopdel3:djnz r7,del3
djnz r6,del2
djnz r5,del1
sjmp $
要做一個89c51微控制器的應用作業。具體請看補充,如果有高手能幫忙的麻煩發到[email protected]~感激不盡啊~
14樓:匿名使用者
溫度感測器用鉑熱電阻,它的電阻值跟溫度成一定的比例關係,可以根據阻值的變化得到溫度的變化,算出值來送led顯示,且同時判斷這個值有沒有達到高定值,到了就斷開插座(插座斷開接通可以用一個繼電器進行控制)
15樓:匿名使用者
這個設計最麻煩的是那個感測器的訊號調理電路.
只要你能把感測器的訊號轉換成電壓,再用一個adc0804之類的ad轉換晶片,連線上微控制器,就很簡單了.
16樓:匿名使用者
感溫器用ds18b20方便
還是關於80c51微控制器的問題!程式如下:我想知道執行出來的結果以及我的那些疑問!在這裡先說句謝謝了……
17樓:阿嚦噶禱
建議你先去看幾本書,首先是《微機原理》,裡面有將微控制器部分的,偏硬體一些,然後是《微控制器c51程式設計》馬忠梅版的,偏軟體設計一些。就是先讓你對微控制器的片內結構有個認識,然後再說程式的事情。
org 0000h
ljmp main (跳轉到 main 這個程式段)
org 0023h (確定了序列口的工作方式) 怎麼才能確定?//這裡不是確定了序列口的工作方式,是確定了串列埠中斷的地址對映入口
//從這開始到main前面是中斷子程式
clr ri (對 ri 進行清零 但作用是什麼呢?//作用是手動清除接收中斷標誌位)
mov a, subf (傳送資料給累加器a)
mov p2,a (再將a中的資料給 p2 口 ) 這是一個什麼樣的過程呢? //這個過程是微控制器自己完成的,程式設計師不用關心,是通過資料匯流排走的
reti
org 0040h (0040h 是怎麼確定的?)//這裡的40h是程式人工的定位到rom裡40h開始的地址單元處,你也可以定義在其他有效範圍內
main: mov sp,#5fh (為什麼要設定堆疊指標呢 作用又是什麼呢?//微控制器一般都有一個堆疊,作用是儲存環境變數的,設定堆疊指標的作用是避免資料對衝了)
mov tmod,#20h (這是什麼意思?//tmod是暫存器)
mov th1,#0fdh (同上 //同上)
mov tl1,#0fdh (同上 //同上)
mov pcon,#00h (電源控制暫存器 復位?原因是什麼//這裡不能理解為復位,是設定串列埠波特率是否翻倍的,也是暫存器操作)
setb tr1 (對tr1 置1設定 原因是? //去看暫存器的使用方法)
mov scon,#50h (不知道這是在幹什麼 //暫存器)
setb ea (中斷總開關置1)
setb es (對中斷開關置1 )
sjmp $end
18樓:匿名使用者
0023h 序列口中斷入口地址,序列口中斷時從此地址開始執行程式clr ri 清除接收中斷
mov p2,a 接收的資料送到a,再從a輸出到p2口顯示subf-a-p2
org 0040h主程式應該在中斷入口程式以後,一般0030h以後就可以具體看你的中斷程式用了多少空間
mov sp,#5fh 堆疊指標這個程式好像沒用到,設定誰防止用堆疊的時候把原來的資料覆蓋掉,所以堆疊應該放到一個用不到的地方
mov tmod,#20h 計時器工作模式mov th1,#0fdh 計時器初始值setb tr1開始計時
mov scon,#50h 序列口工作方式其實所有內容書上都有,希望你會喜歡上微控制器
19樓:做而論道
程式雖然簡短,涉及面較廣,在書裡面,涵蓋三~四章的內容。
開始覺得難,慢慢學,不用急。
下面的簡單說明一下,樓主還是應該看書.
org 0000h ;0000h是開機復位後起始地址,這是固定的.
ljmp main ;跳轉到 main 程式段.
;-------------------------------
org 0023h ;0023h是序列口中斷的入口地址,這也是固定的.
;下面寫的就是序列口中斷程式.
clr ri ;ri=1才發生的串列埠中斷,必須清零,否則中斷就沒有個完了.
mov a, subf ;取出串列埠收到的資料.
mov p2,a ;送到p2口,外接led就能顯示.
reti ;中斷程式結束,返回主程式.
;-------------------------------以上幾行是串列埠中斷程式.
org 0040h ;0040h 是怎麼確定的?,離開0023h幾十位元組即可.
main:mov sp,#5fh ;設定堆疊指標,為中斷過程準備儲存地址的空間.
;-------------------------------
mov tmod,#20h ;這是什麼意思?這三條,是設定定時器的工作方式.
mov th1,#0fdh ;(同上) 用來控制波特率.
mov tl1,#0fdh ;(同上).
setb tr1 ;對tr1置1,即為啟動定時器.
;-------------------------------以上四行,是針對定時器的.
mov scon,#50h ;設定序列口的工作方式.
;在這裡指定了用定時器1,控制波特率.
mov pcon,#00h ;這也是用來控制波特率的.
;-------------------------------以上二行,是針對序列口的.
setb ea ;中斷總開關置1,即開放總中斷.
setb es ;串列埠中斷開關置1,即開放串列埠中斷.
;-------------------------------以上二行,是針對中斷系統的.
sjmp $ ;等待中斷的發生.
;如果串列埠收到資料,立即轉到0023h.
;在0023h執行時,遇到reti,就返回到這裡.end
用51微控制器組合語言編寫一電腦鍾程式,急!!!!!!!
20樓:匿名使用者
唉,可惜了,我只會c51……
21樓:
靠,連年月日都要,這不就是個萬年曆了,單程式設計可不好搞,要加ds1302.。。。。。
C51微控制器程式設計
include define uchar unsigned char define uint unsigned intsbit high key p1 0 sbit low key p1 1 sbit led p2 0 sbit speak p2 1 uint count void delay ui...
c51微控制器中斷程式中的interrupt1,2,3是由什麼決定的
衛戍邊疆 中斷是由於某種事件的發生 硬體或者軟體的 計算機暫停執行當前的程式,轉而執行另一程式,以處理髮生的事件,處理完畢後又返回原程式繼續作業的過程。中斷是處理器一種工作狀態的描述。1 int0 外部中斷0,由p3.2埠引入,低電平或下降沿引起。預設優先順序最高。2 int1 外部中斷1,由p3....
簡單的C51微控制器組合語言程式分析
羅門大佬 樓上說的有理,但是即使刪去ljmp main也不行,因為在中斷時它把ea關了,也就不會中斷了。其實不用關ea,你把clr ea也刪去就可以執行。只要你的手沒有中斷服務程式快就會有中斷。每次按都有。你試一下在開發板上執行,應該可以的。原因是當你外中斷置低電平時,就會進入中斷程式。執行完就會自...