51微控制器同時使用兩個計時器的問題

2021-07-30 21:18:50 字數 1750 閱讀 8381

1樓:匿名使用者

同時用兩個中斷肯定會衝突

定時器1完全可以不用,主程式只管顯示就行,定時器0中斷程式中更新計時數值

還可以嘗試在定時器0的中斷程式裡關閉定時器1,交且將定時器0的中斷優先順序設高

2樓:匿名使用者

就你現在的程式可以正常掃描顯示的呀,就是有點閃爍的效果。

但不知道,這是和誰學習的,數碼管顯示要用定時器定時,中斷一次顯示一次,這可是**,執行速度肯定比實物要慢,所以,就會有閃爍的。

其實,你的主程式中有計算四位數的程式

temp[0]=number[num/1000];

temp[1]=number[num/100%10];

temp[2]=number[num/10%10];

temp[3]=number[num%10];

這是很費時的,這個時間足夠顯示一位的延時了,所以,就在主程式中呼叫顯示子函式就很好的,何必還定時掃描呢。

這樣void main()

}問題就解決了。

最後就一句,那計數是很快了,是每秒計一個數嗎,還是就是計數?

這樣改,要關掉定時器t1的中斷。

3樓:匿名使用者

display中真不知道你要幹嘛,你只這樣傳遞引數有何意義

關於51微控制器使用兩個定時器進行控制的問題

4樓:匿名使用者

//看你意思,兩個定時都是50ms中斷吧?假設d1=1為燈亮

while(1)

}//我覺得你先用一個定時做實驗,比較好。

5樓:沒事來玩幽白

d1=0,d1=1,這倆應該放到if裡面

tf0=0;//關閉定時器0

tf1=1;開啟定時器1

d1=0;//led滅

while(1)

if(bb==40)

}並且在程式開始處開啟定時器1(也就是先執行的定時器),但是要注意,你現在是兩個定時器同時工作,應該在if中關閉當前的定時器,並開啟另一個定時器

6樓:2014的彈子球

首先tmod設定不對,只設定了定時器0,應為tmod=0x11,我記得不清楚了不一定對,。二tcon不對,這個暫存器是控制所有定時器的,應為0x01010000,這個·你也自己查,記不清楚了。詳情自己看資料手冊。。

至於你說的風格,我目前還是沒理解。而且這麼簡單的程式也看不出來啥

7樓:匿名使用者

#include

#define uchar unsigned charvoid init();

uchar aa,bb;

sbit d1=p1^0;

void main()

}void init()

void timer0() interrupt 1void timer1() interrupt 3

51微控制器在同時使用兩個定時器時候,我的為什麼t0總是不好使??

8樓:匿名使用者

這兩個地方改一下試試

void time0_isr() interrupt 1 using 1

void time1_isr() interrupt 3 using 2

9樓:硬體開發

你兩個定時器定時50ms中斷同時到達中斷,你覺得可能嗎, t1高於t0,肯定先執行t1,問題就出現在這裡。

利用微控制器設計59秒計時器,利用51微控制器,4個數碼管設計一個計時器,要求在數碼管上顯示的資料從0開始每1秒鐘加1。

共陽共陰只是你在選com端時給其高低電平的問題無關大雅我給一段pic微控制器的程式讓你參考一下,如果你看懂的話應該能做出來了 include include 此程式實現計時秒錶功能,時鐘顯示範圍00.00 99.99秒,分辨度 0.01秒 unsigned char s0,s1,s2,s3 定義0....

怎樣51微控制器呼叫兩個子程式,怎樣51微控制器呼叫兩個子程式

mov r0,08h mov a,0feh loop mov p1,a lcall del rr a djnz r0,loop 使用djnz 指令。為0執行下一指令,不為0跳轉。就可以呼叫內兩個容子程式了 估計是進入到倒計時程式,一直沒有出來。主程式直接呼叫洗滌程式。定時器,每到1s時,再去呼叫一下...

51微控制器的串列埠io(txd,rxd),能否同時接到兩片ma

理論上是可以的,但你必須從應答的流程上保證,在任意時刻最多只能有一個從 版機在傳送資料,這權點要考慮清楚。另外,txd,rxd可能驅動不了這麼多口子,最簡單的辦法,你可以將訊號輸入到一個74ls04,以增強其驅動。可以!用一片cd4052晶片把txd rxd分接到兩片max232晶片中去。cd405...