 ;********WAVE-E6000/T************************** ;*MCU: AT89C51 * ;*MCU-crystal: 11.0592MHz * ;*Version: 00 * ;*Last Updata: * ;*Author: www.picavr.com * ;*Description: 以1秒鐘為單位,以計時/計數(shù)方式 * ; 循環(huán)顯示0—99 * ;********************************************** /*Fosc=11.0592MHz 計數(shù)65536次為71.1111ms*/ #include <reg51.h> unsigned char i; unsigned char led[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90}; bit flag; sbit p36=P3^6; /* T/C0 定時0.05秒鐘 */ void t_int(void) interrupt 1 using 1 { p36=!p36; TH0=-46080/256;TL0=-46080%256; } /* T/C1 計數(shù)1秒鐘 */ void c_int(void) interrupt 3 using 2 { flag=1; } void main(void) { TMOD=0x61; /* T/C1為方式2計數(shù),T/C0為方式1定時 */ TH0=-46080/256;TL0=-46080%256; /* 延時0.05秒鐘參數(shù) */ TH1=-10;TL1=-10; /* 延時1秒鐘參數(shù),兩次反轉(zhuǎn)才能產(chǎn)生一個計數(shù)脈沖 */ EA=1; ET0=1;ET1=1; TR0=1;TR1=1; while(1) { for(i=0;i<=99;i++) { P0=led[i/10]; P2=led[i%10]; while(!flag); /* 延時1秒鐘 */ flag=0; } } }
|