![]() |
發(fā)布時間: 2024-1-31 19:25
正文摘要:,如圖所示,我想用定時器0的方式1實現(xiàn)第一個二極管以200ms間隔閃爍,用定時器1的方式1實現(xiàn)第二個二極管以1s間隔閃爍,但是實驗結(jié)果只有第一個燈亮。而且不閃爍。誠信程序如圖,想讓大佬看看是哪里編程有問題 |
懸賞解決了,黑幣怎么發(fā)啊 |
我找到問題了,我對硬件TMod的理解不對,打開兩個定時器的方式1是是0x11 |
中斷一般做定時標(biāo)志,主循環(huán)讀取標(biāo)記并取消標(biāo)志。 |
自己能解決問題,進步更快 |
找個定時器中斷的例程對比一下吧 |
定時器中斷不是你這樣玩的,一個定時器能完成的任務(wù)就不要開兩個定時器。給你改了。 #include <reg52.h> sbit led0=P2^0; sbit led1=P2^1; typedef unsigned char u8; typedef unsigned int u16; u8 num; u8 flag; void main() { TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1; ET0=1; EA =1; while (1) { if(flag==1) { flag=0; num++; if(num%2==0)//100ms { led0=~led0; } if(num>=10)//500ms { num=0; led1=~led1; } } } } void shine() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; flag=1; } |
呵呵,樓主的中斷一點意義都沒有,num=0~19,當(dāng)num=4時,led0會翻轉(zhuǎn),但是速度太快,人眼看到的是長亮,num最大是19不會=20,所以led1不會亮。![]() |
Powered by 單片機教程網(wǎng)