闪动频率为10次/秒(8个灯依次亮一遍为一个周期),循环
#include<reg52.h> #include<intrins.h> unsigned char t,a; void main() { TMOD=0x10; //给TMOD赋值,选择定时器T1 TH1=(65536-50000)/256; //计算初值写入TH1,TL1 TL1=(65536-50000)%256; EA=1; //中断允许总控制位开启 ET1=1; //定时、计数器T1控制位开启 TR1=1; //TR1置位,启动定时、计数器T1 while(1) { if(t==2) { a=0xfe; P1=a; while(1) { a=_crol_(a,1);//循环左移一位,还有一种方式左移后按位或用FOR语句 P1=a; P0=0xfd; t=0; } } } } void extimer1() interrupt 3 //中断方式以及对应的中断号 { TH1=(65536-50000)/256; TL1=(65536-50000)%256; t++; }