if/while(i=a)a为一个常数

浅析if(i=a)a为常数

在这里插入图片描述
for循环中:最开始i=0,进入到if判断中就变成i=5了,为真,进入if打印,接着执行i++,i变成了6,6<10,所以死循环的打印5

while

在这里插入图片描述
直接在while中算,而且判断一举两得

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
#include<reg52.h> #define uint unsigned int #define uchar unsigned char sbit P10=P1^0; uchar a=0;//T0断次数 char c=0; //闪烁次数 uint b=0; //外部断(S14问 uint z; //判断减一执行后是否开启加一按键 void delay(uint z); void display(); uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; uchar code wei[]={0x01,0x02}; uchar m[]={0,0}; void delay(uint z){ //延迟函数 uint j,k; for(j=0;j<z;j++) for(k=0;k<25;k++); } void display(){ //数码管显示函数 uchar i; m[0]=TL1%10; m[1]=TL1/10; for(i=0;i<2;i++){ P2=wei[i]; P0=table[m[i]]; delay(10); } } void tini(){ //定时/计数器初始化 TMOD=0x61; //T0方式1定时,T1方式计数 0110 0001 TL1=0x00; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=0; //T0停止计数 TR1=0; //T1停止计数 } void exini(){ //外部断初始化 EA=1; //CPU开断 EX0=1; //允许INT0断 EX1=1; //允许INT1断 ET0=1; //允许T0断 ET1=1; //允许T1断 PX0=1; IT0=1; //INT0断下降沿触发 IT1=1; //INT1断下降沿触发 } void shanshuo(){ //闪烁程序 for(c=TL1;c>0;c--){ P10=1; delay(500); display(); P10=0; delay(500); display(); } } void main (void) { exini(); tini(); while(1){ display(); } } void int3_0() interrupt 0{ //外部断0服务程序 b=b+1; //断次数加一 TR1=1; //启动计数器1 switch(b){ case 1:TR1=1;break; case 2:TR1=0;b=0;TR0=1;break; } } void int1_0() interrupt 2{ //外部断1服务程序 if(TR1==1) z=0; else z=1; TR1=0; if(TL1>0){ TL1=TL1-1; //计数值减一 } else{ TL1=0; TR1=0; } if(z==0) TR1=1; else if(z==1) TR1=0; } void int1_3() interrupt 1{ //计时器T0断服务程序 TH0=(65536-50000)/256; //定时50ms时间常数 TL0=(65536-50000)%256; a=a+1; //断次数加一 if(a==100){ a=0; TR0=0; //停止计时 shanshuo(); P10=1; //LED熄灭 } } 对此代码进行完善处理
最新发布
05-24
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值