找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1452|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

電子時鐘程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:269769 發(fā)表于 2018-1-1 15:36 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
        ORG 0000H
        AJMP MAIN
        ORG 000BH
        AJMP TIME
        ORG 0300H      
MAIN:
         mov 20H,#00H
         MOV 21H,#00H
         MOV 22H,#00H
         MOV 23H,#00H
         MOV IP,#02H            ;IP,IE初始化
         MOV IE,#82H
         MOV TMOD,#01H            ;設(shè)定定時器工作方式1
         MOV TL0,#0B0H
         MOV TH0,#3CH
         SETB TR0          ;啟動定時T0
         MOV SP,#40H            ;重設(shè)堆棧指針
NEXT:        LCALL DISP                ;調(diào)用顯示子程序
         LCALL KEY                  ;調(diào)用按鍵檢測子程序
         JZ NEXT                     
         LCALL ANKEY            ;調(diào)用按鍵處理子程序
         SJMP NEXT                ;重新循環(huán)
         NOP
         NOP
         NOP
;定時中斷處理程序:************************************************
TIME:       PUSH ACC                  ;保護(hù)現(xiàn)場
         PUSH PSW
         MOV TL0,#0B0H               ;賦定時初值
         MOV TH0,#3CH
         INC 20H                      ;
         MOV A,20H
         CJNE A,#20,RETI1
         MOV 20H,#00H                 ;一秒鐘時間到
         MOV A,21H
         ADD A,#01H
         DA A
         MOV 21H,A
         CJNE A,#60H,RETI1
         MOV 21H,#00H                 ;一分鐘時間到
         MOV A,22H
         ADD A,#01H
         DA A
         MOV 22H,A
         CJNE A,#60H,RETI1
         MOV 22H,#00H                 ;一小時時間到
         MOV A,23H
         ADD A,#01H
         DA A
         MOV 23H,A
         CJNE A,#24H,RETI1
         MOV 23H,#00H                 ;到時間達(dá)到24小時,清零.
RETI1:      POP PSW                    ;恢復(fù)現(xiàn)場
         POP ACC
         RETI                   ;中斷返回
         NOP
         NOP
;****************************************************
;顯示子程序
;****************************************************
DISP:         ANL 2FH,#10H          ;處理小數(shù)點
         MOV A,21H               ;處理秒21H-->2DH,2EH
         ANL A,#0FH
         ORL A,2FH
         MOV 2FH,A
         MOV A,21H
         ANL A,#0F0H
         SWAP A
         MOV 2EH,A
         ANL 2DH,#10H
         MOV A,22H               ;處理分鐘22H-->2CH,2DH
         ANL A,#0FH
         ORL A,2DH
         MOV 2DH,A
         MOV A,22H
         ANL A,#0F0H
         SWAP A
         MOV 2CH,A
         ANL 2BH,#10H
         MOV A,23H               ;處理小時23H-->2AH,2BH
         ANL A,#0FH
         ORL A,2BH
         MOV 2BH,A
         MOV A,23H
         ANL A,#0F0H
         SWAP A
         MOV 2AH,A
         MOV R0,#2FH           ;顯示偏移量
         MOV R3,#06H
         MOV DPTR,#TABLE
         MOV A,#0BFH
LOOP1:     
   MOV B,A
         MOV P2,A
         MOV A,@R0
         MOVC A,@A+DPTR
         MOV P0,A         ;送顯示
         MOV R2,#80H          ;延時
         DJNZ R2,$
         DEC R0
         MOV A,B
         RR A
         DJNZ R3,LOOP1                 ;循環(huán)顯示
         RET
TABLE:      DB 28h,7eh,0a2h,62h,74h,61h,21h                  ;不帶小數(shù)點
         DB 7ah,20h,60h,00,00,00,00,00,00
         DB 8H,5eH,82H,42H,54H,41H,1H,5aH  ;帶小數(shù)點
         DB 00H,40H,00,00,00,00,00,00
         NOP
         NOP
;*****************************************************
;按鍵判斷程序
;*****************************************************
KEY: MOV P3,#0FFH
         MOV A,P3
         CPL A
         ANL A,#3CH
         JZ RETX                       ;無鍵按下則返回
         LCALL DISP
         LCALL DISP
         MOV A,P3
         CPL A
         ANL A,#3CH
         JZ RETX                       ;鍵盤去抖動。
         MOV R6,A                  ;將鍵值存入R6。
LOOP2:     LCALL DISP
         MOV A,P3
         CPL A
         ANL A,#3CH
         JNZ LOOP2                 ;等待鍵釋放
         MOV A,R6
RETX:        RET
         NOP
         NOP
;*****************************************************
;按鍵處理子程序
;*****************************************************
ANKEY:     CLR EA                        ;關(guān)中斷
LX:    MOV A,R6
         JB ACC.2,L1               ;是功能鍵轉(zhuǎn)L1
         JB ACC.3,L2               ;是確認(rèn)鍵轉(zhuǎn)L2
         JB ACC.4,L3               ;是減1鍵轉(zhuǎn)L3
         JNB ACC.5,L12                   ;不是增1鍵,轉(zhuǎn)L12
         JB 2BH.4,L6               ;判斷使哪一位(時、分、秒)的值加1
         JB 2DH.4,L8
         JB 2FH.4,L9
L12: LCALL DISP
         LCALL DISP
         LCALL KEY                  ;判斷有無鍵按下。
         JZ L12
         LJMP LX
L2:    MOV 25H,#00H                 ;確認(rèn)鍵處理程序
         CLR 2BH.4
         CLR 2DH.4
         CLR 2FH.4
         SETB EA
         RET
L3:    JB 2BH.4,L61            ;增一鍵處理程序
         JB 2DH.4,L81
         JB 2FH.4,L91
         AJMP L12
L1:    MOV A,25H                   ;功能鍵處理程序
         JZ LB1
         JB ACC.0,LB2
         JB ACC.1,LB3
         JNB ACC.2,L12
LB1: MOV 25H,#01H                 ;25H單元是標(biāo)志位,(25H=01H調(diào)節(jié)時單元的值
         SETB 2BH.4
         CLR 2DH.4
         CLR 2FH.4
         AJMP L12
LB3: MOV 25H,#04H                 ;25H單元是標(biāo)志位,(25H=01H調(diào)節(jié)秒單元的值
         SETB 2FH.4
         CLR 2DH.4
         CLR 2BH.4
         AJMP L12
LB2: MOV 25H,#02H             ;25H單元是標(biāo)志位,(25H=01H調(diào)節(jié)分單元的值
         SETB 2DH.4
         CLR 2BH.4
         CLR 2FH.4
         AJMP L12
L61: AJMP L611
L81: AJMP L811
L91: AJMP L911
L6:    MOV A,23H               ;時加一
         ADD A,#01H
         DA A
         MOV 23H,A
         CJNE A,#24H,L15
L15: JC L112
         MOV 23H,#00H
L112:        AJMP L12
L8:    MOV A,22H               ;分加一
         ADD A,#01H
         DA A
         MOV 22H,A
         CJNE A,#60H,L16
L16: JC L112
         MOV 22H,#00H
         AJMP L12
L9:    MOV A,21H               ;秒加一
         ADD A,#01H
         DA A
         MOV 21H,A
         CJNE A,#60H,L17
L17: JC L112
         MOV 21H,#00H
         AJMP L12
L611:        MOV A,23H               ;時減一
         ADD A,#99H
         DA A
         MOV 23H,A
         CJNE A,#99H,L112
         MOV 23H,#23H
         AJMP L12
L811:        MOV A,22H               ;分減一
         ADD A,#99H
         DA A
         MOV 22H,A
         CJNE A,#99H,L112
         MOV 22H,#59H
         AJMP L12
L911:        MOV A,21H               ;秒減一
         ADD A,#99H
         DA A
         MOV 21H,A
         CJNE A,#99H,L112
         MOV 21H,#59H
         AJMP L12
         NOP
         NOP
         END

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

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