求高手帮忙看看哪里出错了!第一个循环周期是对的,之....
时间: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++;
}
#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没赋初值