TIMER0 流水灯,两组8个流水灯,我想让每循环一周期就多一盏灯亮起,一直...
发布网友
我来回答
共1个回答
热心网友
/*已验证通过*/
#include<reg52.h>
unsigned char cycle,i,j;
void init()
{
TMOD = 0x11;
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256;
IE = 0x82;
TR0 = 1;
cycle = i = P1 = P2 = 0;
j = 0x01;
}
void timer0() interrupt 1
{
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256;
i++;
P1 = j;
j<<=1;
if(i==8)
{
i = 0;
j = 0x01;
cycle++;
if(cycle==8)
{
cycle=0;
}
}
}
void main()
{
init();
while(1)
{
switch(cycle)
{
case 0:P2 = 0x00;break;
case 1:P2 = 0x01;break;
case 2:P2 = 0x03;break;
case 3:P2 = 0x07;break;
case 4:P2 = 0x1F;break;
case 5:P2 = 0x3F;break;
case 6:P2 = 0x7F;break;
case 7:P2 = 0xFF;break;
default:P2 = 0x00;
}
}
}