找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3658|回復(fù): 0
收起左側(cè)

基于51單片機(jī)匯編語(yǔ)言3按鍵數(shù)碼管時(shí)鐘程序與仿真

[復(fù)制鏈接]
ID:34643 發(fā)表于 2019-5-4 06:30 | 顯示全部樓層 |閱讀模式
基于51單片機(jī)匯編語(yǔ)言3按鍵數(shù)碼管時(shí)鐘程序與仿真,能顯示晨、分、秒,能實(shí)現(xiàn)設(shè)置功能。
全部資料51hei下載地址: 三按鍵8位數(shù)碼管時(shí)鐘.zip (44.08 KB, 下載次數(shù): 65)

基于51單片機(jī)匯編語(yǔ)言3按鍵數(shù)碼管時(shí)鐘程序與仿真

基于51單片機(jī)匯編語(yǔ)言3按鍵數(shù)碼管時(shí)鐘程序與仿真



S_SET        BIT                P1.0                                                ;數(shù)字鐘秒控制位
M_SET        BIT                P1.1                                                ;分鐘控制位
H_SET        BIT                P1.2                                                ;小時(shí)控制位
SECOND        EQU                30H
MINUTE        EQU                31H
HOUR        EQU                32H
TCNT        EQU                34H
                ORG                00H
                SJMP        START
                ORG                0BH
                LJMP        INT_T0
START:        MOV                DPTR,#TABLE
                MOV                HOUR,#0                                                ;初始化
                MOV                MINUTE,#0
                MOV                SECOND,#0
                MOV                TCNT,#0
                MOV                TMOD,#01H
                MOV                TH0,#(65536-50000)/256                ;定時(shí)50毫秒
                MOV                TL0,#(65536-50000)MOD 256
                MOV                IE,#82H
                SETB        TR0
;****************************************************
;判斷是否有控制鍵按下,是哪一個(gè)鍵按下
A1:                LCALL        DISPLAY               
                JNB                S_SET,S1
                JNB                M_SET,S2
                JNB                H_SET,S3                                
                LJMP        A1
        S1:        LCALL        DELAY                ;去抖動(dòng)
                JB                S_SET,A1
               
                INC                SECOND                ;秒值加1
                MOV                A,SECOND
                CJNE        A,#60,J0        ;判斷是否加到60秒
                MOV                SECOND,#0
                LJMP        K1
        S2:        LCALL        DELAY
                JB                M_SET,A1
               
        K1:        INC                MINUTE                ;分鐘值加1
                MOV                A,MINUTE
                CJNE        A,#60,J1        ;判斷是否加到60分
                MOV                MINUTE,#0
                LJMP        K2
        S3:        LCALL        DELAY
                JB                H_SET,A1
               
        K2:        INC                HOUR                ;小時(shí)值加1
                MOV                A,HOUR
                CJNE        A,#24,J2        ;判斷是否加到24小時(shí)
                MOV                HOUR,#0
                MOV                MINUTE,#0
                MOV                SECOND,#0
                LJMP        A1
;****************************************************
;等待按鍵抬起
J0:                JB                S_SET,A1
                LCALL        DISPLAY
                SJMP        J0
J1:                JB                M_SET,A1
                LCALL        DISPLAY
                SJMP        J1
J2:                JB                H_SET,A1
                LCALL        DISPLAY
                SJMP        J2
;***********************************************
;定時(shí)器中斷服務(wù)程序,對(duì)秒,分鐘和小時(shí)的計(jì)數(shù)
INT_T0:        MOV                TH0,#(65536-50000)/256
                MOV                TL0,#(65536-50000)MOD 256               
                INC                TCNT
                MOV                A,TCNT
                CJNE        A,#20,RETUNE        ;計(jì)時(shí)1秒
                INC                SECOND
                MOV                TCNT,#0
                MOV                A,SECOND
                CJNE        A,#60,RETUNE
                INC                MINUTE
                MOV                SECOND,#0
                MOV                A,MINUTE
                CJNE        A,#60,RETUNE
                INC                HOUR
                MOV                MINUTE,#0
                MOV                A,HOUR
                CJNE        A,#24,RETUNE
                MOV                HOUR,#0
                MOV                MINUTE,#0
                MOV                SECOND,#0
                MOV                TCNT,#0
RETUNE:        RETI
;******************************************
;顯示控制子程序
DISPLAY:MOV                A,SECOND        ;顯示秒
                MOV                B,#10
                DIV                AB
                CLR                P3.6
                MOVC        A,@A+DPTR
                MOV                P0,A
                LCALL        DELAY
                SETB        P3.6
                MOV                A,B
                CLR                P3.7
                MOVC        A,@A+DPTR
                MOV                P0,A
                LCALL        DELAY
                SETB        P3.7

                CLR                P3.5
                MOV                P0,#40H                ;顯示分隔符
                LCALL        DELAY
                SETB        P3.5

                MOV                A,MINUTE        ;顯示分鐘
                MOV                B,#10
                DIV                AB
                CLR                P3.3
                MOVC        A,@A+DPTR
                MOV                P0,A
                LCALL        DELAY
                SETB        P3.3
                MOV                A,B
                CLR                P3.4
                MOVC        A,@A+DPTR
                MOV                P0,A
                LCALL        DELAY
                SETB        P3.4

                CLR                P3.2
                MOV                P0,#40H                ;顯示分隔符
                LCALL        DELAY
                SETB        P3.2

                   MOV                A,HOUR                ;顯示小時(shí)
                MOV                B,#10
                DIV                AB
                CLR                P3.0
                MOVC        A,@A+DPTR
                MOV                P0,A
                LCALL        DELAY
                SETB        P3.0
                MOV                A,B
                CLR                P3.1
                MOVC        A,@A+DPTR
                MOV                P0,A
                LCALL        DELAY
                SETB        P3.1
                RET

TABLE:         DB                 3FH,06H,5BH,4FH,66H
                DB                6DH,7DH,07H,7FH,6FH
DELAY:        MOV                R6,#10
D1:                MOV                R7,#250
                DJNZ        R7,$
                DJNZ        R6,D1
                RET

                END


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表