微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 求高手帮忙看看哪里出错了!第一个循环周期是对的,之....

求高手帮忙看看哪里出错了!第一个循环周期是对的,之....

时间:10-02 整理:3721RD 点击:
#include <REG51.H>
#include <intrins.h>
unsigned char num;
unsigned int key;
void main()
{
char QS;
TMOD=0X01;   //选择定时/计数器以方式1工作(16位)
TH0=15536/256;  //装初值定时器中断一次为50ms
TL0=15536%256;
EA=1;    //开启总中断允许
ET0=1;    //开启定时器0终端允许
TR0=1;    //开启定时/计数器
QS=0Xfe;   //给P0口赋初值1111 1110
while(1)
{
  P1=QS;
   
   if(key==0&num>=10)
    {
     num=0;
     QS=_crol_(QS,1);//循环左移
     if(QS==0x7f)    //QS=0111 1111
     key=1;
    }
      
   if(key==1&num>=10)
    {                                                                                                      
     num=0;
     QS=_cror_(QS,1);//循环右移
     if(P1==0xfe)  //QS=1111 1110
     key=0;
    }
}   
}
void zhongduan() interrupt 1
{
TH0=15536/256;
TL0=15536%256;
num++;
}

if(key==0&num>=10)
这个是位与吧 是不是用这个 &&

第一循环中num已经清零了,所以按照顺序执行,第二循环 if(key==1&num>=10)条件就不可能为真,所以进不了第二个循环。

还有KEY没赋初值

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top