1樓:匿名使用者
int stop() interrupt 0有問題tmod=0x01; //定義定時器0工作於方式1th0=(65536-5536)/256; //定時器賦初值tl0=(65536-5536)/256;
應該在主函式開始 程式 才能響應 ,而且 中斷裡 還得重賦值你學過沒有啊
2樓:
把while(1)
改成tr0=1; //啟動t0工作
while(1)
這樣就ok了,因為你在外部中斷產生時去停止定時器0的計時,但在主程式內卻不斷的使tr0=1.
所以外部中斷過後又自動計時了
3樓:兒童百科探索
sever_int0() interrupt 0 using 2
說明:sever_int0:中斷函式
0:為外部中斷入口
2:使用暫存器組2
中斷源 keil中斷編號 向量位址
最高優先順序 6 0x0033
外部中斷0 0 0x0003
定時器0溢位 1 0x000b
外部中斷1 2 0x0013
定時器1溢位 3 0x001b
串列埠 4 0x0023
定時器2溢位 5 0x002b
dma 7 0x003b
硬體斷點 8 0x0043
jtag 9 0x004b
軟體斷點 10 0x0053
監視定時器 12 0x0063
內部暫存器組有3組:1~3
平時也可以不用,如果有相互巢狀的最好指定,否則可能會出問題
當開啟電斷後,一旦int0口出現低電平時,自動進入sever_int0()函式,處理函式內部程式
高分!急求89c51微控制器簡單程式問題。這個小程式有幾個問題,麻煩路過的高手看看。 主要是做乙個可調時鐘
4樓:
問題一中提到的十位沒顯示是因為你的程式在執行到那兒時迴圈等待你的輸入,所以無法繼續顯示十位,這是程式設計的問題,得到這樣的結果很正常.還有程式中怎麼有兩個delay函式和keyscan函式.?至於問題二,可能是延時程式導致的吧,你自己再試試.
祝你好運!
5樓:匿名使用者
你的按鍵都得去抖啊,第乙個、第二個問題都是沒有去抖啊。
6樓:做而論道
可以解決。
樓主的思路不對。
微控制器c語言程式,請高手們看看,老是有問題但是找不出來。
51微控制器4x4鍵盤c語言程式執行,不知道為什麼第一行按鍵沒反應,而把注釋掉的部分加進去又有反應了。
7樓:匿名使用者
你的注釋相當於加了點延時,你可以加幾個nop()就可以了。
8樓:匿名使用者
for迴圈中的tab不應該是哪個樣的,再建乙個表tab1=,for迴圈中p3=tab[i]改成p3=tab1[i];
9樓:
你的case值好像寫錯了吧
微控制器C語言程式
define uint unsigned int就是用unit替換unsigned int,unsigned int是c語言關鍵字,unit比較簡單 void delayms uint x 定義乙個函式,無返回值,引數是個 無符號整形的變數叫 x uchar 上面不是定義了unsigned char...
pic微控制器c程式的問題,PIC微控制器C程式的問題
學微控制器一定要先看微控制器的記憶體表,即map,知道微控制器內部的暫存器設定,及每個暫存器位址。上面的程式就是直接對暫存器操作,這是微控制器學習較高的境界。adr 8其實是對adr進行移位操作,8是2的三次方。即是把adr的位址左移三位。可以看成是 基位址 偏移位址的方式來取位址。bit應該是3位...
C語言微控制器程式求助
void main 這種方法原理簡單易行,缺點是精度比定時器稍低,注意不要使x y溢位。我們還可以對上面的程式優化 void main 用計數器做!和中斷 中斷設定成 邊沿觸發中斷 在中斷的同時開啟計數器,並判斷是此時高電平還是低電平,然後等到下乙個中斷到來,將計數器的內容另存,然後清空重新計數 這...