(玩電子) 電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

HOLTEK單片機-秒表

作者:佚名   來源:本站原創   點擊數:x  更新時間:2012年01月02日   【字體:

功能說明:

利用定時器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 
發表評論】【告訴好友】【收藏此文】【關閉窗口

文章評論

相關文章

街机奔驰宝马电玩城 2019今晚特马结果 手机麻将作弊 20选8前三直中了多少钱 股票开盘价怎么定的 重庆渝北区麻将机批发 黄大仙玄机精选资料 国嘉吉祥2019能上市吗? pk10牛牛开奖记录 有富策略 喜乐彩开奖结果查询 指数型基金和股票型 哈灵浙江麻将苹果版怎么下载 网络兼职赚钱 美的集团股票分析论文 特马技巧算法固定 股票推荐买入骗局