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

📄 温度万年历.asm

📁 制作一个温度万年历
💻 ASM
📖 第 1 页 / 共 2 页
字号:

    ;*********************************
;*         闪动程序         *
  ;*********************************

INTT1:   PUSH     ACC
         PUSH     PSW

GFLASH:  CPL      0FH
         JB       0FH,GFLASH1
         MOV      7CH,4CH
         MOV      7BH,4BH
         MOV      7AH,4AH
         MOV      79H,49H
         MOV      78H,48H
         MOV      77H,47H
         MOV      76H,46H
         MOV      75H,45H
         MOV      74H,44H
         MOV      73H,43H
         MOV      72H,42H
         MOV      71H,41H
         MOV      70H,40H

GFLASHOUT:     POP   PSW
               POP   ACC
               RETI

GFLASH1:       JB   0AH,GFLASH2
               MOV   7CH,#0AH
               MOV   7BH,#0AH
               AJMP  GFLASHOUT

GFLASH2:       JB   0BH,GFLASH3
               MOV   7AH,#0AH
               MOV   79H,#0AH
               AJMP  GFLASHOUT


GFLASH3:       JB   0CH,GFLASH4
               MOV   77H,#0AH
               MOV   76H,#0AH
               AJMP  GFLASHOUT

GFLASH4:       JB   0DH,GFLASH5
               MOV   78H,#0AH

               AJMP  GFLASHOUT

GFLASH5:       JB   0EH,GFLASH6
               MOV   75H,#0AH
               MOV   74H,#0AH
               AJMP  GFLASHOUT


GFLASH6:
               MOV   73H,#0AH
               MOV   72H,#0AH
               AJMP  GFLASHOUT




    ;*********************************
;*           加1程序         *
  ;*********************************



ADD1:         MOV     A,R7
              ADD     A,#01H
              DA      A
              RET



    ;*********************************
;*             分离程序          *
  ;*********************************
  DIVIDE:      MOV     A,R0
               ANL     A,#0FH
               MOV     R1,A
               MOV     A,R0
               SWAP    A
               ANL     A,#0FH
               MOV     R2,A
               RET







   ;*********************************
;*         写1302程序            *
  ;*********************************
    WRITE:  CLR SCLK
            NOP
            SETB RST
            NOP
            MOV A,DS1302_ADDR
            MOV R4,#8
    WRITE1: RRC A                       ;送地址给1302
            NOP
            NOP
            CLR SCLK
            NOP
            NOP
            NOP
            MOV IO,C
            NOP
            NOP
            NOP
            SETB SCLK
            NOP
            NOP
            DJNZ R4,WRITE1
            CLR SCLK
            NOP
            MOV A,DS1302_DATA
            MOV R4,#8
    WRITE2: RRC A
            NOP                        ;送数据给1302
            CLR SCLK
            NOP
            NOP
            MOV IO,C
            NOP
            NOP
            NOP
            SETB SCLK
            NOP
            NOP
            DJNZ R4,WRITE2
            CLR RST
            RET
;*******************************
;*         读1302程序          *
;*******************************
    READ:  CLR SCLK
           NOP
           NOP
           SETB RST
           NOP
           MOV A,DS1302_ADDR
           MOV R4,#8
   READ1:  RRC A
           NOP
           MOV IO,C
           NOP
           NOP
           NOP
           SETB SCLK
           NOP
           NOP
           NOP
          CLR SCLK
          NOP
          NOP
          DJNZ R4,READ1
          MOV R4,#8
  READ2:  CLR SCLK
          NOP
          NOP

          SETB IO

          MOV C,IO
          NOP
          NOP
          NOP
          NOP
          NOP
          RRC A
          NOP
          NOP
          NOP
          NOP
          SETB SCLK
          NOP
          DJNZ R4,READ2
          MOV DS1302_DATA,A
          CLR RST
          RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;                       REST DS18B20
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
INITDS1820:      SETB    TEMPDIN
                 NOP
                 NOP
                 CLR    TEMPDIN
                 MOV    R6,    #0A0H
                 DJNZ   R6,    $
                 MOV    R6,    #0A0H
                 DJNZ   R6,    $
                 SETB   TEMPDIN
                 MOV    R6,    #32H
                 DJNZ   R6,    $
                 MOV    R6,    #3CH

LOOP1820:        MOV    C,      TEMPDIN
                 JC               INITDS1820OUT
                 DJNZ   R6,       LOOP1820
                 MOV    R6,       #064H
                 DJNZ   R6,       $
                 SJMP   INITDS1820
                 RET

INITDS1820OUT:    SETB   TEMPDIN
                 RET

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;        读DS18B20的程序,从中读出一个字节的数据
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
READDS1820:      MOV    R7,   #08H
                 SETB   TEMPDIN
                 NOP
                 NOP

READDS1820LOOP:  CLR    TEMPDIN
                 NOP
                 NOP
                 NOP
                 SETB   TEMPDIN
                 MOV    R6,    #07H
                 DJNZ   R6,    $
                 MOV    C,  TEMPDIN
                 MOV    R6,    #3CH
                 DJNZ   R6,    $
                 RRC    A
                 SETB   TEMPDIN
                 DJNZ   R7,    READDS1820LOOP
                 MOV    R6,    #3CH
                 DJNZ   R6,    $
                 RET


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;            写DS18B20的 程序,从中写一个字节的数据
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
WRITEDS1820:     MOV     R7,   #08H
                 SETB    TEMPDIN
                 NOP
                 NOP

WRITEDS1820LOP:  CLR    TEMPDIN
                 MOV    R6 ,  #07H
                 DJNZ   R6,$
                 RRC    A
                 MOV    TEMPDIN,        C
                 MOV    R6,          #34H
                 DJNZ   R6,$
                 SETB   TEMPDIN
                 DJNZ   R7,    WRITEDS1820LOP
                 RET

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;          READ TEMP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
READTEMP:
                 LCALL  INITDS1820
                 MOV    A,     #0CCH
                 LCALL  WRITEDS1820
                 MOV    R6,        #34H
                 DJNZ   R6,        $
                 MOV    A,         #44H
                 LCALL  WRITEDS1820
                 MOV    R6,        #34H
                 DJNZ   R6,        $
                 RET



READTEMP1:      LCALL     INITDS1820
                MOV       A,#0CCH
                LCALL     WRITEDS1820
                MOV       R6,#34H
                DJNZ      R6,$
                MOV       A,#0BEH
                LCALL     WRITEDS1820
                MOV       R6,#34H
                DJNZ      R6,$
                MOV       R5,#09H
                MOV       R0,#TEMPHEAD
                MOV       B,#00H

READTEMP2:      LCALL     READDS1820
                MOV       @R0,A
                INC       R0

READTEMP21:     LCALL     CRC8CAL
                DJNZ      R5,READTEMP2
                MOV       A,B
                JNZ       READTEMPOUT
                MOV       A,TEMPHEAD+0
                MOV       TEMPL,A
                MOV       A,TEMPHEAD+1
                MOV       TEMPH,A

READTEMPOUT:    RET




;********************************
;处理温度BCD码子程序
;********************************

CONVTEMP:        MOV      A,TEMPH
                 ANL      A,#80H
                 JZ       TEMPC1
                 CLR      C
                 MOV      A,TEMPL
                 CPL      A
                 ADD      A,#01H
                 MOV      TEMPL,A
                 MOV      A,TEMPH
                 CPL      A
                 ADDC     A,#00H
                 MOV      TEMPH,A
                 MOV      TEMPHC,#0BH
                 SJMP     TEMPC11

TEMPC1:          MOV      TEMPHC,#0AH

TEMPC11:         MOV      A,TEMPHC
                 SWAP     A
                 MOV      TEMPHC,A
                 MOV      A,TEMPL
                 ANL      A,#0FH
                 MOV      DPTR,#TEMPDOTTAB
                 MOVC     A,@A+DPTR
                 MOV      TEMPLC,A

                 MOV      A,TEMPL
                 ANL      A,#0F0H
                 SWAP     A
                 MOV      TEMPL,A
                 MOV      A,TEMPH
                 ANL      A,#0FH
                 SWAP     A
                 ORL      A,TEMPL
                 LCALL    HEX2BCD1
                 MOV      TEMPL,A
                 ANL      A,#0F0H
                 SWAP     A
                 ORL      A,TEMPHC
                 MOV      TEMPHC,A
                 MOV      A,TEMPL
                 ANL      A,#0FH
                 SWAP     A
                 ORL      A,TEMPLC
                 MOV      TEMPLC,A
                 MOV      A,R7
                 JZ       TEMPC12
                 ANL      A,#0FH
                 SWAP     A
                 MOV      R7,A
                 MOV      A,TEMPHC
                 ANL      A,#0FH
                 ORL      A,R7
                 MOV      TEMPHC,A

TEMPC12:         RET





   ;*********************************
;*         显示程序            *
  ;*********************************


DISPLAY:       MOV 7EH,#02H
               MOV 7DH,#00H
               MOV R0,#76H
               MOV R1,#70H
               MOV R2,79H
               MOV R3,#79H
               MOV R5,#0FEH


PLAY1:         MOV    A,#0FFH
               MOV    P2,A

               MOV    A,@R0
               MOV    DPTR,#TAB1
               MOVC   A,@A+DPTR
               MOV    SBUF,A
               JNB    TI,$
               CLR    TI


               MOV    A,@R1
               MOV    DPTR,#TAB1
               MOVC   A,@A+DPTR
               MOV    SBUF,A
               JNB    TI,$
               CLR    TI

               MOV    A,R2
               MOV    DPTR,#TAB1
               MOVC   A,@A+DPTR
               MOV    SBUF,A
               JNB    TI,$
               CLR    TI

               INC    R0
               INC    R1
               INC    R3

               MOV    A,R3
               SETB   PSW.4
               MOV    R0,A
               MOV    A,@R0

               CLR    PSW.4
               MOV    R2,A
               MOV    A,R0

               CJNE   A,#78H,PLAY2
               MOV    R0,#50H

PLAY2:         CJNE A,#54H,PLAY3
               MOV    R0,#78H

PLAY3:         MOV    A,R5
               MOV    P2,A
               LCALL  DL1MS
               MOV    A,R5
               JNB    ACC.6,PLAYOUT
               RL     A
               MOV    R5,A
               LJMP   PLAY1

PLAYOUT:       SETB   P2.6
               RET




YS100:    MOV R6,#99
L100:     LCALL YS10
          NOP
          DJNZ R6,L100
          NOP
          NOP
          RET

YS10:     MOV R7,#250
  L1:     DJNZ R7,L1
          RET



DL1MS:        MOV         R6,#14H
DL1:          MOV         R7,#19H
DL2:          DJNZ        R7,DL2
              DJNZ        R6,DL1
              RET











TAB1:  ;DB       0C0H,0F9H,0A4H,0B0H
      ; DB       99H,92H,82H,0F8H,80H,90H,0FFH,0BFH
       DB 03H,9FH,25H,0DH,99H
       DB 49H,41H,1FH,01H,09H,0FFH


       END





⌨️ 快捷键说明

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