#include"reg51.h" #define uchar unsigned char #define uint unsigned int sbit led1=P1^0; sbit led2=P1^1; sbit led3=P1^2; sbit led4=P1^3; sbit led5=P1^4; sbit led6=P1^5; sbit led7=P1^6; sbit led8=P1^7; uchar num1; void main() { TMOD=0x01; TH0=(65536-45872)/256; TL0=(65536-45872)%256; EA=1; ET0=1; TR0=1; led1=1; led2=1; led3=1; led4=1; led5=1; led6=1; led7=1; led8=1; while(1) { if((num1==4)||(num1==8)||(num1==12)||(num1==16)||(num1==20)) { led1=~led1; } if((num1==24)||(num1==28)||(num1==32)||(num1==36)||(num1==40)) { led1=1; led2=~led2; } if((num1==44)||(num1==48)||(num1==52)||(num1==56)||(num1==60)) { led2=1; led3=~led3; } if((num1==64)||(num1==68)||(num1==72)||(num1==76)||(num1==80)) { led3=1; led4=~led4; } if((num1==84)||(num1==88)||(num1==92)||(num1==96)||(num1==100)) { led4=1; led5=~led5; } if((num1==104)||(num1==108)||(num1==112)||(num1==116)||(num1==120)) { led5=1; led6=~led6; } if((num1==124)||(num1==128)||(num1==132)||(num1==136)||(num1==140)) { led6=1; led7=~led7; } if((num1==144)||(num1==148)||(num1==152)||(num1==156)) { led7=1; led8=~led8; } if(num1==160) { led8=~led8; led8=1; num1=0; } } } void T0_time()interrupt 1 { TH0=(65536-45872)/256; TL0=(65536-45872)%256; num1++; }
收藏0 举报
wangch_sh 发表于 2014-11-6 08:16 有什么问题?
ayb_ice 发表于 2014-11-6 08:25 你这个错误关键在num1的处理上,这个变量在不停的被中断累加,在主循环的一次循环处理中可能值会发生变化, ...
#include"reg51.h" #define uchar unsigned char #define uint unsigned int sbit led1=P1^0; sbit led2=P1^1; sbit led3=P1^2; sbit led4=P1^3; sbit led5=P1^4; sbit led6=P1^5; sbit led7=P1^6; sbit led8=P1^7; uchar num1,num2; void main() { TMOD=0x01; TH0=(65536-45872)/256; TL0=(65536-45872)%256; EA=1; ET0=1; TR0=1; while(1) { switch(num1) { case 0: while(num1<=20) { if(num2==4) { num2=0; led1=~led1; } } case 20: while(num1<=40) { if(num2==4) { led1=1; num2=0; led2=~led2; } } case 40: while(num1<=60) { if(num2==4) { led2=1; num2=0; led3=~led3; } } case 60: while(num1<=80) { if(num2==4) { led3=1; num2=0; led4=~led4; } } case 80: while(num1<=100) { if(num2==4) { led4=1; num2=0; led5=~led5; } } case 100: while(num1<=120) { if(num2==4) { led5=1; num2=0; led6=~led6; } } case 120: while(num1<=140) { if(num2==4) { led6=1; num2=0; led7=~led7; } } case 160: while(num1<=180) { if(num2==4) { led7=1; num2=0; led8=~led8; } }led8=1;num1=0;break; } } } void T0_time()interrupt 1 { TH0=(65536-45872)/256; TL0=(65536-45872)%256; num1++; num2++; }
ayb_ice 发表于 2014-11-6 13:35 既然这么认为,我也就不说什么了, 此没有问题只能说明这个没有问题,也只能说明没有看到问题。。。 ...
查看全部评分
本版积分规则 发表回复 回帖并转播 回帖后跳转到最后一页
人才类勋章
时间类勋章
发帖类勋章
等级类勋章
4
15
0
扫码关注 21ic 官方微信
扫码关注嵌入式微处理器
扫码关注电源系统设计
扫码关注21ic项目外包
扫码浏览21ic手机版
本站介绍 | 申请友情链接 | 欢迎投稿 | 隐私声明 | 广告业务 | 网站地图 | 联系我们 | 诚聘英才
京公网安备 11010802024343号