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

📄 草稿1.asm

📁 及时准确地得到温度信息并对其进行适时的控制
💻 ASM
📖 第 1 页 / 共 2 页
字号:
YS1   EQU  4FH
YS2   EQU  5FH
DY3   EQU  4EH
DY4   EQU  5EH
RS EQU P3.7
RW EQU P3.6
E EQU P3.5
ORG      0000H
AJMP     START
ORG      0003H
AJMP     INT0
ORG      000BH
AJMP     T0
ORG      0013H
AJMP     INT1
ORG      001BH
AJMP     T1
;===============初始化程序====================
START:

      ;MOV  37H,#10
      ;MOV  36H,#10
     ; MOV  35H,#10
      MOV  34H,#00
      MOV  33H,#10          ;实际温度的小数点
      MOV  32H,#00
      MOV  31H,#00
      MOV  30H,#00
          MOV      SP,    #60H
          MOV      TMOD,  #11H                ;T0,T1设为定时模式1工作
	  MOV      TH0,   #3CH
	  MOV      TL0,   #0AFH               ;设定时器0中断周期为50毫秒
          MOV      R7,    #00H               ;用于保存50ms数 ,控制工作周期为1秒
          MOV      40H,   #01H
          MOV      48H,   #00H
           MOV R4,#7fH                ;R4作显示地址缓冲
          SETB   RS
          SETB   RW
          SETB   E
          MOV    R0,#34H
          SETB     EA
	  SETB     ET1
	  SETB     ET0                        ;溢出中断允许
          SETB     IT0                        ;外部中断0的中断方式为边沿触发方式
          SETB     IT1                        ;外部中断1的中断方式为边沿触发方式
          CLR      TR1                        ;初始化关闭定时器1
          CLR      TR0                        ;初始化关闭定时器0
            MOV P1,#38H;8位点阵方式
        ACALL ENABLE
        MOV P1,#0FH;开显示
        ACALL ENABLE
          MOV R4,#080H               ;显示字符串"COL:  "
      MOV P1,R4
      CALL ENABLE
      MOV DPTR,#TABLE1
      CALL WRITE1

;===============
      MOV R4,#085H
      MOV P1,R4
      CALL ENABLE
      MOV DPTR,#TABLE4     ;??????????
      MOV R1,#30H
    GO1:CALL WRITE3          ;显示温度
      INC R1
      MOV A,R1
      CJNE A,#35H,GO1
      MOV R4,#0C0H
      MOV P1,R4
      CALL ENABLE
      MOV DPTR,#TABLE2
      CALL WRITE1              ;显示字符串"SET: "
      LJMP   MAIN
;================外部中断0程序==============
INT0:

     RETI

;================定时器0中断程序=============
T0:  PUSH  A

     INC   R7
     MOV      TH0,   #3CH
     MOV      TL0,   #0AFH
     CJNE  R7,#10 ,QQ
     LJMP  YI_MIAO
   QQ:LJMP  OVER
YI_MIAO:  MOV   R7,#00H
          ;MOV   A,R2
         ; CLR   C
          ;SUBB  A,#8
          ;MOV   R2,A            ;减2048
          MOV   R6,#00H
          MOV   A,R3
 BI_JIAO :CJNE  A,#64H,PAN_DUAN
 XIANG_DENG:CLR   C
            SUBB  A,#64H
            INC   R6
            MOV   R3,A
            LJMP  BI_JIAO
 PAN_DUAN:JC     XIAO_YU
          JNC    DA_YU
    XIAO_YU:
            MOV   A,R2
            CJNE  A,#00H,JIE_WEI
            LJMP  DI_WEI
    JIE_WEI:MOV   A,#0FFH
            DEC   R2
            CLR   C
            SUBB  A,#64H
            ADD   A,R3
            INC   A
            INC   R6
            MOV   R3,A
            LJMP  BI_JIAO
    DA_YU:  CLR   C
            SUBB  A,#64H
            INC   R6
            MOV   R3,A
            LJMP  BI_JIAO
  DI_WEI: MOV   A,R3
          MOV   B,#10
          DIV   AB
          MOV   3AH,A
          MOV   3BH,B
  GAO_WEI:MOV   A,R6
          MOV   B,#10
          DIV   AB
          MOV   5AH,A
          MOV   5BH,B


;    5AH 5BH 3AH 3BH 为实际的十进制数
;  -  2   0   4   8
;----------------------
;     *   *   *   *   000     精确到十毫伏
;
;****000/2048=实际温度



;               3FH,3EH,3DH,3CH
;                *, ** , *0, 00
;         /              20, 48
;-------------------------------


MOV   3CH,#00       ;;;;;;;;;;

MOV  A,3BH
MOV  B,#10
MUL   AB
MOV   3DH,A

MOV  A,5BH
MOV  B,#10
MUL  AB
ADD  A,3AH
MOV   3EH,A

MOV  3FH,5AH
;**********************************************************************************
MOV   R6,#00H
        MOV   30H,#00H
        MOV   31H,#00H
        MOV   32H,#00H                               ;设置初始值
        MOV   34H,#00H                               ;此处用于保存2048的个数
DI_WEI1:
        MOV   A,R6
        CJNE  A,#100,QI_YU
        INC  31H
        MOV   R6,#00H
        MOV  A,31H
        CJNE  A,#10 ,DD
        MOV   30H,#01H
        MOV   31H,#00H
        MOV   32H,#00H
        MOV   34H,#00H
        LJMP  DI_WEI2
    DD:
        MOV   31H,A
        LJMP  DI_WEI2

  QI_YU:MOV  B,#10
        DIV  AB

        MOV  32H,A
        MOV  34H,B
DI_WEI2:MOV  A,3CH
        CJNE  A,#48,DI_UNEQU        ;判断低位是否等于48
        CLR   C
        SUBB  A,#48
        MOV   3CH,A
GAO_WEI1:MOV  A,3DH
         CJNE  A,#20,GAO_UNEQU      ;判断高位是否等于20
         CLR   C
         SUBB  A,#20
         INC  R6
         MOV   3DH,A
         LJMP   DI_WEI1
 DI_UNEQU:JC   DI_S                 ;低位小于48
          JNC  DI_L                 ;低位大于48
    DI_S:MOV  A,3DH
         CJNE  A,#00H,GAO_2
         MOV   A,3EH
         CJNE  A,#00H,ZH_2
         MOV   A,3FH
         CJNE   A,#00H,SH_2
          MOV   A,48H
          CJNE   A,#01H,QQ1
          LJMP   BIJIAO_WENDU
      QQ1:LJMP   OVER
  GAO_2: DEC  3DH
 JIAN_48:MOV  A,#100                ;低位小于48程序
         CLR  C
         SUBB  A,#48
         ADD   A,3CH
         MOV   3CH,A
         LJMP   GAO_WEI1
    ZH_2:DEC   3EH
         MOV   3DH,#99
         LJMP  JIAN_48
    SH_2:DEC   3FH
         MOV   3EH,#99
         MOV   3DH,#99
         LJMP  JIAN_48

    DI_L:CLR  C                     ;低位大于48程序
         SUBB  A,#48
         MOV   3CH,A
         LJMP  GAO_WEI1
 GAO_UNEQU:JC   GAO_S                ;高位小于20
           JNC  GAO_L                ;高位大于20
    GAO_S:MOV   A,3EH                ;高位小于20程序
          CJNE  A,#00H,ZH_1          ;判断中位是否为0
          MOV   A,3FH
          CJNE  A,#00H,SH_1          ;判断上位是否为0
           MOV   A,48H
          CJNE   A,#01H,QQ2
          LJMP   BIJIAO_WENDU
      QQ2:LJMP   OVER               ;计算完毕
      ZH_1:MOV  A,#100               ;中位不为0,向中位借位
           DEC  3EH
           CLR  C
           SUBB  A,#20
           ADD   A,3DH
           INC   R6
           MOV   3DH,A
           LJMP  DI_WEI1
      SH_1:DEC   3FH                 ;中位为0,但上位不为0,向上位借位
           MOV   3EH,#99
           MOV   A,#100
           CLR   C
           SUBB  A ,#20
           ADD   A,3DH
           INC   R6
           MOV   3DH,A
           LJMP  DI_WEI1
    GAO_L:CLR   C                    ;高位大于20程序
          SUBB  A,#20
          MOV   3DH,A
          INC   R6
          LJMP  DI_WEI1


;===============到此12位数据处理完毕===============
;===============以下为比较温度=====================
  BIJIAO_WENDU: MOV   A,30H
          MOV   B,#100
          MUL   AB
          MOV   R2,A
          MOV   A,31H
          MOV   B,#10
          MUL   AB
          ADD   A,R2
          MOV   R2,A
          ADD   A,32H
          MOV   R2,A           ;实际温度整合完毕

          MOV   A,35H
          MOV   B,#100
          MUL   AB
          MOV   R3,A
          MOV   A,36H
          MOV   B,#10
          MUL   AB
          ADD   A,R3
          MOV   R3,A
          ADD   A,37H
          MOV   R3,A            ;设定温度整合完毕

          CLR   C
          SUBB  A,#10
          MOV   41H,A
          ADD   A,#5
          MOV   42H,A
          ADD   A,#4
          MOV   43H,A            ;阀值温度设定完毕

          MOV   A,R2
          CJNE  A,41H,WEN1_UNEQU
          LJMP  BO_2
   WEN1_UNEQU:JC  WEN1_XIAO
             JNC  WEN1_DA
     WEN1_XIAO: LJMP   BO_QUAN
     WEN1_DA:   CJNE   A,42H,WEN2_UNEQU
                LJMP   BO_4
   WEN2_UNEQU:JC   WEN2_XIAO
             JNC   WEN2_DA
     WEN2_XIAO: LJMP   BO_2
     WEN2_DA:   CJNE   A,43H,WEN3_UNEQU
                LJMP   BO_8
   WEN3_UNEQU:JC   WEN3_XIAO
             JNC   WEN3_DA
     WEN3_XIAO: LJMP   BO_4
     WEN3_DA:   MOV   45H,R3
                CJNE   A,45H,WEN4_UNEQU
                LJMP   BO_0
   WEN4_UNEQU:JC   WEN4_XIAO
             JNC   WEN4_DA
     WEN4_XIAO: LJMP    BO_8
     WEN4_DA:  ; LJMP    BO_0

    BO_0:     CLR    EX1
              CLR    TR1
             SETB   P3.0
              LJMP  OVER
    BO_QUAN:  CLR    EX1
              CLR   TR1
              CLR   P3.0

              LJMP  OVER
    BO_2:
              MOV  46H,#0ECH
              MOV  47H,#77H

⌨️ 快捷键说明

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