新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 51單片機定時器0工作在模式2

        51單片機定時器0工作在模式2

        作者: 時間:2012-12-01 來源:網(wǎng)絡(luò) 收藏
        ,INT0(P3.2)引腳控制定時/計數(shù)器定時計數(shù),定時/計數(shù)器0溢出中斷,使P2.0引腳相連的LED燈閃爍。定時/計數(shù)器0溢出中斷為250μs,與P2_0引腳相連的LED燈每2s亮滅一次。源程序如下:
        //51hei單片機網(wǎng)原創(chuàng)作品,版權(quán)所有.
        #include "reg_c51.h"
        #define reload_value 0x06//計數(shù)值為250,若時鐘頻率為12MHz,相當(dāng)于250μs
        unsigned char hex[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,
        0x88,0x83,0xC6,0xA1,0x86,0x8E}; //數(shù)碼管十六進制譯碼表
        unsigned char n,nn; //定義中斷次數(shù)變量
        void main(void) //主函數(shù)
        {
        TMOD = 0xF0; //定時/計數(shù)器0,8位重裝模式
        TMOD |= 0x0A; //GATE0=1; C/T0#=0; M1=1; M0=0;
        TL0 = reload_value; //設(shè)置初值
        TH0 = reload_value; //設(shè)置初值
        ET0=1; //允許定時/計數(shù)器0中斷
        EA=1; //允許總中斷
        TR0=1; //啟動定時/計數(shù)器0
        while(1) //無限循環(huán)
        {
        P1=hex[n/10]; //顯示中斷次數(shù)變量n的高位
        P0=hex[n%10]; //顯示中斷次數(shù)變量n的低位
        }}
        void it_timer0(void) interrupt 1 //定時/計數(shù)器0中斷函數(shù)
        {
        nn=nn++; //每次中斷nn加1,每兩次中斷間隔250μs
        if (nn==40) //nn=40,就是中斷40次,相當(dāng)于40*250μs =10ms
        {
        nn=0;
        n++; //每10ms,n加1,
        if(n==100) //n=100,相當(dāng)于時間10ms*100=1s
        {n=0;
        P2_0 = ~P2_0;//每間隔1s,將P2_0引腳電平取反,使相連的LED燈閃爍
        }}}


        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 那曲县| 祁连县| 安乡县| 保定市| 石城县| 信丰县| 宁夏| 铜鼓县| 平和县| 九台市| 和田市| 南陵县| 沁阳市| 安龙县| 莫力| 富裕县| 苏尼特右旗| 遂川县| 六安市| 四会市| 谷城县| 宜城市| 松阳县| 平阳县| 霍山县| 大港区| 望都县| 新竹县| 大关县| 云和县| 青龙| 慈利县| 饶河县| 南郑县| 井冈山市| 承德县| 崇义县| 丽江市| 孟连| 岳阳市| 泾源县|