悬赏解决了,黑币怎么发啊 |
我找到问题了,我对硬件TMod的理解不对,打开两个定时器的方式1是是0x11 |
中断一般做定时标志,主循环读取标记并取消标志。 |
自己能解决问题,进步更快 |
找个定时器中断的例程对比一下吧 |
定时器中断不是你这样玩的,一个定时器能完成的任务就不要开两个定时器。给你改了。 #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,当num=4时,led0会翻转,但是速度太快,人眼看到的是长亮,num最大是19不会=20,所以led1不会亮。![]() |