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

📄 wendu.asm

📁 该代码是一个完整的温度控制的汇编代码,实现了温度的采集,控制,显示
💻 ASM
字号:
           ORG 0000H
           AJMP  K
           ORG 0073H    ;A/D中断入口
          AJMP  AD
             ORG 0100H
AD:       PUSH  ACC
          PUSH  DPL
          PUSH  DPH;          保护现场
          
TO1:      SETB   P0.6
          SETB   P0.0
          SETB   P0.2
          ACALL   DELAY5S
          CLR    P0.6
          CLR    P0.0
          ACALL   DELAY5S
	  ACALL   SHOW
	  ACALL   DELAY5S
          SJMP   TO1
          POP  DPH 
          POP  DPL
          POP  ACC
          RETI    
            ORG  200H
K:        NOP
          DISP0  equ 78H
          DISP1  equ  79H
          DISP2  equ  7AH
          DISP3  equ  7BH
          DISP4  equ  7CH
          DISP5  equ  7DH
          DISP6  equ  7EH
          DISP7  equ  7FH
	  ADMODA equ  0C0H
	  AD1DAT0 equ 0D5H
	  ADCON1  equ  97H
	  AD1BH   equ  0C4H
	  AD1BL  equ  0BCH
          EAD     equ  0E8H
          P0M1    equ  84H
	  P0M2   equ 85H
	  P1M1    equ  91H
	  P1M2   equ 92H
	  ADINS  equ  0A3H
	  ADMODB  equ  0A1H
	  IEN0    equ  0A8H

          MOV  SP, #50H;
          CLR  A
          MOV  DISP0,  A  
          MOV  DISP1,  A
          MOV  DISP2,  #03H
          MOV  DISP3,  #04H
          MOV  DISP4,  #05H
          MOV  DISP5,  #06H
          MOV  DISP6,  A
          MOV  DISP7,  A
          MOV  30H,  A;              显示指针
          MOV  31H,  A              
          MOV  32H,  A
          MOV  33H,  A
          MOV  34H,  A;              低温加数据量
       	  MOV  35H,  A;              高温加数据量
          MOV  36H,  A
          MOV  37H,  A
          MOV  38H, A
          MOV  39H, A
          MOV  3AH, A
          MOV  3BH, A
          MOV  3CH, A
          MOV  3DH, A
          MOV  3EH, #0F6H;           温度下限单元
          MOV  3FH, #0FCH ;           温度上限单元
	  MOV  40H,  #00H;            高温减数据量
	  MOV  41H,  #00H;            低温减数据量
	  MOV  42H,  #00H
          MOV  P0,   #00H
          MOV  P1,   #03H                    ;清暂存单元
	  MOV  R0,  A
	  MOV  R1,  A
	  MOV  R2,  A
	  MOV  R3,  A
	  MOV  R4,  A
	  MOV  R5,  A
	  MOV  R6,  A
	  MOV  R7,  A 
RESTART:  MOV  IEN0,   #80H
          MOV  EAD,   #80H        ;   开A/D 中断
          MOV  P0M1,  #32H                     
          MOV  P0M2,  #00H;  设置A/D口仅为输入
          MOV  P1M1,   #0CH
          MOV  P1M2,    #00H
          MOV  SCON, #00H;   开串口模式0      
          MOV  ADINS, #10H;  选择1口为 A/D口
          MOV  ADMODA, #00H; 选择A/D转换模式
          MOV  ADMODB, #60H; 选择A/D转换频率
          MOV  ADCON1, #085H;置A/D控制器
   ;       MOV  A,  ADCON1
         
	  NOP 
	  NOP 
	  NOP
	  NOP
	  NOP
	  NOP
	  NOP
	  NOP
	  NOP
	  NOP
	  NOP
	  NOP
	  NOP
	  NOP
	  NOP
	  NOP
	  NOP
          NOP
          NOP
	  NOP
	  NOP
	  MOV ADCON1,  #81H	
          MOV A, AD1DAT0
;          ACALL  CHANG
CHANG:   MOV   31H,  #0D8H
	  CLR   C
	  SUBB  A,  31H
	  MOV  R1,  A	  
	  ANL  A, #03H
	  MOV  33H,  A
	  MOV  A,  R1
	  ANL  A, #0FCH
	  MOV  32H,  A
	  MOV  A,  33H
	  CJNE A,  #02H,  PP
PP:       JC  UN
	  SJMP  LN 
   UN:    MOV  A, 32H
          CLR  C
          RR A
	  RR A
	  SJMP  JG
   LN:    MOV  A, 32H         
          CLR  C
          RR A
         RR A
	  INC  A
   JG:    ADD  A,  R1
   ;       RET
 BCD:     MOV  B,  #0AH
         DIV AB
          MOV  R5, A
          MOV  R4, B
 ;         RET
;          ACALL  BCD
          MOV  DISP1,  R5
	  MOV  DISP0,  R4      
          MOV  AD1BH,  #0FDH;   A/D边界高值寄存器
          MOV  AD1BL,  #0D0H;   A/D边界低值寄存器
	  CLR    P0.7	  
          ACALL  SHOW
;          MOV  30H,  #06H;   设置显示指针
 ;         MOV  R0,   #DISP0;   
;          CLR  P0.7
;DIS0:     MOV  A,   @R0
;          MOV  DPTR,  #DISAB
;          MOVC A,  @A+DPTR
;          MOV  SBUF,  A
;DENG0:     JNB  TI, DENG0
;          CLR  TI
;          INC  R0
;          DJNZ  30H,  DIS0
;          MOV  R0,  #DISP0
;          SETB  P0.7
;          ACALL   DELAY_DIS
;          CLR   P0.7
          MOV A,  AD1DAT0
          CJNE A, 3FH,  BIJIAO0
BIJIAO0:  JC  BIJIAO1
          SJMP  UNDOO
BIJIAO1:  CJNE A, 3EH,  BIJIAO2
BIJIAO2:  JNC   UNDOO
          SETB  P1.6
           CLR   P0.3

          NOP 
          NOP
          NOP
          SETB  P0.3

          NOP
          NOP
          NOP
          CLR   P0.3

          NOP
          NOP
          NOP
          SETB  P0.3

          NOP
          NOP
          NOP
          CLR   P0.3
	  CLR   P1.6
          SETB  P0.2 

          AJMP  RESTART
UNDOO:    CLR   P1.6
          CLR   P0.3
          NOP
          NOP
          NOP
          SETB  P0.3
          NOP
          NOP
          NOP
          CLR   P0.3
          NOP
          NOP
          NOP
          SETB  P0.3
          NOP
          NOP
          NOP
          CLR   P0.3        
          CLR   P0.2
          AJMP  RESTART
   
  	 
;KEY:      JB  P1.2,   KEY13
 ;         SJMP   PDP5
;KEY13:    ACALL  DELAY12MS
 ;         CLR  P1.2        
 ;         JB  P1.2,   HIGHER ;     若选种温度上限,则HIGH
 ;PDP5:    JB  P1.3,  KEY14
 ;         AJMP   RESTART
;KEY14:    ACALL  DELAY12MS 
 ;          CLR  P1.3        
 ;         JB  P1.3,  LOWER ;     若选种温度下限,则LOW
;	  CLR  P1.3
;          AJMP   RESTART
;HIGHER:   SETB  P0.0      ;      按键声响
;          ACALL  DELAY5S
 ;         CLR   P0.0
;	  CLR   P1.2	 
;SAOM:     JB  P1.4, KEY120
     ;     SJMP   PDP17
;KEY120:   ACALL  DELAY12MS
 ;         CLR  P1.4	
 ;         JB  P1.4,   HINC  ;    若选种温度加键,则HINC
 ;PDP17:   JB  P1.7,   KEY170
 ;         SJMP   SMTIM 
;KEY170:   ACALL  DELAY12MS 
;          CLR  P1.7   
 ;         JB  P1.7,   HDEC  ;  若选种温度减键,则HDEC
 ;SMTIM:   INC R6
  ;        CJNE  R6,#0FFH,   SAOM ;  扫描一段时间
;	  CLR   A
;	  MOV   R6,  A
 ;         INC   R3
;	  CJNE  R3,  #0FFH, SMTIM
;	  MOV   R3,  A
;	  INC   42H
;	  MOV   A,  42H
;	  CJNE  A,  #0AH,   SMTIM
;	  CLR   A
;	  MOV   42H,   A
 ;         AJMP  RESTART
 ;LOWER:   AJMP   TOLOW       
;HINC:    ; ACALL  DELAY12MS   ;   延时12毫秒
;          SETB  P0.0         ;   按键声响
;          ACALL  DELAY5S
;          CLR   P0.0
;	  CLR   P1.2
;	  INC   35H
;	  MOV   A,  35H
;	  CJNE  A,  #32H,  ZHUAN0
;ZHUAN0:   JC   BUZUO0
 ;         DEC   35H
;BUZUO0:   MOV   A,  35H
;          ACALL  BCD
;	  MOV  A,  35H
 ;         MOV  B,  #04H
;	  MUL  AB
;	  MOV  B,  #05H
;	  DIV  AB
;	  ADD  A,  #0D8H
;	  MOV  3FH,  A
;	  MOV  R2, B
;	  CJNE  R2,  #03H, JIN0
;JIN0    : JNC    FANH0
 ;         SJMP  DO0
 ;FANH0  : INC 3FH
;DO0:      JB  P1.4,  HINC
;          INC  R6
;          CJNE  R6, #0FFH , DO0
;          MOV   A, #00H
;	  MOV   R6, A
;          INC   R3
;	  CJNE  R3,  #0FFH,  DO0
;	  MOV   R3,  A
;	  INC   42H
;	  MOV   A,  42H
;	  CJNE  A,  #0AH,   DO0
;	  CLR   A
;	  MOV   42H,   A
;          MOV  DISP5, R5 
 ;         MOV  DISP4, R4
;          ACALL  SHOW
;	  AJMP   KEY
;          SJMP   TIAO 
;TIAO:     NOP
;;HDEC:     SETB  P0.0          ;  按键声响
 ;         ACALL  DELAY5S
 ;         CLR   P0.0
;	  CLR   P1.7
;          DEC   40H
;	  MOV   A,  40H
;	  CJNE  A,  #0FFH,  ZHUAN
;ZHUAN:    JC   BUZUO
 ;         INC   40H
;BUZUO:    MOV   A,  40H
;          ACALL  BCD
;	  MOV  A,  40H
 ;         MOV  B,  #04H
;	  MUL  AB
;	  MOV  B,  #05H
;	  DIV  AB
;	  ADD  A,  #0D8H
;	  MOV  3FH,  A
;	  MOV  R2, B
;	  CJNE  R2,  #03H, JIN
;JIN    :  JNC    FANH
 ;         SJMP  DO1
;FANH  :   INC 3FH
;DO1:      JB  P1.7,  HDEC
  ;        INC  R6
 ;         CJNE  R6, #0FFH,  DO1
  ;        MOV  A, #00H
;	  MOV  R6,  A
 ;         INC   R3
;	  CJNE  R3,  #0FFH,  DO1
;	  MOV   R3,  A
;	  INC   42H
;	  MOV   A,  42H
;	  CJNE  A,  #0AH,   DO1
;	  CLR   A
;	  MOV   42H,   A
 ;         MOV  DISP5, R5 
 ;         MOV  DISP4, R4	
 ;         ACALL  SHOW
;	  AJMP   KEY   
;TOLOW:    SETB  P0.0          ;  按键声响
;          ACALL  DELAY5S
 ;         CLR   P0.0
;	  CLR   P1.3
;SAOM1:    JB  P1.4, KEY121
 ;         SJMP   PDP171
;KEY121:   ACALL  DELAY12MS
 ;         CLR P1.4
	  
;          JB  P1.4,   LINC    ;  若选种温度加键,则LINC
;PDP171:   
 ;         JB  P1.7,   KEY171
 ;         SJMP   SMTIM1 
;KEY171:   ACALL  DELAY12MS
;          CLR  P1.7 
             
 ;         JB  P1.7,   LDEC    ;  若选种温度减键,则LDEC
;SMTIM1:   INC R7
 ;         CJNE  R6,#80H , SAOM1 ;  扫描一段时间
 ;         MOV   A,  #00H
;	  MOV   R6,  A
   ;       INC   R3
;	  CJNE  R3,  #0FFH, SMTIM1
;;	  MOV   R3,  A
;	  INC   42H
;	  MOV   A,  42H
;	  CJNE  A,  #0AH,  SMTIM1
;	  CLR   A
;	  MOV   42H,   A
   ;       AJMP   RESTART

;LINC:     SETB  P0.0          ; 按键声响
  ;        ACALL  DELAY5S
 ;         CLR   P0.0
;	  CLR   P1.2
 ;         INC   34H
;	  MOV   A,  34H
;	  CJNE  A,  #32H,  ZHUAN2
;ZHUAN2:   JC   BUZUO2
  ;        DEC   34H
;BUZUO2:   MOV   A,  34H
 ;         ACALL  BCD
;	  MOV  A,  34H
 ;         MOV  B,  #04H
;	  MUL  AB
;	  MOV  B,  #05H
;	  DIV  AB
;	  ADD  A,  #0D8H
;	  MOV  3EH,  A
;	  MOV  R2, B
;	  CJNE  R2,  #03H, JIN2
;JIN2    : JNC    FANH2
;          SJMP  DO2
; FANH2  : INC 3EH         
;DO2:      JB  P1.4,  LINC
 ;         INC  R6
 ;         CJNE  R6,#0FFH,  DO2
 ;         MOV  A,  #00H
;	  MOV  R6, A
 ;         INC   R3
;	  CJNE  R3,  #0FFH,  DO2
;	  MOV   R3,  A
;	  INC   42H
;	  MOV   A,  42H
;	  CJNE  A,  #0AH,   DO2
;	  CLR   A
;	  MOV   42H,   A
  ;        MOV  DISP3, R5 
  ;        MOV  DISP2, R4	
 ;         ACALL  SHOW
 ;         AJMP  KEY
;;LDEC:     SETB  P0.0          ;  按键声响
;          ACALL  DELAY5S
  ;        CLR   P0.0
;	  CLR   P1.7
 ;;         DEC   41H
;	  MOV   A,  41H
;	  CJNE  A,  #0FFH,  ZHUAN3
 ;ZHUAN3:  JC   BUZUO3
  ;        INC   41H
;BUZUO3:   MOV   A,  41H
   ;       ACALL  BCD
;	  MOV  A,  41H
  ;        MOV  B,  #04H
;	  MUL  AB
;	  MOV  B,  #05H
;	  DIV  AB
;	  ADD  A,  #0D8H
;	  MOV  3EH,  A
;	  MOV  R2, B
;	  CJNE  R2,  #03H, JIN3
;JIN3   :  JNC    FANH3
;          SJMP  DO3
;F;ANH3  :  INC 3EH
;DO3:      JB  P1.7,  LDEC
;          INC  R6
 ;         CJNE  R6,#0FFH , DO3
 ;         MOV   A, #00H
;	  MOV   R6,  A
;	  INC   R3
;	  CJNE  R3,  #0FFH,  DO3
;	  MOV   R3,  A
;	  INC   42H
;	  MOV   A,  42H
;	  CJNE  A,  #0AH,   DO3
;	  CLR   A
;	  MOV   42H,   A        
;          MOV  DISP3, R5  
;          MOV  DISP2, R4
 ;         ACALL  SHOW         
 ;         AJMP  KEY
          
SHOW:     MOV  30H,  #06H;   设置显示指针
          MOV  R0,   #DISP0;   
          CLR  P0.7
DIS:      MOV  A,   @R0
          MOV  DPTR,  #DISAB
          MOVC A,  @A+DPTR
          MOV  SBUF,  A
DENG:     JNB  TI, DENG
          CLR  TI
          INC  R0
          DJNZ  30H,  DIS
          MOV  R0,  DISP0
          SETB  P0.7
         ACALL   DELAY_DIS
          CLR   P0.7
	  RET
DISAB:    DB   0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H
          DB   0FEH,0E6H,5FH,7CH,39H,5EH,79H,71H 

     
               ;     延时子程序
DELAY12MS: MOV  0CH, #96H
DY12MS1 :  MOV  0DH, #0FFH
DY12MS2:   DJNZ 0DH, DY12MS2
           DJNZ 0CH, DY12MS1
           RET

DELAY5S:   MOV   3BH,  #0CH	
DY5S1:     MOV   3AH,  #0FFH
DY5S2:     MOV   39H,  #0FFH
DY5S3:     DJNZ  39H,  DY5S3
           DJNZ  3AH,  DY5S2
           DJNZ  3BH,  DY5S1
           RET   

DELAY_DIS: MOV   38H,  #08H
DY_DIS1  : MOV   37H,  #0FFH
DY_DIS2  : MOV   36H,  #0FFH
DY_DIS3  : DJNZ  36H,  DY_DIS3
           DJNZ  37H,  DY_DIS2
           DJNZ  38H,  DY_DIS1
           RET
	   END

⌨️ 快捷键说明

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