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