⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 时钟.asm

📁 电子钟设计
💻 ASM
📖 第 1 页 / 共 2 页
字号:
              MOV   ACC.7,C
              MOV   P1,A
              CLR   P3.0
              ACALL  DL01MS
              SETB   P3.0
              MOV   A,@R0
              INC   R0
              MOVC   A,@A+DPTR
              MOV   C,DP
              MOV   ACC.7,C
              MOV   P1,A
              CLR   P3.1
              ACALL  DL01MS
              SETB   P3.1
               
              JB   FLAG01,SHAI03
              MOV  A,@R0
              INC  R0
              ADD  A,#0AH
              MOVC  A,@A+DPTR
              MOV   C,DP
              MOV   ACC.7,C
              MOV   P1,A
              CLR   P3.4
              ACALL  DL01MS
              SETB   P3.4
              MOV   A,@R0
              INC   R0
              MOVC  A,@A+DPTR
              MOV   C,DP
              MOV   ACC.7,C
              MOV   P1,A
              CLR   P3.5
              ACALL  DL01MS
              SETB   P3.5
              SETB   FLAG01
              JMP   SHAI04
       SHAI03:MOV  A,@R0
              INC   R0
              ADD   A,#0AH
              MOVC  A,@A+DPTR
              MOV   C,DP
              MOV   ACC.7,C
              MOV   P1,A
              ACALL  DL01MS
              SETB   P3.4
              MOV  A,@R0
              INC  R0
              MOVC  A,@A+DPTR
              MOV   C,DP
              MOV   ACC.7,C
              MOV   P1,A
              ACALL  DL01MS
              SETB   P3.5
              CLR   FLAG01
      SHAI04: RET  


;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;           T1中断子程序
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 INTERT1 :  NOP
            MOV  TH1,#3CH
            MOV  TL1,#0B0H
            PUSH   ACC
            PUSH   PSW
            CLR   ET0
            CLR   ET1
            MOV  A,NUMT1
            INC   A
            MOV   NUMT1,A
            CJNE   A,#5,ENDINTERT1
            MOV   A,KEYNUMT1
            INC  A
            MOV   KEYNUMT1,A
            MOV   NUMT1,#00H
ENDINTERT1:  SETB  ET1
             SETB  ET0
             POP  PSW
             POP  ACC
             RETI

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;      ***整点报时***
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ZDBS:    MOV  A,MBUFF
         JNZ   ZDBSEND
         MOV   A,SBUFF
         CJNE   A,#3CH,ZDBSEND
         CLR  P3.3
         ACALL   DL0FIVE         
         SETB   P3.3
ZDBSEND: RET

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;  ***晚上显示子程序************
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 NIGHTDISPLAY:NOP
              MOV   A,HBUFF2
              MOVC  A,@A+DPTR
              MOV   C,DP
              MOV   ACC.7,C
              MOV   P1,A
              CLR  P3.0
              ACALL  DL1MS
              SETB  P3.0
              ACALL  DL1MS
              ACALL  DL1MS

              MOV  A,HBUFF1
              MOVC  A,@A+DPTR
              MOV   C,DP
              MOV   ACC.7,C
              MOV   P1,A
              CLR   P3.1
              ACALL  DL1MS
              SETB   P3.1
              ACALL  DL1MS
              ACALL  DL1MS

              MOV  A,MBUFF2
              ADD  A,#0AH
              MOVC  A,@A+DPTR
              MOV   C,DP
              MOV   ACC.7,C
              MOV   P1,A
              CLR   P3.4
              ACALL  DL1MS
              SETB   P3.4
              ACALL  DL1MS
              ACALL  DL1MS

              MOV   A,MBUFF1
              MOVC  A,@A+DPTR
              MOV   C,DP
              MOV   ACC.7,C
              MOV   P1,A
              CLR  P3.5
              ACALL  DL1MS
              SETB  P3.5
              ACALL  DL1MS
              ACALL  DL1MS
              RET

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;     ******显示子程序******
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      DISPLAY:
              MOV   A,HBUFF2
              MOVC  A,@A+DPTR
              MOV   C,DP
              MOV   ACC.7,C
              MOV   P1,A
              CLR   P3.0
              ACALL  DL1MS
              SETB   P3.0

              MOV    A,HBUFF1
              MOVC   A,@A+DPTR
              MOV    C,DP
              MOV    ACC.7,C
              MOV    P1,A
              CLR    P3.1
              ACALL  DL1MS
              SETB   P3.1

              MOV   A,MBUFF2
              ADD   A,#0AH
              MOVC   A,@A+DPTR
              MOV   C,DP
              MOV   ACC.7,C
              MOV   P1,A
              CLR   P3.4
              ACALL  DL1MS
              SETB   P3.4

              MOV   A,MBUFF1
              MOVC  A,@A+DPTR
              MOV   C,DP
              MOV   ACC.7,C
              MOV   P1,A
              CLR   P3.5
              ACALL  DL1MS
              SETB  P3.5
              RET
 TAB:     DB  040H,079H,024H,030H,19H
          DB  12H,02H,078H,00H,10H
          DB  040h,04fh,024h,06h,0bh,12h,1h,047h,00h,03h

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;     ******延时子程序*******
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  DL1MS:  MOV  R6,#20
   DL11:  MOV  R7,#25
   DL12:  DJNZ  R7,DL12
          DJNZ  R6,DL11
          RET
          
   D1MS:  MOV  R6,#10
   D11:  MOV  R7,#10
   D12:  DJNZ  R7,D12
          DJNZ  R6,D11
          RET     
          
   DL01MS:  MOV  R6,#30
   DL01:  MOV  R7,#35
   DL02:  DJNZ  R7,DL02
          DJNZ  R6,DL01
          RET

DL100MS:  MOV   R6,#200
DL100MS1: MOV   R7,#250
DL100MS2: DJNZ   R7,DL100MS2
          DJNZ   R6,DL100MS1
          RET

DL11S: MOV  R5,#10
DL1S0: MOV   R6,#200
DL1S1: MOV   R7,#250
DL1S2: DJNZ   R7,DL1S2
       DJNZ   R6,DL1S1
       DJNZ   R5,DL1S0
       RET

DL0FIVE: MOV  R5,#5
    DL0: MOV   R6,#200
    DL1: MOV   R7,#250
    DL2: DJNZ   R7,DL2
         DJNZ   R6,DL1
         DJNZ   R5,DL0
         RET

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;   *******T0中断程序********
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  INTERT0:PUSH   ACC
          PUSH   PSW
          CLR   ET0
          MOV   A,SBUFF
          CJNE  A,#028H,SET1
          MOV   R4,#0DCH
  SET1:   DJNZ   NUM,END0
          MOV    NUM,#8
          CPL   DP
          CLR  P3.3
          NOP
          SETB  P3.3
          DJNZ  SBUFF,END0
          SETB  P3.7
          MOV   SBUFF,#03CH
          MOV   R4,#0DBH
          ACALL  ADDBUFF0
   END0:  MOV  A,NUM
          CJNE  A,#04H,END1
          CPL   DP
          CLR   P3.7
   END1:  POP  PSW
          POP  ACC
          SETB   ET0
          RETI
          
          
       RDTMP:  PUSH   A
               PUSH    PSW
               LCALL   RESET      ;调用复位子程序
               MOV   A,#0CCH      ;写跳过ROM命令
               LCALL  WRITE      ;调用写一个字节子程序
               MOV   A,#44H       ;启动温度转化
               LCALL   WRITE
               LCALL   RESET
               MOV   A,#0CCH
               LCALL   WRITE
               MOV   A,#0BEH      ;发读存储器命令
               LCALL   WRITE
               LCALL   READ
               MOV   A,51H
               MOV   4EH,A
               LCALL   READ
               MOV   A,51H
               MOV   4FH,A
               ANL   4FH,#0FH        ;将温度值转化成BCD码
               ANL  4EH,#0F0H
               CLR   A
               ADD   A,4EH
               ADD   A,4FH
               SWAP  A
          N0:  MOV  55H,#00H
          AA:  MOV  B,#10
               DIV  AB
               ANL  A,#0FH
               ANL  B,#0FH
               MOV  52H,A
               MOV  53H,B
               MOV  R0,#200          ;显示温度
       HUI001: MOV   A,52H           ;温度十位
               MOVC  A,@A+DPTR
               MOV   C,DP
               MOV   ACC.7,C
               MOV   P1,A
               CLR  P3.0
               ACALL  DL1MS
               SETB   P3.0
               MOV   A,53H            ;温度个位
               MOVC  A,@A+DPTR
               MOV   C,DP
               MOV   ACC.7,C
               MOV   P1,A
               CLR   P3.1
               ACALL  DL1MS
               SETB   P3.1
               MOV   A, #70H         ;温度符号
               MOV   C,DP
               MOV   ACC.7,C
               MOV   P1,A
               CLR   P3.4
               ACALL  DL1MS
               SETB  P3.4
               DJNZ  R0 ,HUI001
               POP  PSW
               POP  A
               RET
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ; DS18B20的复位程序
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       RESET:  NOP
          L0:  CLR  P3.5
               MOV  R2,#100
          L1:  NOP
               DJNZ  R2,L1
               SETB  P3.5
               MOV  R2,#15
          L4:  DJNZ  R2,L4
               CLR  C
               ORL  C,P3.5
               JC  L3
               MOV  R6,#40
          L5:  ORL  C,P3.5
               JC  L3
               DJNZ  R6,L5
               SJMP  L0
          L3:  MOV  R2,#125
          L2:  DJNZ  R2,L2
               RET
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          ;写入DS18B20
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        WRITE: MOV  R3,#8
         WR1:  SETB  P3.5
               MOV  R4,#3
               RRC  A
               CLR  P3.5
          WR2: DJNZ  R4,WR2
               MOV  P3.5,C
               MOV  R4,#10
          WR3: DJNZ  R4,WR3
               DJNZ  R3,WR1
               SETB  P3.5
               RET
 ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       ;  读一个字节子程序
 ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         READ: MOV  R6,#8
         RE1:  CLR  P3.5
               MOV  R4,#3
               NOP
               SETB  P3.5
         RE2:  DJNZ  R4,RE2
               MOV  C,P3.5
               RRC  A
               MOV  R5,#15
         RE3:  DJNZ  R5,$
               DJNZ  R6,RE1
               MOV  51H,A
               SETB  P3.5
               RET  
               END 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -