打印

求助,帮忙看下时钟为什么不运行

[复制链接]
1585|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lsy....|  楼主 | 2008-2-20 09:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
;只显示时分
RG_KEY    EQU    30H;存储键盘值
RG_KN    EQU    33H;存储调节年月日星期的次数按钮。
RG_BT1  EQU     31H;需要显示的数据暂存RAM
RG_BT2  EQU     32H
RG_TSC    EQU    40H;时钟和闹钟暂存RAM,顺序同DS12C887中的RAM
RG_ASC    EQU    41H
RG_TMN    EQU    42H;TMN:TIME‘S MINU
RG_AMN    EQU    43H;AMN:ALARM’S MINUT
RG_THR    EQU    44H
RG_AHR    EQU    45H
RG_WK    EQU    46H
RG_DAY    EQU    47H
RG_MTH    EQU    48H
RG_YR    EQU    49H
RG_MS    EQU    51H
RG_IDL    EQU    50H

ORG 0000H
LJMP MAIN

ORG 0030H
;Main procedure
MAIN:   MOV SP,#60H
        MOV     DPTR,#000BH;闹钟中断允许
    MOV    A,#22H
    MOVX     @DPTR,A
        MOV     DPTR,#000AH;判断是否需要初始化
        MOVX     A,@DPTR
        ANL     A,#01110000B
    CJNE     A,#20H,INI_MAI
        LJMP    LP1_MAI
INI_MAI:LCALL   SB_INI
LP1_MAI:LCALL SB_RD
        LCALL SB_DSP
        AJMP LP1_MAI

SB_INI: PUSH    ACC
        PUSH PSW
        PUSH DPH
        PUSH DPL
    MOV DPTR,#000BH        ; register B of DS'
    MOV     A,#0A2H
        MOVX     @DPTR,A        ; un-renew,BCD,24hour
;----初始化时钟,11:59

        MOV     DPTR,#0000H    ; addr. of second
    MOV    A,#00H
    MOVX     @DPTR,A
    INC     DPTR        ; addr. of S'alarm
    MOV    A,#00H
    MOVX     @DPTR,A
    INC     DPTR        ; addr. of minute
    MOV    A,#59H 
    MOVX     @DPTR,A
    INC     DPTR         ; addr. of M'alarm
    MOV    A,#00H
    MOVX     @DPTR,A
    INC     DPTR            ; addr. of hour
    MOV    A,#11H
     MOVX     @DPTR,A
    INC     DPTR            ; addr. of H'alarm
    MOV    A,#00H
    MOVX     @DPTR,A
;---初始化星期3(日), 年,月,日2008-2-20
    INC     DPTR            
    MOV     A,#03H
    MOVX     @DPTR,A        
    INC     DPTR          
    MOV     A,#20H
    MOVX     @DPTR,A    
    INC     DPTR          
    MOV     A,#02H
    MOVX     @DPTR,A    
    INC     DPTR    
    MOV     A,#08H
    MOVX     @DPTR,A        
    MOV    DPTR,#0032H
    MOV    A,#20H
    MOVX    @DPTR,A    
        MOV     DPTR,#000AH    ; register A of DS'
        MOV     A,#20H
        MOVX     @DPTR,A        ; start timebase
        INC     DPTR        ; register B of DS'
        MOV     A,#22H
        MOVX     @DPTR,A        ; renew,permit IRQ,.
        INC     DPTR        ; register C of DS'
        MOVX     A,@DPTR        ; read to clear IRQF
            INC DPTR
            MOVX A,@DPTR
            POP DPL
            POP DPH
            POP PSW  
        POP    ACC
        RET
SB_RD:        PUSH    ACC
            PUSH DPH
            PUSH DPL
;---读时分的时钟,
            MOV 23H,#08H
RD1:        MOV    DPTR,#0002H;时钟的分
        MOVX    A,@DPTR
        MOV    RG_TMN,A
        MOV    DPTR,#0004H;时钟的时
        MOVX    A,@DPTR
        MOV    RG_THR,A
            DJNZ 23H,RD1
            POP DPL
            POP DPH
        POP    ACC
            RET
SB_DSP:        PUSH    ACC
            PUSH DPH
            PUSH DPL
            PUSH PSW
        MOV    R1,#RG_THR
        MOV     R6,#10H    ;R6寄存器选择位
        MOV    R7,#2
LP1_DSP:    MOV    A,@R1
        ANL    A,#0F0H
        SWAP    A
        ORL    A,R6
        MOV     P1,A    ;送到P1口    
        LCALL    SB_DLY;调延时子程序
        MOV    A,R6
        RL    A
        MOV    R6,A

        MOV    A,@R1
        ANL    A,#0FH
        ORL    A,R6
        MOV     P1,A    ;送到P1口     
        LCALL    SB_DLY;调延时子程序
        MOV    A,R6
        RL    A
        MOV    R6,A
            DEC R1
        DEC    R1
        DJNZ    R7,LP1_DSP

RT_DSP:        POP PSW
            POP DPL
            POP DPH
            POP    ACC
        RET

;=======延时子程序
SB_DLY:    
        MOV 21H,#04
D1:     MOV 22H,#200
        DJNZ 22H,$
        DJNZ 21H,D1
        
        RET

        END

相关帖子

沙发
stycx| | 2008-2-20 12:55 | 只看该作者

LP1_DSP里头 p1口的数据高低4位分开是不行的,得同时输出

还有,p2口不用浪费呀,4511可用p2口代替.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

2

帖子

0

粉丝