//2、利用定時(shí)/計(jì)數(shù)器T0產(chǎn)生定時(shí)時(shí)鐘,由P1口控制8個(gè)發(fā)光二極管,使8個(gè)指示燈依次一個(gè)一個(gè)閃動(dòng), //閃動(dòng)頻率為10次/秒(8個(gè)燈依次亮一遍為一個(gè)周期),循環(huán)。 #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;//定時(shí)器0中斷開關(guān)開// TR0=1;//定時(shí)器0運(yùn)行// TMOD=0x01;//定時(shí)器0用方式1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; //給定時(shí)器0賦初值產(chǎn)生50ms的定時(shí)中斷 temp1=0xfe; while(1) { temp2=0xff; i=0;//閃爍次數(shù)到之后,轉(zhuǎn)到下個(gè)燈的時(shí)候,計(jì)數(shù)值歸0,重新計(jì)數(shù) while(i<20) { if(num==2) { temp1=temp1^temp2; temp2=temp1^temp2; temp1=temp1^temp2;//兩數(shù)互傳 P1=temp1; i++; num=0; } } temp1=_crol_(temp1,1); } } void timer0() interrupt 1 //50ms中斷定時(shí) { TH0=(65536-50000)/256; TL0=(65536-50000)%256; //重新賦值,否則時(shí)間出錯(cuò) num++; }