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