找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機匯編電子時鐘設(shè)計

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:239143 發(fā)表于 2017-10-13 14:16 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
源程序

ORG 0000H

             LJMP MAIN

             ORG 000BH

             LJMP TIME

            ;主程序部分

             ORG 0100H

       MAIN:MOVSP,#50H

             MOV 20H,#00H        ;秒鐘

             MOV 21H,#00H        ;分鐘 

             MOV 22H,#00H        ;小時 

             MOV 23H,#01H

             MOV 24H,#01H

             MOV 25H,#00H

             MOV 30H,#00H   

             MOV 31H,#00H   

             MOV 32H,#00H   

             MOV 33H,#00H   

             MOV 34H,#00H   

             MOV 35H,#00H

             MOV TMOD,#01H   ;16位計數(shù)器

             MOV TH0,#03CH    ;賦計數(shù)初值

             MOV TL0,#0B0H

             MOV IE,#87H ;允許外部中斷1和外部中斷0和T0溢出中斷

            SETB TR0             ;啟動計數(shù)器T0

             MOV R2,#14H

             MOV P2,#0FFH

       LOOP:LCALL  DISPLAY1

             JB P1.1,LOOP         

             LCALL SETTIME   ;調(diào)用設(shè)定時間程序

             LJMP LOOP

       DELAY:MOV R4,#030H          ;延時時間

             DL00:MOV R5,#0FFH

             DL11:MOV R6,#9H

             DL12:DJNZ R6,DL12

             DJNZ R5,DL11

             DJNZ R4,DL00

              RET

            ;設(shè)定時間程序

             SETTIME:

          L0:LCALL DISPLAY1          ;調(diào)用時間允許程序

        MM1: JB P1.2,L1            

             MOV C,P1.2

             JC MM1

             LCALL DELAY1          ;調(diào)用延時

             JC MM1

     MSTOP1: MOV C,P1.2

            JNC MSTOP1           ;判斷P1.2是否釋放釋放則繼續(xù)

             LCALL DELAY1         ;調(diào)用延時

             MOV C,P1.2

             JNC MSTOP1

             INC 22H               ;小時增加1

             MOV A,22H

            CJNE A,#18H,GO12     ;判斷小時是否到24時未到繼續(xù)循環(huán)

             MOV 22H,#00H           ;小時復(fù)位

             MOV 34H,#00H

             MOV 35H,#00H

             LJMP L0

          L1:JBP1.3,L2                 

             MOV C,P1.3

             JC L1

             LCALL DELAY1          ;延時

             JC L1

   MSTOP2: MOV C,P1.3

            JNC MSTOP2               ;判斷P1.3是否釋放釋放則繼續(xù)

             LCALL DELAY1            ;調(diào)用延時

             MOV C,P1.3

             JNC MSTOP2

             INC 21H                   ;分鐘增加一

             MOV A,21H

             CJNE A,#3CH,GO11         

             MOV 21H,#00H             ;分鐘復(fù)位

             MOV 32H,#00H

             MOV 33H,#00H

             LJMP L0

      GO11:MOV B,#0AH         ;將A中的內(nèi)容分成高低兩部分

            DIV AB

            MOV 32H,B

            MOV 33H,A

            LJMP L0

     GO12: MOV B,#0AH

            DIV AB

            MOV 34H,B

            MOV 35H,A

            LJMP L0

         L2:JB P1.4,L0               

            MOV C,P1.4

            JC L2

            LCALL DELAY1         ;調(diào)用延時

            MOV C,P1.4

            JC L2

   STOP1:   MOV C,P1.4             ;判斷按鍵P1.4是否釋放?

            JNC STOP1

            LCALL DELAY1          ;調(diào)用延時

            MOV C,P1.4

            JNC STOP1

            LJMP LOOP

DELAY1:  MOV R4,#14H              ;時間延時

   DL001:   MOV R5,#0FFH

   DL111:   DJNZ R5,DL111

            DJNZ R4,DL001

            RET  

   TIME:   PUSH ACC                   ;現(xiàn)場保護

           PUSH PSW

          MOV TH0,#03CH             ;賦初值

           MOV TL0,#0B0H

           DJNZ R2,RET0

           MOV R2,#14H

           MOV A,20H

           CLR C

           INC A                           ;秒鐘自加1

           CJNE A,#3CH,GO1                ;判斷秒鐘是否到60秒?

           MOV 20H,#0                     ;到60秒復(fù)位

          MOV 30H,#0

          MOV 31H,#0

           MOV A,21H

           INC    A                              ;分鐘自加1

          CJNE A,#3CH,GO2                ;判斷分鐘是否到60分?

          MOV 21H,#0H                     ;到60分復(fù)位

          MOV 32H,#0

          MOV 33H,#0

           MOV A,22H

           INC A                              ;時鐘自加1

           CJNE A,#18H,GO3                ;判斷時鐘是否到24時?

           MOV 22H,#00H                   ;到24時復(fù)位

          MOV 34H,#0

          MOV 35H,#0

           AJMP RET0

   GO1:    MOV 20H,A            

           MOV B,#0AH

           DIV AB

           MOV 31H,A

           MOV 30H,B

           AJMP RET0

     GO2: MOV 21H,A

           MOV B,#0AH

           DIV AB

           MOV 33H,A

           MOV 32H,B

           AJMP RET0

     GO3: MOV 22H,A

           MOV B,#0AH

           DIV AB

           MOV 35H,A

           MOV 34H,B

           AJMPRET0

   RET0:   POP PSW                  ;恢復(fù)現(xiàn)場

           POP ACC

           RETI

         ;運行部分

DISPLAY1: MOV R0,#30H

           MOV R3,#0FEH

           MOV A,R3

PLAY1:  MOV P2,A

          MOV A,@R0

          MOV DPTR,#DSEG1       ;表首地址送DPTR

          MOVC A,@A+DPTR      

          MOV P0,A               

          LCALL DL1

          MOV P2,#0FFH              ;送高電平到P2

          MOV A,R3

          RL A                 ;

          JNB ACC.6,LD1

          INC R0

         MOV R3,A

          LJMP PLAY1               ;調(diào)用查表程序

LD1:RET

         ;延時時間

   DL1:   MOV R7,#02H              ;延時時間

   DL:     MOV R6,#020H

   DL6:   DJNZ R6,$

           DJNZ R7,DL

           RET

    DSEG1:DB 3FH,06H,5BH,4FH,66H    ;共陰極數(shù)碼管編碼表

          DB6DH,7DH,07H,7FH,6FH

         END

調(diào)試運行



1.jpg (9.2 KB, 下載次數(shù): 18)

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

使用道具 舉報

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

本版積分規(guī)則

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

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

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