熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
|
發(fā)布時(shí)間: 2024-1-31 19:25
正文摘要:,如圖所示,我想用定時(shí)器0的方式1實(shí)現(xiàn)第一個(gè)二極管以200ms間隔閃爍,用定時(shí)器1的方式1實(shí)現(xiàn)第二個(gè)二極管以1s間隔閃爍,但是實(shí)驗(yàn)結(jié)果只有第一個(gè)燈亮。而且不閃爍。誠信程序如圖,想讓大佬看看是哪里編程有問題 |
| 懸賞解決了,黑幣怎么發(fā)啊 |
| 我找到問題了,我對(duì)硬件TMod的理解不對(duì),打開兩個(gè)定時(shí)器的方式1是是0x11 |
| 中斷一般做定時(shí)標(biāo)志,主循環(huán)讀取標(biāo)記并取消標(biāo)志。 |
| 自己能解決問題,進(jìn)步更快 |
| 找個(gè)定時(shí)器中斷的例程對(duì)比一下吧 |
|
定時(shí)器中斷不是你這樣玩的,一個(gè)定時(shí)器能完成的任務(wù)就不要開兩個(gè)定時(shí)器。給你改了。 #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; } |
呵呵,樓主的中斷一點(diǎn)意義都沒有,num=0~19,當(dāng)num=4時(shí),led0會(huì)翻轉(zhuǎn),但是速度太快,人眼看到的是長(zhǎng)亮,num最大是19不會(huì)=20,所以led1不會(huì)亮。![]() |
Powered by 單片機(jī)教程網(wǎng)