×
嵌入式 > 技术百科 > 详情

HOLTEK单片机-秒表

发布时间:2020-10-12 发布时间:
|
功能说明:

利用定时器1的定时模式制作一个秒表。

电路说明:

        HT48R50A-1 的端口A,端口C控制4个共阳极七段显示器以显示秒表的s及1/100s。

        HT48R50A-1 的复位键SW1作为秒表的开始计时,停止计时和回零按键。

程序:

; ***************************************************

; * Filename : 9712a.ASM                            *

; * Function : Stop watch                           *

; * Microprocessor : HT48R50A-1/28SKDIP-A           *

; * Crystal : 4MHz                                  *

; ***************************************************

#INCLUDE                HT48R50A-1.INC

TIMER_START             EQU     55H

TIMER_STOP              EQU     66H

;----------------------------------------------------

DATA    .SECTION        AT 60H  'DATA'

WARM_RESET              DB      ?       ;[60H]

DELAY_COUNTER           DB      ?       ;[61H]

DISPLAY_DATA            DB      ?       ;[62H]

DISPLAY_COUNTER         DB      ?       ;[63H]

DISPLAY_SHIFT           DB      ?       ;[64H]

SECOND                  DB      4 DUP(?);[65H]

;----------------------------------------------------

CODE    .SECTION        AT 00H  'CODE'

                ORG     00H

                JMP     START

                ORG     0CH

                JMP     TIMER1

 

                ORG     20H

START:

                CLR     PAC

                CLR     PCC

                MOV     A,WARM_RESET

                SUB     A,TIMER_START

                SZ      ACC

                JMP     TIMER_STOP_C

                MOV     A,TIMER_STOP

                MOV     WARM_RESET,A

                JMP     TIMER_START_GO

TIMER_STOP_C:

                MOV     A,WARM_RESET

                SUB     A,TIMER_STOP

                SZ      ACC

                JMP     TIMER_ONE

                CLR     WARM_RESET

                JMP     DISPLAY

TIMER_ONE:

                MOV     A,TIMER_START

                MOV     WARM_RESET,A

                CALL    CLEAN

                JMP     DISPLAY

TIMER_START_GO:

                MOV     A,09H

                MOV     INTC,A

                MOV     A,80H

                MOV     TMR1C,A

                MOV     A,0F0H

                MOV     TMR1L,A

                MOV     A,0D8H

                MOV     TMR1H,A

                SET     TMR1C.4

                CALL    CLEAN

TIMER:

                MOV     A,OFFSET SECOND

                MOV     MP1,A

                MOV     A,R1

                SUB     A,0AH

                SZ      ACC

                JMP     DISPLAY

                CLR     R1

 

                INC     MP1

                INC     R1

                MOV     A,R1

                SUB     A,0AH

                SZ      ACC

                JMP     DISPLAY

                CLR     R1

 

                INC     MP1

                INC     R1

                MOV     A,R1

                SUB     A,0AH

                SZ      ACC

                JMP     DISPLAY

                CLR     R1

 

                INC     MP1

                INC     R1

                MOV     A,R1

                SUB     A,06H

                SZ      ACC

                JMP     DISPLAY

                CALL    CLEAN

DISPLAY:

                MOV     A,OFFSET SECOND

                MOV     MP0,A

                MOV     A,0FEH

                MOV     DISPLAY_SHIFT,A

                MOV     A,04H

                MOV     DISPLAY_COUNTER,A

DISPLAY_LOOP:

                MOV     A,R0

                MOV     TBLP,A

                TABRDL  DISPLAY_DATA

                MOV     A,DISPLAY_DATA

                MOV     PA,A

                MOV     A,DISPLAY_SHIFT

                MOV     PC,A

                INC     MP0

                RL      DISPLAY_SHIFT

                CALL    DELAY

                SDZ     DISPLAY_COUNTER

                JMP     DISPLAY_LOOP

                MOV     A,WARM_RESET

                SUB     A,TIMER_STOP

                SZ      ACC

                JMP     DISPLAY

                JMP     TIMER

                RET

;----------------------------------------------------

TIMER1:

                INC     SECOND

                RETI

;----------------------------------------------------

CLEAN           PROC

                MOV     A,OFFSET SECOND

                MOV     MP1,A

                MOV     A,04H

                MOV     DISPLAY_COUNTER,A

CLEAN_LOOP:

                CLR     R1

                INC     MP1

                SDZ     DISPLAY_COUNTER

                JMP     CLEAN_LOOP

                RET

CLEAN           ENDP

;----------------------------------------------------

DELAY           PROC

                MOV     A,0FFH

                MOV     DELAY_COUNTER,A

WAIT:

                SDZ     DELAY_COUNTER

                JMP     WAIT

                RET

DELAY           ENDP

;----------------------------------------------------

                ORG     0F00H

                DC      081H,0CFH,092H,086H     ;0123

                DC      0CCH,0A4H,0A0H,08FH     ;4567

                DC      080H,084H               ;89

;----------------------------------------------------

                END 
 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
家庭网络:从带宽共享走向内容共享