中斷定時器

定時器的應用
控制數碼管數字的交替亮,首先用table數組存上每個數字的十六位數值。使用定時器需設置TMOD工作方式T0或T1,然後將總中斷EA和定時器中斷ET0打開,然後將TR0定時器打開。
還需設置中斷函數interrupt 1 ,每進行一次中斷add++;直到add=40數碼管進行一次換數值。

#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int

sbit wela=P2^7;          //位選
sbit dula=P2^6;          //段選
int num,add,temp=0xfe;
uchar code table[]={0x3f,0x06,0x5b,0x4f,
                    0x66,0x6d,0x7d,0x07,
                    0x7f,0x6f,0x77,0x7c,
                    0x39,0x5e,0x79,0x71};

void main()
{

    TMOD=0x01;     //工作方式
    TH0=(65536-50000)/256;
    TL0=(65536-50000)%256;

    EA=1;           //總中斷打開
    ET0=1;          //定時器中斷打開
    TR0=1;          //定時器打開

    wela=1;
    P0=0xfe;
    wela=0;
    dula=1;
    P0=table[0];
    dula=0;         //數碼管初始化

    while(1)
    { }

}

void add_1() interrupt 1       //計時器中斷函數
{
    TH0=(65536-50000)/256;
    TL0=(65536-50000)%256;
    add++;
    if(add==20)
    {
        num++;
        add=0;          
        dula=1;
        P0=table[num];
        if(num==16)
        num=-1;
    }
} 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章