新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于51單片機的數字秒表的設計

        基于51單片機的數字秒表的設計

        作者: 時間:2016-11-30 來源:網絡 收藏

        (2)外部中斷1服務程序

        外部中斷1服務程序結合外部P3.3鍵實現數字秒表的停止功能。

        流程圖如下所示。

        本地圖片,請重新上傳

        (3)定時器T0中斷服務程序

        當T0一處后,向CPU發出中斷請求信號。CPU跳轉到定時中斷程序執行,具體流程如下。

        2.3程序清單

        #include

        unsigned int data table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //顯示碼值

        unsigned int i,j,k,l,count;

        void delay(unsigned int z) //延時程序

        {

        unsigned int x,y;

        for(x=z;x!=0;x--)

        for(y=110;y!=0;y--);

        }

        void main()

        {

        TMOD=0x01; //設置定時器為模式1

        TH0=(65536-1000)/256; //給定時器賦定時初值

        TL0=(65536-1000)%256;

        EA=1; //開中斷

        EX0=1;

        EX1=1;

        ET0=1;

        IT0=1; //設置外部中斷位脈沖邊沿觸發方式

        IT1=1;

        while(1) // 數碼顯示

        {

        P2=0x03;

        P0=table[i];

        delay(1);

        P2=0x02;

        P0=table[j];

        delay(1);

        P2=0x01;

        P0=(table[k]+0x80);

        delay(1);

        P2=0x00;

        P0=table[l];

        delay(1);

        };

        }

        void ex0() interrupt 0 //外部中斷0

        {

        TR0=1; //開定時器,開始計數

        }

        void ex1() interrupt 2 //外部中斷0

        {

        TR0=0; //停止計數

        }

        void timer0() interrupt 1 //定時器T0溢出中斷

        {

        TH0=(65536-1000)/256; //重裝計數初值

        TL0=(65536-1000)%256;

        count++; //溢出中斷次數加一



        if(count==10)

        {

        count=0;

        i++; //溢出10次,0.01s位加一

        if(i==10)

        {

        i=0; //0.01s位到10了,清零,0.1s位加一

        j++;

        if(j==10)

        {

        j=0; //0.1s位到10了,清零,1s位加一

        k++;

        if(k==10)

        {

        k=0; //1s位到10了,清零,10s位加一

        l++;

        }

        }

        }

        }

        }

        上一頁 1 2 下一頁

        關鍵詞: 51單片機數字秒

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 邓州市| 泽普县| 交城县| 合川市| 惠州市| 长武县| 长岭县| 长丰县| 滦平县| 达州市| 沙坪坝区| 宿迁市| 梁山县| 宜昌市| 公安县| 绍兴市| 黄浦区| 惠安县| 杭锦旗| 武乡县| 北宁市| 邢台县| 阿合奇县| 郁南县| 霍州市| 大邑县| 鞍山市| 武宣县| 郎溪县| 张掖市| 西峡县| 夹江县| 道真| 句容市| 象州县| 红原县| 沐川县| 碌曲县| 囊谦县| 昭觉县| 英德市|