找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2880|回复: 3
收起左侧

我的51单片机电子钟程序设计(汇编语言)

[复制链接]
ID:551824 发表于 2019-5-31 15:39 | 显示全部楼层 |阅读模式
这是我最近课上做的基于单片机开发板的汇编程序设计,内容是电子钟的控制。利用定时器每100ms中断一次,中断10次自以为基准,设计一个24小时制数字电子钟,并在开发机上数码管以时分秒的形式显示。

        ORG 0000H
        LJMP MAIN
        ORG 000BH
        LJMP INT0
        ORG 0100H
MAIN:   MOV SP,#70H
        MOV 22H,#00H
        MOV 23H,#00H
        MOV 24H,#00H
        MOV TMOD,#01H
        MOV TH0,#3CH
        MOV TL0,#0B0H
        MOV R5,#14H
        SETB EA
        SETB TR0
        SETB ET0
        CLR C
        MOV A,22H
        SUBB A,#59H
        JNC L11
        CLR C
        MOV A,23H
        SUBB A,#59H
        JNC L11
        CLR C
        MOV A,22H
        SUBB A,#23H
        CLR 20H.0
        CLR 20H.1
        CLR 20H.2
        JNC L11
        LJMP L12


L11:    MOV 24H,#00H
        MOV 23H,#00H
        MOV 22H,#12H


L12:    JB 20H.0,DO1
        JB 20H.1,DO2
        JB 20H.2,DO3
        LCALL MOVE
        LCALL DISP
        LCALL KEY
        SJMP L12
DO1:    CLR TR0
        MOV 30H,24H
        LCALL MOVE
        LCALL DISP
        LCALL KEY
        MOV A,30H
        CJNE A,#60H,TO1
        MOV 30H,#00H
TO1:    MOV 24H,30H
        SETB TR0
        LJMP L12

DO2:    CLR TR0
        MOV 30H,23H
        LCALL MOVE
        LCALL DISP
        LCALL KEY
        MOV A,30H
        CJNE A,#60H,TO2
        MOV 30H,#00H
TO2:    MOV 23H,30H
        SETB TR0
          LJMP L12

DO3:     CLR TR0
         MOV 30H,22H
        LCALL MOVE
        LCALL DISP
        LCALL KEY
        MOV A,30H
        CJNE A,#24H ,TO3
        MOV 30H,#00H
TO3:     MOV 22H,30H
        SETB TR0
        LJMP L12

KEY:    CLR A
        MOV DPTR,#8002H
        MOVX @DPTR,A
        MOV DPTR,#8001H
        MOVX A,@DPTR
        ANL A,#0FH
        CPL A
        JZ EXIT1

        CLR A              ;只能用段码来关
        MOV DPTR,#8004H
        MOVX @DPTR,A

        MOV R3,#00H
        MOV R4,#0FEH
        MOV R7,#06H

LOOP1:  MOV A,R4
        MOV DPTR,#8002H
        MOVX @DPTR,A
        MOV DPTR,#8001H
        MOVX A,@DPTR
        MOV R1,A
        CPL A
        ANL A,#0FH
        JNZ L0
        INC R3
        MOV A,R4
        RL A
        MOV R4,A
        DJNZ R7,LOOP1
        LJMP EXIT1
L0:     MOV A,R1             ;开始行扫描并计数在R6
        JB ACC.0,L1
        MOV R6,#00H
        LJMP L4
L1:     JB ACC.1,L2
        MOV R6,#01H
        LJMP L4
L2:     JB ACC.2,L3
        MOV R6,#02H
        LJMP L4
L3:     JB ACC.3,EXIT1
        MOV R6,#03H
L4:     MOV B,#04H
        MOV A,R3
        MUL AB
        ADD A,R6
        MOV DPTR,#DATA0
        MOVC A,@A+DPTR
        CJNE A,#13H,COM2
        CPL 20H.0
COM2:   CJNE A,#12H,COM3
        CPL 20H.1
COM3:   CJNE A,#11H,COM4
        CPL 20H.2
COM4:   CJNE A,#16H,COM5
        MOV A,30H
        ADD A,#99H
        DA A
        MOV 30H,A
        SJMP LOCK
COM5:   CJNE A,#15H,LOCK
        MOV A,30H
        ADD A,#01H
        DA A
        MOV 30H,A
LOCK:   CLR A
        MOV DPTR,#8002H
        MOVX @DPTR,A
        MOV DPTR,#8001H
        MOVX A,@DPTR
        MOV R1,A
        CPL A
        ANL A,#0FH
        JNZ LOCK
EXIT1:  RET




INT0:   PUSH A
        PUSH PSW
        CLR EA
        MOV TH0,#3CH
        MOV TL0,#0B0H
        DJNZ R5,EXIT
        MOV R5,#14H
        MOV A,24H
        ADD A,#01H
        DA A
        MOV 24H,A
        CJNE A,#60H,EXIT
        MOV 24H,#00H
        MOV A,23H
        ADD A,#01H
        DA A
        MOV 23H,A
        CJNE A,#60H,EXIT
        MOV 23H,#00H
        MOV A,22H
        ADD A,#01H
        DA A
        MOV 22H,A
        CJNE A,#24H,EXIT
        MOV 22H,#00H
EXIT:   POP PSW
        POP A
        SETB EA
        SETB TR0
        RETI

MOVE:   MOV A,24H
        ANL A,#0FH
        MOV 55H,A
        MOV A,24H
        SWAP A
        ANL A,#0FH
        MOV 54H,A
        MOV A,23H
        ANL A,#0FH
        MOV 53H,A
        MOV A,23H
        SWAP A
        ANL A,#0FH
        MOV 52H,A
        MOV A,22H
        ANL A,#0FH
        MOV 51H,A
        MOV A,22H
        SWAP A
        ANL A,#0FH
        MOV 50H,A
        RET


DISP:   MOV R0,#50H
        MOV R1,#06H
        MOV R2,#20H
LOOP2:  CLR A
        MOV DPTR,#8002H
        MOVX @DPTR,A
        MOV A,@R0
        MOV DPTR,#DATA1
        MOVC A,@A+DPTR
        MOV DPTR,#8004H
        MOVX @DPTR,A
        MOV DPTR,#8002H
        MOV A,R2
        MOVX @DPTR,A
        LCALL DELAY1
        INC R0
        RR A
        MOV R2,A
        DJNZ R1,LOOP2
        RET
DELAY1: MOV R3,#5
DELAY2: MOV R4,#100
        DJNZ R4,$
        DJNZ R3,DELAY2
        RET
DATA0:  DB 16H,15H,14H,0FFH,13H,12H,11H,10H,0DH,0CH,0BH,0AH,0EH,03H,06H,09H,0FH,02H,05H,08H,00H,01H,04H,07H
DATA1:  DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH
        DB 6FH,77H,7CH,39H,5EH,79H,71H,00H,0F6H,0F3H
        END

回复

使用道具 举报

ID:1 发表于 2019-6-1 03:05 | 显示全部楼层
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
回复

使用道具 举报

ID:678934 发表于 2020-1-1 15:52 | 显示全部楼层
能发一下protues仿真图吗
回复

使用道具 举报

ID:678934 发表于 2020-1-1 16:11 | 显示全部楼层
有protues仿真图吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表