• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

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

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

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

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

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

    MCS51單片機匯編

    Z8279 EQU 08701H ;8279 狀態/命令口地址

    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



    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 台南县| 芜湖市| 汉寿县| 延边| 兰州市| 安龙县| 昌吉市| 桐城市| 根河市| 乐亭县| 贺州市| 靖西县| 子长县| 沙洋县| 鹤山市| 泉州市| 青冈县| 潼关县| 阿坝县| 凉城县| 尼玛县| 沅江市| 信宜市| 博客| 额敏县| 郁南县| 梧州市| 南陵县| 抚顺市| 嫩江县| 双柏县| 会同县| 阳原县| 宁陕县| 金华市| 喀什市| 余庆县| 两当县| 邢台县| 宁武县| 正定县|