//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++; }