//2、利用定时/计数器T0产生定时时钟,由P1口控制8个发光二极管,使8个指示灯依次一个一个闪动,
//闪动频率为10次/秒(8个灯依次亮一遍为一个周期),循环。
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
//sbit d0=P1^0;
uchar temp1,temp2;
uint num,i;
void main()
{
num=0;
EA=1;//开总中断//
ET0=1;//定时器0中断开关开//
TR0=1;//定时器0运行//
TMOD=0x01;//定时器0用方式1
TH0=(65536-50000)/256;
TL0=(65536-50000)%256; //给定时器0赋初值产生50ms的定时中断
temp1=0xfe;
while(1)
{
temp2=0xff;
i=0;//闪烁次数到之后,转到下个灯的时候,计数值归0,重新计数
while(i<20)
{
if(num==2)
{
temp1=temp1^temp2;
temp2=temp1^temp2;
temp1=temp1^temp2;//两数互传
P1=temp1;
i++;
num=0;
}
}
temp1=_crol_(temp1,1);
}
}
void timer0() interrupt 1 //50ms中断定时
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256; //重新赋值,否则时间出错
num++;
}