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

📄 try_tot_3.asm

📁 数字电压采集系统
💻 ASM
字号:
          ORG  0000H
          LJMP 0100H    ;jump to main


          ORG  0100H    ;main()============================================================

          MOV  TMOD, #22H   ;============================================================
          MOV  TH1,  #0F3H      ;4800bps
          MOV  TL1,  #0F3H
          MOV  TH0,  #38H       ;用做计数器产生0.2ms定时
          MOV  TL0,  #38H
          SETB TR1
          MOV  SCON, #50H
          MOV  PCON, #80H
          MOV DPTR,#7FF8H
          MOV 6FH,#00H

     YEAR:MOV 40H, #02
          MOV 41H, #00
          MOV 42H, #00
          MOV 43H, #09
          LCALL DISPLAY

    MONTH:MOV 40H, #00
          MOV 41H, #01
          MOV 42H, #00
          MOV 43H, #09
          LCALL DISPLAY


   SELECT:MOV A, SBUF
          JBC RI , NEW_COMMAND
          MOV A, 6FH
          CJNE A, #01H, OTHERS
          LCALL TIME_CONTINUE
          SJMP SELECT
NEW_COMMAND:MOV 6FH, A
          CJNE A, #01H, OTHERS
          LCALL SHOW_TIME
          SJMP SELECT
   OTHERS:CJNE A, #02H, MEAN_LESS
          MOV R4, #00H
          MOV R5, #00H
          LCALL TEST
          SJMP SELECT
MEAN_LESS:SJMP YEAR


;TEST_SUB_PROGRAM=======================================================================
     TEST:MOV R0,#00H        ;中间寄存器高八位
          MOV R1,#00H        ;中间寄存器低8位
          MOV R2,#08H        ;计数,采样8次
          MOV DPTR,#7FF8H
    AVER2:MOVX @DPTR ,A      ;start A-D
          LCALL DELAY        ;延时0.2ms等待采样结束
          MOVX A,@DPTR       ;读取采样值
          ADD A, R1          ;加入中间寄存器低八位
          JNC AVER1          ;无进位则暂存结果
          INC R0             ;有进位则中间寄存器高八位加一
    AVER1:MOV R1, A          ;暂存低八位结果
          DJNZ R2, AVER2
          MOV R2,#03H        ;计数,右移三次
    AVER3:MOV A, R0          ;高八位结果送入A
          RRC A              ;A中最低位右移入C
          MOV R0 ,A
          MOV A  ,R1
          RRC A              ;低八位结果带进位右移,则高八位的低位进入低八位的最高位
          MOV R1, A
          DJNZ R2,AVER3
          MOV 30H, R1        ;8次平均采样数据放在30H单元--------缓存单元

          LCALL CONVERT
          LCALL DISPLAY
          LCALL WR_RX
          LCALL RD_RX
          LCALL SEND
          RET

;SHOW_TIME_SUB_PROGRAM==================================================================
SHOW_TIME:
       MOV 40H, #00
       MOV 41H, #00
       MOV 42H, #00
       MOV 43H, #00
       MOV 44H, #00 ;SECOND REGISTER
       MOV 45H, #00 ;MINUTE REGISTER
       AJMP TIME_LOOP
TIME_CONTINUE:
       MOV A, 44H
       INC A
       MOV 44H, A
       MOV B, #60
       DIV AB
       JNZ MINUTE
       MOV A, 44H
       MOV B, #10
       DIV AB
       MOV 43H, B
       MOV 42H, A
       SJMP TIME_LOOP
MINUTE:CLR A
       MOV 44H, A
       MOV 43H, #00
       MOV 42H, #00
       MOV A, 45H
       INC A
       MOV 45H, A
       MOV B, #10
       DIV AB
       MOV 40H, A
       MOV 41H, B
 TIME_LOOP:
       LCALL DISPLAY
       RET

;CONVERT binary to decimal========================================================
CONVERT:MOV A,30H
        MOV B,#05H
        MUL AB
        MOV 40H,B

        MOV B,#0AH
        MUL AB
        MOV 41H,B

        MOV B,#0AH
        MUL AB
        MOV 42H,B

        MOV B,#0AH
        MUL AB
        MOV 43H,B
        RET


;display the BCD code====================================================================
DISPLAY:MOV R0  ,#50H
        MOV R1  ,#40H
        MOV R2  ,#0EEH
        MOV R3  ,#04H

    LP1:MOV A   ,R2
        ANL A   ,#0F0H
        ORL A   ,@R1
        MOV @R0 ,A
        INC R0
        MOV A   ,R2
        RL  A
        MOV R2  ,A
        INC R1
        DJNZ R3 ,LP1
        MOV R0  ,#50H
        MOV R1 ,#30 ;循环50次
        MOV R2 ,#04H ;COUNTER----------4-BITS
        MOV R3 ,#40;COUNTER-------SHOW---1S
     S1:MOV P1  ,@R0
        Lcall DELAY
        DJNZ R1,S1
        MOV  R1,#30
        INC  R0
        DJNZ R2,S1
        MOV  R2,#04
        MOV  R0,#50H
        DJNZ R3,S1
        RET


;DELAY Sub_program------0.2ms=================================================================
 DELAY:SETB TR0
 CHECK:JBC  TF0, FULL
       SJMP CHECK
  FULL:CLR TR0
       RET                  ;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\


;write6264=====================================================================================
   WR_RX:MOV DPH ,#80H
         MOV DPL ,R4
         MOV A, 30H
         MOVX @DPTR,A
         INC R4
         RET


;read6264======================================================================================
   RD_RX:MOV DPH ,#80H
         MOV DPL ,R5
         MOVX A,@DPTR
         MOV 3FH,A
         INC R5
         RET

;send data to pc===============================================================================
   SEND:MOV A  , 3FH
        MOV SBUF,  A
        JNB TI  ,  $      ;waiting the end of sending
        CLR TI
        RET


        END               ;\\\\\\\\\\\\\\\\\\\\\\\



⌨️ 快捷键说明

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