中易网

单片机程序定时器中断问题,先是第三个灯亮三秒。接着灭了,第一个灯闪烁五次。第三个灯亮三秒暗三秒循环

答案:3  悬赏:70  
解决时间 2021-11-09 01:30
  • 提问者网友:萌萌小主
  • 2021-11-08 03:06
#include #define uint unsigned int #define uchar unsigned char sbit d1=P1^0; sbit d2=P1^2; uchar tt; void delay(uint z); void main() { TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; d1=1; d2=0; delay(3000) ; EA=1;//开总中断 ET0=1; TR0=1; while(1) { if(tt==5) tt=0; d2=1; delay(3000) ; d2=0; delay(3000) ; } } void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=1盯海驰剿佻济宠汐触搂10;y>0;y--); } void exter0() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; tt++; d1=0; delay(100); d1=1; delay(100); }
最佳答案
  • 二级知识专家网友:邪性洒脱
  • 2021-11-08 04:38
下面改成
if(tt==5)
TR0=0;
Es=0;
tt=0;
d2=1;
delay(3000) ;
d2=0;
delay(3000) ;
TR0=1;
Es=1;}
全部回答
  • 1楼网友:摧毁过往
  • 2021-11-08 06:59
中断子函数有问题 这样改 void timer0() interrupt 1 { th0=(65536-100)/256; //原定时太短了吧 tl0=(65536-100)%256; //原定时太短了吧 t0++; if(t0<=dc) { p1=0; } else { p1=0xff; } if(t0==200) { t0=0; if(flag==0) { dc++; if(dc==200)flag=1; //这是赋值语言,一个等号 } else if(flag==1) //这应该是else if { dc--; if(dc==0) flag=0;//这是赋值语言,一个等号 } } }
  • 2楼网友:迷人小乖乖
  • 2021-11-08 05:55
#include #define uint unsigned int #define uchar unsigned char sbit d1=P1^0; sbit d2=P1^2; uchar tt=0; void delay(uint z); void main() { TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; d1=1; d2=0; delay(3000) ; d1=0; d2=0; EA=1;//开总中断 ET0=1; TR0=1; while(1) { if(tt==5) { d2=1; delay(3000) ; d2=0; delay(3000) ; } } } void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void exter0() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; tt++; d1=0; delay(100); d1=1; delay(100); }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息