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

📄 th23_温度过程控制.asm

📁 单片机杭州天煌教仪自带例程单片机杭州天煌教仪自带例程
💻 ASM
字号:
            ;温度过程控制

     PORTA      equ     0FEF3H
     LEDBuf     equ     30H
     TEMP       EQU     40H
     DIN	BIT	P3.4
     CLK	BIT	P3.5
     UP        equ 1   ; Next
     DOWN      equ 2   ; Last
     LowLimit  equ 0
     HighLimit equ 50
     LowTemp   equ -50   ; A/D 0
     HighTemp  equ 150   ; A/D 255
     SetTemp   equ 50h
     CurTemp   equ 60h

        ORG   0000H
        ljmp  Start
        ORG   0030H  

Start:  mov   SetTemp, #20

MLoop: LCALL  TestKey
       jnz   KeyPressed
       LCALL  DisplayResult
       LCALL  DisplayLED
       LCALL  ReadTemp
       mov   a, CurTemp
       jb    acc.7, LE0
       clr   c
       mov   b, SetTemp
       dec   b
       dec   b
       subb  a, b
       jnc   GN2


LE0:   setb   p3.2
       Ljmp  GN4
GN2:   mov   a, CurTemp
       setb  c
       mov   b, SetTemp
       inc   b
       inc   b
       subb  a, b
       jc    GN4
       CLR   P3.2
       Ljmp  GN4
GN4:   LCALL  DELAY1
       Ljmp  MLoop

KeyPressed:
       LCALL  GetKey
       mov   b, a
       XRL   a, #DOWN
       jnz   Key0
       mov   a, SetTemp
       XRL   a, #LowLimit
       jz    Key1
       dec   SetTemp
       sjmp  Key1
Key0:
       mov   a, b
       xrl   a, #UP
       jnz   Key1
       mov   a, SetTemp
       xrl   a, #HighLimit
       jz    Key1
       inc   SetTemp
Key1:
       Ljmp  MLoop


LEDMAP: DB	3FH,6,5BH,4FH,66H,6DH ;0,1,2,3,4,5
	DB	7DH,7,7FH,6FH,77H,7CH ;6,7,8,9,A,B
	DB	58H,5EH,7BH,71H,0,40H ;C,D,E,F, , -
        DB      63H,39H


  ;############################################

DisplayLED:
        MOV	R0,#LEDBUF
	MOV	R1,#TEMP
	MOV	R2,#5
DP10:	MOV	DPTR,#LEDMAP
	MOV	A,@R0
	MOVC	A,@A+DPTR
	MOV	@R1,A
	INC	R0
	INC	R1
	DJNZ	R2,DP10
	MOV	R0,#TEMP
	MOV	R1,#5
DP12:	MOV	R2,#8
	MOV	A,@R0
DP13:	RLC	A
	MOV	DIN,C
	CLR	CLK
	SETB	CLK
	DJNZ	R2,DP13
	INC	R0
	DJNZ	R1,DP12
        RET
         ;==================================================
TestKey:MOV   P1,  #0FH
        MOV   A,   P1                        ; 读入键状态
        cpl   a
        anl   a,   #0fh                      ; 高四位不用
        ret

KeyTable:DB   0EEH,0DEH,0BEH,07EH
         DB   0EDH,0DDH,0BDH,07DH
         DB   0EBH,0DBH,0BBH,07BH
         DB   0EFH,0D7H,0B7H,077H            ; 键码定义

GetKey: MOV R6,#10
      ACALL DELAY
      MOV   P1,  #0FH
      MOV   A,   P1
      CJNE  A,   #0FH, K12
      LJMP  MLOOP
K12:  MOV   B,   A
      MOV   P1,  #0EFH ;
      MOV   A,   P1
      CJNE  A,   #0EFH,K13 ;
      MOV   P1,  #0DFH
      MOV   A,   P1
      CJNE  A,   #0DFH,K13 ;
      MOV   P1,  #0BFH
      MOV   A,   P1
      CJNE  A,   #0BFH,K13
      MOV   P1,  #7FH
      MOV   A,   P1
      CJNE  A,   #7FH, K13
      LJMP  MLOOP
K13:  
      ANL   A,   #0F0H;
      ORL   A,   B
      MOV   B,   A
      MOV   R1,  #16
      MOV   R2,  #0
      MOV   DPTR,#KEYTABLE
K14:  MOV   A,   R2
      MOVC  A,   @A+DPTR
      CJNE  A,   B,    K16
      MOV   P1,  #0FH
K15:  MOV   A,   P1
      CJNE  A,   #0FH, K15;
      MOV   R6, #10
      ACALL DELAY
      MOV   A,   R2
      MOV   LEDBUF, A
      RET
K16:  INC   R2 ;
      DJNZ  R1,  K14
      LJMP  MLOOP



Delay:               ; 延时子程序
       mov   r7, #0
DelayLoop:
       djnz  r7, DelayLoop
       djnz  r6, Delay
       ret


DELAY1:MOV   R4,#0FFH
AA1:   MOV   R5,#0FFH
AA:    NOP
       NOP
       DJNZ  R5,AA
       DJNZ  R4,AA1
       RET

DisplayResult:;===================
       mov   a, CurTemp
       jnb   acc.7, GE0
       mov   LEDBuf, #11H   ; '-'
       dec   a
       cpl   a
       Ljmp   Goon
GE0:
       mov   LEDBuf, #10H 
Goon:  mov   b, #10
       div   ab
       mov   LEDBuf+1, a
       mov   a, b
       mov   LEDBuf+2, a
       mov   a, SetTemp
       mov   b, #10
       div   ab
       mov   LEDBuf+3,A
       mov   a, b
       mov   LEDBuf+4,a
       ret
   
ReadAD:
       mov   dptr, #Porta
       clr   a
       movx  @dptr, a         ; start A/D
WAIT:  JNB     P3.3,WAIT
       MOVX  A,@DPTR          ;  读入结果
       ret

ReadTemp:
       CALL  ReadAD
       mov   b, #200          
       mul   ab
       mov   a, b             
       add   a, #LowTemp
       mov   CurTemp, a
       ret
       END

⌨️ 快捷键说明

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