新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 17. 99秒馬表設計

        17. 99秒馬表設計

        作者: 時間:2016-11-18 來源:網絡 收藏
        1.實驗任務
        (1.開始時,顯示“00”,第1次按下SP1后就開始計時。
        (2.第2次按SP1后,計時停止。
        (3.第3次按SP1后,計時歸零。
        2.電路原理

        圖4.17.1
        3.系統板上硬件連線
        (1.把“單片機系統”區域中的P0.0/AD0-P0.7/AD7端口用8芯排線連接到“四路靜態數碼顯示模塊”區域中的任一個a-h端口上;要求:P0.0/AD0對應著a,P0.1/AD1對應著b,……,P0.7/AD7對應著h。
        (2.把“單片機系統”區域中的P2.0/A8-P2.7/A15端口用8芯排線連接到“四路靜態數碼顯示模塊”區域中的任一個a-h端口上;要求:P2.0/A8對應著a,P2.1/A9對應著b,……,P2.7/A15對應著h。
        (3.把“單片機系統“區域中的P3.5/T1用導線連接到”獨立式鍵盤“區域中的SP1端口上;
        4.程序框
        T0中斷服務程序框
        T0中斷入口

        TCNT加1

        TCNT=400嗎?

        TCNT=0

        SEC加1

        SEC=100嗎?

        SEC=0

        處理SEC并顯示

        中斷返回












        圖4.17.2
        5.匯編源程序
        TCNTAEQU30H
        TCNTBEQU31H
        SECEQU32H
        KEYCNTEQU33H
        SP1BITP3.5
        ORG00H
        LJMPSTART
        ORG0BH
        LJMPINT_T0
        START:MOVKEYCNT,#00H
        MOVSEC,#00H
        MOVA,SEC
        MOVB,#10
        DIVAB
        MOVDPTR,#TABLE
        MOVCA,@A+DPTR
        MOVP0,A
        MOVA,B
        MOVDPTR,#TABLE
        MOVCA,@A+DPTR
        MOVP2,A
        MOVTMOD,#02H
        SETBET0
        SETBEA
        WT:JBSP1,WT
        LCALLDELY10MS
        JBSP1,WT
        INCKEYCNT
        MOVA,KEYCNT
        CJNEA,#01H,KN1
        SETBTR0
        MOVTH0,#06H
        MOVTL0,#06H
        MOVTCNTA,#00H
        MOVTCNTB,#00H
        LJMPDKN
        KN1:CJNEA,#02H,KN2
        CLRTR0
        LJMPDKN
        KN2:CJNEA,#03H,DKN
        MOVSEC,#00H
        MOVA,SEC
        MOVB,#10
        DIVAB
        MOVDPTR,#TABLE
        MOVCA,@A+DPTR
        MOVP0,A
        MOVA,B
        MOVDPTR,#TABLE
        MOVCA,@A+DPTR
        MOVP2,A
        MOVKEYCNT,#00H
        DKN:JNBSP1,$
        LJMPWT
        DELY10MS:
        MOVR6,#20
        D1:MOVR7,#248
        DJNZR7,$
        DJNZR6,D1
        RET
        INT_T0:
        INCTCNTA
        MOVA,TCNTA
        CJNEA,#100,NEXT
        MOVTCNTA,#00H
        INCTCNTB
        MOVA,TCNTB
        CJNEA,#4,NEXT
        MOVTCNTB,#00H
        INCSEC
        MOVA,SEC
        CJNEA,#100,DONE
        MOVSEC,#00H
        DONE:MOVA,SEC
        MOVB,#10
        DIVAB
        MOVDPTR,#TABLE
        MOVCA,@A+DPTR
        MOVP0,A
        MOVA,B
        MOVDPTR,#TABLE
        MOVCA,@A+DPTR
        MOVP2,A
        NEXT:RETI
        TABLE:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
        END
        6.C語言源程序
        #include

        unsignedcharcodedispcode[]={0x3f,0x06,0x5b,0x4f,
        0x66,0x6d,0x7d,0x07,
        0x7f,0x6f,0x77,0x7c,
        0x39,0x5e,0x79,0x71,0x00};
        unsignedcharsecond;
        unsignedcharkeycnt;
        unsignedinttcnt;

        voidmain(void)
        {
        unsignedchari,j;

        TMOD=0x02;
        ET0=1;
        EA=1;
        second=0;
        P0=dispcode[second/10];
        P2=dispcode[second%10];
        while(1)
        {
        if(P3_5==0)
        {
        for(i=20;i>0;i--)
        for(j=248;j>0;j--);
        if(P3_5==0)
        {
        keycnt++;
        switch(keycnt)
        {
        case1:
        TH0=0x06;
        TL0=0x06;
        TR0=1;
        break;
        case2:
        TR0=0;
        break;
        case3:
        keycnt=0;
        second=0;
        P0=dispcode[second/10];
        P2=dispcode[second%10];
        break;
        }
        while(P3_5==0);
        }
        }
        }
        }

        voidt0(void)interrupt1using0
        {
        tcnt++;
        if(tcnt==400)
        {
        tcnt=0;
        second++;
        if(second==100)
        {
        second=0;
        }
        P0=dispcode[second/10];
        P2=dispcode[second%10];
        }
        }


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 鞍山市| 安塞县| 鄯善县| 安平县| 清镇市| 龙海市| 宜兰县| 鹤峰县| 定安县| 定边县| 临沭县| 濮阳县| 威海市| 浮梁县| 定陶县| 洛宁县| 淮安市| 巴林左旗| 通榆县| 文安县| 乃东县| 彭山县| 潢川县| 榆树市| 子长县| 安福县| 布尔津县| 大厂| 渑池县| 屯门区| 赣榆县| 绥宁县| 民乐县| 余江县| 当阳市| 阳山县| 天门市| 越西县| 曲靖市| 色达县| 丽江市|