 ;********WAVE-E6000/T************************** ;*MCU: AT89C51 * ;*MCU-crystal: 6M * ;*Version: 00 * ;*Last Updata: * ;*Author: www.picavr.com * ;*Description: 手動計數(shù)器 * ;********************************************** /* 每按Cun鍵一次 T/C0 計數(shù)一次,計數(shù)值在數(shù)碼管上顯示 */ /* 觀察按鍵抖動情況,即每按一次按鍵可能產(chǎn)生多個脈沖 */ #include <reg51.h> unsigned char led[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; delay(i) unsigned int i; { unsigned int j; while(i--) {j=7650;while(j--);} } void main(void) { P0=0xa4;P2=0xa4;delay(10);P0=0xc0;P2=0xc0; TH0=0;TL0=0; /* 設(shè)置計數(shù)初值 */ TMOD=0x06; /* 設(shè) T/C0 為計數(shù)方式2 */ IE=0x82; /* 啟動定時中斷 0 */ TR0=1; /* 啟動 T/C0 */ P1=0xfe; /* 定義 <Cun> 為脈沖發(fā)生按鍵 */ while(1) { if(TL0>99)break; P0=led[TL0/10];P2=led[TL0%10]; } }
|