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

📄 气象站信息采集汇编程序.asm

📁 实现气象站信息采集功能
💻 ASM
字号:
RS	EQU	P1.0
RW	EQU	P1.1
E	EQU	P1.2
PSB	EQU	P1.3
RST     EQU     P1.4
COUNT	EQU	7FH
COUNT1  DATA    5CH
SUM     DATA    5DH
BLOCK   DATA    70H
ADDR    DATA    3FH




         ORG 0000H
STAR:    AJMP MAIN
         ORG  0023H
         AJMP SBU   ;串行中断断入口
MAIN:
         MOV SP,#08H
         MOV TH2,00H
         MOV TL2,00H
         MOV RCAP2H,#0FFH
         MOV RCAP2L,#0D9H
         MOV T2CON,#34H
         MOV SCON,#01010000B;串口初始化
         MOV IE ,#10010000B;中断初始化
         SETB	RST
         SETB   PSB
         MOV A,#34H
         LCALL SEND_I
         MOV A,#30H
         LCALL SEND_I
         MOV A,#01H                  ;液晶屏初始化
         LCALL SEND_I
         MOV A,#06H
         LCALL SEND_I
         MOV A,#0CH
         LCALL SEND_I
;*************************************************************************************
TIME2:  LCALL WATCHDOG             ;-------------------------------
        LCALL DELAY
        LCALL DELAY
        LCALL WATCHDOG
        LCALL ADCJ
        LCALL WATCHDOG
        LCALL DISPLAY
        LCALL DELAY
        LCALL WATCHDOG
        LJMP TIME2
;*******************************************************************************
DELAY:  MOV R3,#0FAH
  DL3:  LCALL WATCHDOG
        ACALL DELAY1
        LCALL WATCHDOG
        DJNZ R3,DL3
        RET
DELAY1:  MOV R1,#0AH
   DL2:  MOV R2,#18H
   DL1:  NOP
         NOP
         DJNZ R2,DL1
         DJNZ R1,DL2
         RET

;*****************************************************************************
ADCJ:

      CLR P3.5
      MOV A,#41H
      MOV R0,#30H
      MOV R1,#31H
      LCALL AD_DO;---------------通道0进行AD转换
      MOV R6,31H
      MOV R7,30H
      LCALL  BCD;-------------结果转化为BCD码
      MOV 36H,R3
      MOV 37H,R4
      MOV 38H,R5
      MOV R7,37H
      MOV R6,38H
      MOV R5,#04H
      MOV R4,#0C5H
      MOV 50H,#00H
      MOV 51H,#00H
      MOV 52H,#00H
      MOV 53H,#00H
      MOV R1,#50H
      LCALL WATCHDOG
      LCALL CACULATE;-----------------与系数相乘并存结果
      ;///////////////////////////////////////////////////////////////////////
      CLR  P3.5

      MOV R0,#32H
      MOV R1,#33H
      MOV A,#42H
      LCALL AD_DO;---------------通道1进行AD转换
      MOV R6,33H
      MOV R7,32H
      LCALL  BCD;---------------结果转化为BCD码
      MOV 39H,R3
      MOV 40H,R4
      MOV 41H,R5
      MOV R7,40H
      MOV R6,41H
      MOV R5,#09H
      MOV R4,#8AH
      MOV 54H,#00H
      MOV 55H,#00H
      MOV 56H,#00H
      MOV 57H,#00H
      MOV R1,#54H
      LCALL WATCHDOG
      LCALL CACULATE;-----------------与系数相乘并存结果
    ;////////////////////////////////////////////////////////////
      CLR P3.5
      MOV R0,#34H
      MOV R1,#35H
      MOV A, #50H
      LCALL AD_DO;--------- --------通道2进行AD转换
      MOV R6,35H
      MOV R7,34H
      LCALL  BCD;----------------结果转化为BCD码
      MOV 42H,R3
      MOV 43H,R4
      MOV 44H,R5

      MOV R7,43H
      MOV R6,44H
      MOV R5,#05H
      MOV R4,#0B9H
      MOV 58H,#00H
      MOV 59H,#00H
      MOV 5AH,#00H
      MOV 5BH,#00H
      MOV R1,#58H
      LCALL WATCHDOG
      LCALL CACULATE               ;-----------------与系数相乘并存结果
      RET
;**********************************************************************************
AD_DO:
      MOV DPTR,#0FFFFH
      MOVX @DPTR,A
      NOP
      NOP
      JB P3.2,$
      CLR  P3.7
      CLR  P3.4
      MOVX A,@DPTR
      MOV @R0, A
      SETB P3.4
      DEC DPL
      MOVX A,@DPTR
      MOV @R1,A
      SETB  P3.6
      SETB  P3.7
      RET

;**************************************************************************************
BCD:

    CLR A
    MOV R3,A
    MOV R4,A
    MOV R5,A
    MOV R2,#10H
HB3:MOV A,R7
    RLC A
    MOV R7,A
    MOV A,R6
    RLC A
    MOV R6,A
    MOV A,R5
    ADDC A,R5
    DA A
    MOV R5,A
    MOV A,R4
    ADDC A,R4
    DA A
    MOV R4,A
    MOV A,R3
    ADDC A,R3
    MOV R3,A
    DJNZ R2,HB3
    RET
;***********************************************************************************************
CACULATE:MOV A,R1
         MOV R0,A
         MOV A,@R0
         ADDC A,R6
         DA A
         MOV  @R0,A
;----------------------------
         INC  R0
         MOV A,@R0
         ADDC A,R7
         DA A
         MOV @R0,A
;-------------------------------------
         INC R0
         MOV A,@R0
         ADDC A,#0
         DA A
         MOV @R0,A
         INC R0
         MOV A,@R0
         ADDC A,#0
         DA A
         MOV @R0,A
;------------------------------------
         CLR C
         CJNE R5,#0,BB
         MOV A,R4
         SUBB A,#1
         MOV  R4,A
         JNZ  CACULATE
         SJMP CC
   BB:   MOV A,R4
         SUBB A,#1
         MOV R4,A
         MOV A,R5
         SUBB A,#0
         MOV  R5,A
         JNC  CACULATE
CC:      RET
;***************************************************************************
DISPLAY:


LGS1:
      MOV DPTR,#TAB1
      MOV COUNT,#40H ;全部显示
      MOV A,#80H
      LCALL SEND_I
LGS11: CLR A
       MOVC A,@A+DPTR
       LCALL SEND_D
       INC DPTR
       DJNZ COUNT,LGS11    ;
;--------------------------------------显示数值开始
       MOV R0,#52H
       MOV R1,#53H
       MOV A,51H
       ANL A,#0F0H
       SWAP A
       SUBB A,#05H
       JC SMALL
       MOV A,@R0
       ANL A,#0FH
       SWAP A
       ADD A,#10H
       DA A
       SWAP A
       ANL A,#0FH
       SJMP STORE
SMALL:
       CLR C
       MOV A,@R0
       ANL A,#0FH
STORE:
       MOV 70H,A
       MOV A,@R0
       ANL A,#0F0H
       JNC TO
       CLR C
       ADD A,#10H
       DA A
TO:   SWAP A
      MOV 71H,A
      MOV A,@R1
      ANL A,#0FH
      ADDC A,#00H
      MOV 72H,A
;------------------------------
       MOV A,#93H;显示位置设定在93H处
       LCALL SEND_I
       MOV A,72H
       JZ L1
       LCALL CHABIAO
L1:    MOV A,71H
       JNZ AA
       MOV A,72H
       JZ SS
       MOV A,71H
AA:    LCALL CHABIAO
       CLR A
       MOV DPTR,#PSET   ;送出“.”
       MOVC A,@A+DPTR
       LCALL SEND_D
SS:    MOV A,70H
       LCALL CHABIAO
;//////////////////////////////////////////////

       MOV R0,#56H
       MOV R1,#57H
       MOV A,@R0
       ANL A,#00001111B
       SUBB A,#05H
       JC SMALL2
       MOV A,@R0
       ANL A,#0F0H
       ADD A,#10H
       DA A
       SWAP A
       ANL A,#0FH
       SJMP STORE2
SMALL2:
        CLR C
        MOV A,@R0
        ANL A,#0F0H
        SWAP A
STORE2:
        MOV 73H,A
        MOV A,@R1
        ANL A,#0FH
        SWAP A
        JNC T02
        ADD A,#10H
        DA A
T02:    SWAP A
        MOV 74H,A
        MOV A,@R1
        ANL A,#0F0H
        ADDC A,#00H
        MOV 75H,A
        MOV A,#8BH  ;  显示位置设定在8bH处
       LCALL SEND_I
       MOV A,75H
       JZ L2        ;     A为零则直接显示下一位
       LCALL CHABIAO
L2:    MOV A,74H
       JNZ AA1
       MOV A,75H
       JZ SS1
       MOV A,74H
AA1:   LCALL CHABIAO
SS1:   MOV A,73H
       LCALL CHABIAO
;////////////////////////////////////////////

        MOV R0,#59H
        MOV 6AH,#00H
        MOV 6BH,#94H
        MOV 6CH,#07H
        CLR C
BCDJIA:
        MOV A,@R0
        ADD A,6AH
        DA  A
        MOV @R0,A
        INC R0
        MOV A,@R0
        ADD A,6BH
        DA A
        MOV @R0,A
        INC R0
        MOV A,@R0
        ADDC A,6CH
        DA A
        MOV @R0,A
        MOV A,59H
        ANL A,#0FH
        SUBB A,#05H
        JC SMALL3
        MOV A,59H
        ANL A,#0F0H
        ADD A,#10H
        DA A
        SWAP A
        ANL A,#0FH
        SJMP STORE3
SMALL3:
        CLR C
        MOV A,59H
        ANL A,#0F0H
        SWAP A
STORE3: MOV 76H,A;///////////
        MOV A,5AH
        ANL A,#0FH
        SWAP A
        JNC L31
        ADD A,#10H
        DA A
L31:
        SWAP A
        MOV 77H,A
        MOV A,5AH
        ANL A,#0F0H
        JNC L32
        ADD A,#10H
        DA A
L32:
        SWAP A
        MOV 78H,A
        MOV A,5BH
        ANL A,#0FH
        SWAP A
        JNC L33
        ADD A,#10H
        DA A
L33:
        SWAP A
        MOV 79H,A
        MOV A,5BH
        ANL A,#0F0H
        SWAP A
        ADDC A,#00H
        MOV 7AH,A
        MOV A,#9BH;显示位置设定在9BH处
       LCALL SEND_I
       MOV A,7AH ;
       JZ L13
       LCALL CHABIAO
L13:   MOV A,79H
       JNZ AA3
       MOV A,7AH
       JZ SS3
       MOV A,79H
AA3:   LCALL CHABIAO
SS3:   MOV A,78H
       LCALL CHABIAO
       CLR A
       MOV DPTR,#PSET   ;送出“.”
       MOVC A,@A+DPTR
       LCALL SEND_D
       MOV A,77H
       LCALL CHABIAO
       MOV A,76H
       LCALL CHABIAO
       RET
;*************************************************************************
CHABIAO:
       CLR DPH
       CLR DPL
       MOV DPTR,#NOMBER
       MOVC A,@A+DPTR
       LCALL SEND_D
       RET
;***********************************************************************
WATCHDOG: SETB P3.3
           NOP
           NOP
           NOP
           NOP
           CLR P3.3
           NOP
           NOP
           NOP
           NOP
           SETB P3.3
           NOP
           NOP
           NOP
           NOP
           CLR P3.3
           RET
;*****************************************************************************

;********************************************************************************
CHEAK:

SEND_I:	 LCALL	CHK_BUSY		;写指令子程序
	 CLR	RS
	 CLR	RW
	 MOV	P2,A
	 SETB	E
	 NOP
	 NOP
	 CLR	E
	 RET
CHK_BUSY:MOV	P2,#0FFH		;测忙碌子程序
	 CLR	RS
	 SETB	RW
	 SETB	E
	 ;JB	P2.7,$
	 CLR	E
	 RET
SEND_D:  LCALL	CHK_BUSY		;写数据子程序
	 SETB	RS
	 CLR	RW
	 MOV	P2,A
	 SETB	E
	 NOP
	 NOP
	 CLR	E
	 RET



;---------------------------------------
NOMBER:DB '0123456789'
PSET:  DB '.'
TAB1:  DB'  当前大气状态  '
       DB'湿度:          %'
       DB'温度:         ℃'
       DB'气压:        kPa'
SBU:
   PUSH  ACC
   PUSH  PSW
   CLR RI
   LCALL WATCHDOG
   MOV 7BH,SBUF
   JNB RI,$
   CLR  RI
   MOV 7CH,SBUF
   JNB RI,$
   CLR RI
   MOV 7DH,SBUF
   JNB RI,$
   CLR RI
   MOV 7EH,SBUF
   MOV  A,7BH
   XRL A,#0AAH
   LCALL WATCHDOG
   JNZ OVER
   LCALL WATCHDOG
   MOV A,7CH
   XRL A,#0BBH
   JNZ OVER
   MOV A,7DH
   XRL A,#0CCH
   JNZ OVER
   MOV A,7EH
   XRL A,#0DDH
   JNZ OVER
   LCALL WATCHDOG
   AJMP  XX
OVER:
   LCALL WATCHDOG
   LJMP OVER1
   LCALL WATCHDOG
XX:LCALL WATCHDOG
   MOV COUNT1,#0BH
   MOV SUM,#00H
   CLR SBUF

FA1:
   MOV SBUF,#0FFH
   JNB TI,$
   CLR TI
FA2:
   MOV SBUF,#0FFH
   JNB TI,$
   CLR TI
FA3:
   MOV SBUF,#0AAH
   JNB TI,$
   CLR TI
FA4:
   LCALL WATCHDOG
   MOV SBUF,70H
   MOV A,SUM
   ADD A,70H
   MOV SUM,A
   JNB  TI,$
   CLR TI
   MOV SBUF,71H
   MOV A,SUM
   ADD A,71H
   MOV SUM,A
   JNB  TI,$
   CLR TI
   MOV SBUF,72H
   MOV A,SUM
   ADD A,72H
   MOV SUM,A
   JNB  TI,$
   CLR TI
   MOV SBUF,73H
   MOV A,SUM
   ADD A,73H
   MOV SUM,A
   JNB  TI,$
   CLR TI
   MOV SBUF,74H
   MOV A,SUM
   ADD A,74H
   MOV SUM,A
   JNB  TI,$
   CLR TI
   MOV SBUF,75H
   MOV A,SUM
   ADD A,75H
   MOV SUM,A
   JNB  TI,$
   CLR TI
   MOV SBUF,76H
   MOV A,SUM
   ADD A,76H
   MOV SUM,A
   JNB  TI,$
   CLR TI
   MOV SBUF,77H
   MOV A,SUM
   ADD A,77H
   MOV SUM,A
   JNB  TI,$
   CLR TI
   LCALL WATCHDOG
   MOV SBUF,78H
   MOV A,SUM
   ADD A,78H
   MOV SUM,A
   JNB  TI,$
   CLR TI
   MOV SBUF,79H
   MOV A,SUM
   ADD A,79H
   MOV SUM,A
   JNB  TI,$
   CLR TI
   MOV SBUF,7AH
   MOV A,SUM
   ADD A,7AH
   MOV SUM,A
   JNB  TI,$
   CLR TI
   MOV SBUF,SUM
   JNB TI,$
   CLR TI
FA5:
   LCALL WATCHDOG
   MOV SBUF,#0EEH
   JNB TI,$
   CLR TI
FA6:
   MOV SBUF,#0EEH
   JNB TI,$
   CLR TI
OVER1:
   POP PSW
   POP ACC
   CLR SBUF
   LCALL WATCHDOG
   SETB ES
   SETB EA
   CLR RI

   RET
   END


⌨️ 快捷键说明

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