當(dāng)前位置:中美貿(mào)易網(wǎng) > 技術(shù)中心 > 所有分類
51單片機用定時器0實現(xiàn)流水燈的代碼如下,用P1口接led燈,代碼如下都有注釋就不具體解釋了,英語不怎么好,有的地方將就一下嘍,本次主要講一下P1口怎么賦值。原先寫的都是用查表來移位的,個人感覺不怎么好,麻煩。直接用位運算的比較好。 n初始值為0,然后n每次循環(huán)都加1,P1口賦值語句為: P1=~(0x01< n)="" ;="" 此處注意和p1="">< n)="" ;="">
/*********調(diào)用頭文件*****************/
#Include #Include /***********宏定義*******************/ #define uint unsigned int #define uchar unsigned char #define long_time0 10 //定時器0定時時間,每次50ms /************定義全局變量************/ uint n=0; //循環(huán)移位變量 /************子函數(shù)聲明**************/ void init_time0(void); //定時器0初始化子函數(shù) /*************主函數(shù)*****************/ void main(void) { init_time0(); } /*********定時器0初始化函數(shù)**********/ void init_time0(void) { EA=1; //開總中斷 ET0=1; //開定時器0中斷 TMOD=0X01; //選擇方式1 TH0=(65536-50000)/256; //每次定時50秒 TL0=(65526-50000)%256; TR0=1; //開啟定時器 while(1); //等待定時器0中斷 } /************定時器中斷函數(shù)**********/ void time0(void) interrupt 1 using 0 { static uint i=0; i++; if(long_time0==i) { P1=~(0x01 if(++n==8)n=0; i=0; //定時時間到清零 } TH0=(65536-50000)/256; //重新裝入初值 TL0=(65526-50000)%256; }