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

📄 2增强版.txt

📁 模拟烘手机的基本应用
💻 TXT
字号:
;*****************************
;*函数功能:烘手机     *
;热释电 RSD
;红外 HONGW
;灯泡 DENGPAO
;PWM信号的高电平长度 PWMH 
;PWM信号的周期长度 PWMT        
;*****************************         
        RSD   BIT  P3.6         
	    HONGW BIT  P3.7
	  DENGPAO BIT  P3.5
		 PWM  BIT  P3.3
		 PWMH EQU  60H
		 PWMT EQU  61H
		 COUNT EQU 62H
         K1   BIT  P1.0
		 K2   BIT  P1.1
		 K3   BIT  P1.2
		 K4   BIT  P1.3
		 K5   BIT  P1.4
		 K6   BIT  P1.5

        
		ORG   0000H
	    AJMP  MAIN
		ORG   000BH
        LJMP  TIME0
	    ORG   0030H

 MAIN:  MOV COUNT,#1
		MOV PWMT,#100          ;设PWM信号一个周期的总长度为100
		MOV  TMOD,#01H
        SETB  EA
		SETB  ET0
		MOV  TH0,#0FFH
		MOV  TL0,#50H
		MOV  P3,#00H
        MOV  DPTR,#TABLE
	
;*****************************
;*          主函数         *
           
;***************************** 
 
PANDUAN:JB  RSD,YHWM          ;热释电为1,则判断是否有红外
        MOV  A,#0
 	    LCALL  DISPLAY
		AJMP  PANDUAN
   YHWM:JNB  HONGW,PANDUAN
        SETB  DENGPAO
		MOV  PWMH,#50
        SETB  TR0
        MOV  R0,#5
		MOV  R1,#2            
 JIANCE:JNB  K1,D1            ;检测冷.热风,判断K1\K2是否有一个被按下
        JNB  K2,D2
		LCALL DISPLAY_L
        AJMP  YHWM
     D1:LCALL  DL             ;按键延时
        JB  K1,JIANCE         ;K1是否真按下,否,则重新判断
		MOV  R0,#4
		CLR  DENGPAO
        LCALL  FENGSU         ;K1按下,继续判断风速
    RE1:LCALL  DISPLAY_L
	    JNB  K1,D1
		JNB  K2,D2
		JNB  RSD,RE1         ;热释电为1,则判断是否有红外
        CLR  PWM             ;若人走开,则停止吹风
		CLR  TR0
		AJMP  PANDUAN 

     D2:LCALL  DL
	    JB  K2,JIANCE
        SETB   DENGPAO
		LCALL  FENGSU
		MOV  R0,#5
    RE2:LCALL  DISPLAY_L
	    JNB  K1,D1
		JNB  K2,D2
		JNB  RSD,RE2             ;热释电为1,则判断是否有红外
		CLR  DENGPAO
        CLR  PWM
		CLR  TR0
		AJMP  PANDUAN 

  TIME0:INC  COUNT               
        MOV  A,COUNT
        CJNE A,PWMH,RETIME       ;维持PWM信号的高电平到高电平的设定值
		CPL  PWM                 ;到设定植后,PWM电平取反
 RETIME:CJNE A,PWMT,EXIT         ;保持取反后的电平,直到PWM信号周期的总长度后再取反
        CPL  PWM
		MOV  COUNT,#1  
   EXIT:MOV  TH0,#0FFH            ;定时10MS
		MOV  TL0,#50H
		RETI
;*****************************
;*       判断风速子程序    *
           
;***************************** 		
FENGSU: JNB  K3,DISU          ;判断采用哪种风速
        JNB  K4,ZHONGSU
		JNB  K5,GAOSU
		AJMP  FENGSU

  DISU: LCALL  DL
        JB   K3,FENGSU        ;低速键是否按下
		MOV  R1,#1            ;低速键按下,则显示L001
		LCALL  QUEDING        ;确定键是否按下
        MOV  PWMH,#10
        SETB  TR0 
        RET

ZHONGSU:LCALL  DL
        JB   K4,FENGSU        ;中速键是否按下
		MOV  R1,#2            ;中速键按下,则显示L002
		LCALL  QUEDING        ;确定键是否按下
		MOV  PWMH,#50
        SETB  TR0 
        RET

GAOSU:  LCALL  DL
        JB   K5,FENGSU
        MOV  R1,#3            ;高速键按下,则显示L003
		LCALL  QUEDING        ;确定键是否按下
        RET

QUEDING:JB  K6,QUEDING        ;确定键判断程序      
        LCALL  DL
		JB  K6,QUEDING
		MOV  PWMH,#90
        SETB  TR0 
        RET
        
 
;*****************************
;*         显示子程序     *
           
;*****************************
     DISPLAY:MOVC A,@A+DPTR          ;显示0000和1111的程序
		     MOV  P0,A
		     MOV  P2,#0F0H
		     RET         
   DISPLAY_L:MOV  A,R1               ;显示最后一位,即风速档1\2\3
             MOVC A,@A+DPTR
			 MOV  P0,A
			 MOV  P2,#0FEH
			 LCALL  DELAY
			 MOV  P2,#0FFH

			 MOV  A,#0               ;显示中间两位00
			 MOVC A,@A+DPTR
			 MOV  P0,A
			 MOV  P2,#0F9H
			 LCALL  DELAY
			 MOV  P2,#0FFH

			 MOV  A,R0               ;显示冷.热风,L\M
			 MOVC A,@A+DPTR
			 MOV  P0,A
			 MOV  P2,#0F7H
			 LCALL  DELAY
			 MOV  P2,#0FFH
             RET

;*****************************
;*         延时子程序     *
           
;*****************************

    DL:MOV  R6,#2                  ;按键延时
    D3:MOV  R7,#10
	   DJNZ R7,$
	   DJNZ R6,D3
	   RET

 DELAY:MOV  R6,#20                 ;显示延时       
    D4:MOV  R7,#20 
	   DJNZ R7,$
	   DJNZ R6,D4
	   RET
;*****************************
;*         共阴断码     *
           
;*****************************
TABLE: DB 3FH,06H,5BH,4FH,38H,76H  ;对应0、1、2、3、L、H

       END             
        

⌨️ 快捷键说明

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