#include <REG51.H>
#include <intrins.h>
char num,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;
switch(key)
{
case 0:
if(num>=10)
{
num=0;
QS=_crol_(QS,1);//循环左移
if(QS==0x7f) //QS=0111 1111
key=1;
}
break;
case 1:
if(num>=10)
{
num=0;
QS=_cror_(QS,1); //循环右移
if(P1==0xfe) //QS=1111 1110
key=0;
}
break;
}
}
}
void zhongduan() interrupt 1
{
TH0=15536/256;
TL0=15536%256;
num++;
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
嗯 ,是的,仿真后可以知道的,就是不知道怎么跳出来,但是把case 1:中的if(QS==0...中的QS改为P1就正常了
我后来调试的时候把你所说的哪个if(QS=0X7E)这里的QS改为P0就没事了,不过还没分析出来为什么
一周热门 更多>