新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 8279顯示電子鐘的設計與程序源代碼

        8279顯示電子鐘的設計與程序源代碼

        作者: 時間:2010-02-01 來源:網絡 收藏

        可以看看時鐘是怎么樣的。

        本文引用地址:http://www.104case.com/article/173455.htm

        MCS51單片機匯編

        Z8279 EQU 08701H ;8279 狀態(tài)/命令口地址

        D8279 EQU 08700H ;8279 數據口地址

        LEDMOD EQU 00H;左邊輸入 八位字符

        ;外部譯碼鍵掃描方式,雙鍵互鎖

        LEDFEQ EQU 2FH;掃描速率

        LEDCLS EQU 0C1H ;清除 RAM

        LEDWR0 EQU 80H;設定的將要寫入的RAM地址

        ORG 0000H

        AJMP START

        ORG 001BH ;INT T1 入口地址

        AJMP INT_T1

        ORG 0040H

        START:

        MOV SP,#60H

        LCALL INIT8279;初始化8279

        MOV R3,#0H ;

        MOV R2,#0H ;

        MOV R1,#0H ;

        MOV R6,#0H ;標志

        MOV TMOD,#10H

        MOV TL1,#00H ;50 MS 的時間常數

        MOV TH1,#04CH

        MOV R0,#20

        SETB TR1

        SETB ET1

        SETB EA ;允許中斷

        WAIT: CJNE R6,#0FFH,WAIT

        LCALL DISPLAY

        MOV R6,#0

        SJMP WAIT

        INIT8279:

        ;8279初始化子

        PUSH DPH ;保存現場

        PUSH DPL

        PUSH ACC

        LCALL DELAY ;延時

        MOV DPTR ,#Z8279

        MOV A,#LEDMOD ;置8279工作方式

        MOVX @DPTR,A

        MOV A,#LEDFEQ ;置鍵盤掃描速率

        MOVX @DPTR,A

        MOV A,#LEDCLS ;清除 LED 顯示

        MOVX @DPTR,A

        LCALL DELAY ;延時

        POP ACC ;恢復現場

        POP DPL

        POP DPH

        RET

        ;顯示字符子程序

        ;輸入R4,位置 R5,值

        DISLED: PUSH DPH ;保存現場

        PUSH DPL

        PUSH ACC

        MOV A,#LEDWR0 ;置顯示起始地址

        ADD A,R4 ;加位置偏移量

        MOV DPTR,#Z8279

        MOVX @DPTR,A ;設定顯示位置

        MOV DPTR,#LEDSEG ;置顯示常數表起始位置

        MOV A,R5

        MOVC A,@A+DPTR;查表

        MOV DPTR,#D8279

        MOVX @DPTR,A ;顯示數據

        POP ACC ;恢復現場

        POP DPL

        POP DPH

        RET

        DELAY: ;延時子程序

        PUSH 0 ;保存現場

        PUSH 1

        MOV 0,#0H

        DELAY1: MOV 1,#0H

        DJNZ 1,$

        DJNZ 0,DELAY1

        POP 1 ;恢復現場

        POP 0

        RET

        INT_T1: ;INT_T1中斷服務子程序

        PUSH DPH ;保護現場

        PUSH DPL

        PUSH ACC

        PUSH PSW

        CLR TR1

        MOV TL1,#00H ;50MS 定時常數

        MOV TH1,#4CH

        SETB TR1

        DJNZ R0,EXIT ;判斷毫秒=0

        MOV R0,#20 ;DELAY 1 SECOND

        MOV R6,#0FFH ;置秒標志

        CJNE R1,#59H,SECOND ;判斷秒=59

        MOV R1,#99H

        CJNE R2,#59H,MINUTE ;判斷分=59

        MOV R2,#99H

        CJNE R3,#23H,HOUR ;判斷時=23

        MOV R3,#99H

        HOUR:

        MOV A,R3

        ADD A,#1 ;時加1

        DA A

        MOV R3,A

        MINUTE:

        MOV A,R2

        ADD A,#1 ;分加1

        DA A

        MOV R2,A

        SECOND:

        MOV A,R1

        ADD A,#1 ;秒加1

        DA A

        MOV R1,A

        EXIT:

        POP PSW ;恢復現場

        POP ACC

        POP DPL

        POP DPH

        RETI ;中斷返回

        DISPLAY:

        MOV A,R3

        ANL A,#0FH

        MOV R5,A

        MOV R4,#6

        LCALL DISLED ;顯示小時低位

        MOV A,R3

        SWAP A

        ANL A,#0FH

        MOV R5,A

        MOV R4,#7

        LCALL DISLED ;顯示小時高位

        MOV A,R2

        ANL A,#0FH

        MOV R5,A

        MOV R4,#3

        LCALL DISLED ;顯示分鐘低位

        MOV A,R2

        SWAP A

        ANL A,#0FH

        MOV R5,A

        MOV R4,#4

        LCALL DISLED ;顯示分鐘高位

        MOV A,R1

        ANL A,#0FH

        MOV R5,A

        MOV R4,#0

        LCALL DISLED ;顯示秒低位

        MOV A,R1

        SWAP A

        ANL A,#0FH

        MOV R5,A

        MOV R4,#1

        LCALL DISLED ;顯示秒高位

        RET

        LEDSEG: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;'0,1,2,3,4,5,6,7'

        DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H ;'8,9,A,B,C,D,E,F'

        DB 6DH,02H,08H,00H,59H,0FH,76H;'U,-,_, ,I,O,P, '

        END



        評論


        相關推薦

        技術專區(qū)

        關閉
        主站蜘蛛池模板: 长春市| 五大连池市| 乐都县| 荣成市| 钦州市| 邮箱| 东阳市| 平塘县| 清原| 凉城县| 全椒县| 泸溪县| 纳雍县| 长治市| 永济市| 霸州市| 南投市| 乌恰县| 东乡族自治县| 镶黄旗| 杭锦旗| 石柱| 武山县| 定日县| 潍坊市| 娄烦县| 拉萨市| 灵宝市| 巴林左旗| 普兰县| 同江市| 玉溪市| 广宗县| 湘潭市| 沿河| 平泉县| 太谷县| 大田县| 湄潭县| 武威市| 清水县|