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

📄 nuanfeng.asm

📁 暖风机的相关程序及原理图,调试成功,希望对大家有用
💻 ASM
📖 第 1 页 / 共 4 页
字号:
        JMP    RK21
        JMP    RK21
        JMP    RK22
  
  RK20: BS     P6,0         ;打开第一个继电器
        BS     D0+11,0
        BC     D0+11,1
        RET
        
  RK21: BS     P6,0         ;打开2个
        BS     P6,1
        BS     D0+11,0
        BS     D0+11,1
        RET
        
  RK22: BC     P6,0          ;关
        BC     P6,1
        BC     D0+11,0
        BC     D0+11,1
        RET            
        
RKEY3:  MOV    A,@7           ;时间设定 ,输出控制
        MOV    FTIMES,A       ;刷新显示,并置闪烁标志0.5S闪烁7次
        BS     FLAG1,FTIME
        BC     FLAG1,FTEMP
        RET
        
RKEY4:  MOV    A,@7           ;温度设定
        MOV    FTIMES,A        ;刷新显示
        BS     FLAG1,FTEMP
        BC     FLAG1,FTIME
        RET
               
RKEY5:  MOV     A,@7
        MOV     FTIMES,A        ;刷新显示
        JBS     FLAG1,FTIME
        JMP     RKEY5TEMP
        INC     STIME         ;时间加1,家到15为0,刚好循环
        ;AND     A,@0X0F
        ;MOV     B,A
        ;MOV     A,STIME
        ;AND     A,@0XF0      ;保护高4位
        ;XOR     A,B
        ;MOV     STIME,A
        RET
        
RKEY5TEMP:
        MOV     A,@7
        MOV     FTIMES,A    
        JBS     FLAG1,FTEMP
        JMP     NOABLESET
        INC     STEMP                     ;温度设定值加1
        MOV     A,STEMP                   ;
        SUB     A,@80
        JBC     R3,C
        RET    
        MOV     A,@0
        MOV     STEMP,A
        RET
       
RKEY6:  MOV     A,@7
        MOV     FTIMES,A    
        JBS     FLAG1,FTIME
        JMP     RKEY6TEMP
        DEC     STIME         ;时间-1,-到0为15,刚好循环
        ;AND     A,@0X0F
        ;MOV     B,A
        ;MOV     A,STIME
        ;AND     A,@0XF0      ;保护高4位
        ;XOR     A,B
        ;MOV     STIME,A
        RET
        
RKEY6TEMP:
        MOV     A,@7
        MOV     FTIMES,A    
        JBS     FLAG1,FTEMP
        JMP     NOABLESET
        DEC     STEMP                     ;温度设定值加1
        MOV     A,STEMP                   ;
        SUB     A,@0
        JBS     R3,C
        RET    
        MOV     A,@80
        MOV     STEMP,A
        RET

RKEY7:  ;BC     FLAG1,FTIME
        ;BC     FLAG1,FTEMP
        JBS    FLAG1,FKO
        JMP    RKEY7OFF
        
        BC     FLAG1,FKO ;关
        MOV    A,@15
        MOV    STIME,A          ;默认,温度和时间设置
        MOV    A,@80
        MOV    STEMP,A
        BS     P6,JDQ1
        BS     P6,JDQ2
        RET
         
RKEY7OFF:BS     FLAG1,FKO ;开
         BS     P6,FS    ;打开风扇
         RET
            
NOABLESET:    BC       FLAG,FLED       
              BC       FLAG1,FTIME
              BC       FLAG1,FTEMP
DKEYRET:      BC       RKEY,7  ;清楚有按键 标志
              RET
              
     
;==============================================================================================
;初始化程序积存器
;==============================================================================================
INIT:       MOV    A,@0B00000110                ;1:128:, 
            CONTW                            ;预分频给TCC,内部时钟触发,不允许中断
            MOV    A,@0X0
            IOW    P5                         ;输出并清0
            CLR    P5
            MOV    A,@0X0                     ;输出并清0
            IOW    P6
            CLR    P6
            ;MOV    A,@0X0FF
            ;IOW    IOCB                       ;关闭内部下拉
            ;MOV    A,@0
            ;IOW    IOCC                       ;关闭集电极开路
            ;MOV    A,@0XFF
            ;IOW    IOCD                       ;关上拉
            MOV    A,@0X0                    ;0X80程序调好再使能
            IOW    IOCE                       ;使能看门狗,P60为普通I/O口
            MOV    A,@1
            IOW    IOCF                       ;允许TCC中断
            
            CLR    TCC
            CLR    FTIMES
            MOV    A,@7
            MOV    R250MS,A
            MOV    A,@2
            MOV    R66MS,A
            MOV    A,@10
            MOV    R200MS,A
            CLR    RNTSTC4   
            MOV    A,@2
            MOV    R05S,A
            MOV    A,@120
            MOV    R1M,A
            MOV    A,@30
            MOV    R30M,A
            MOV    R15S,A  
            CLR    FLAG 
            clr    flag1
            MOV    A,@15  ;默认时间温度设置
            MOV    STEMP,A
            MOV    A,@80
            MOV    STEMP,A
            ENI 
            ;===================================================================================
;上电开始,初始化LCD,并清除所有显示单元
;===================================================================================
CLRLCD:
	          BS     6,CS
			  BS     6,WR
	   	   BS     6,DATA
	          MOV    A,@4
	          MOV    RX,A		;COMMAND MODE
	          CALL   SENDMODE
              MOV    A,@1
	          MOV    RX,A	;SYS EN
	          CALL   SENDCOMMAND
	          MOV    A,@3
		      MOV    RX,A	;LCD ON
		      CALL   SENDCOMMAND
	          MOV    A,@0X29
	          MOV    RX,A	;BIAS 1/3,4 COMMONS
	          CALL   SENDCOMMAND
	
	          MOV    A,@5
	          MOV    RX,A
	          CALL   SENDMODE
	          MOV    A,@0X0
	          MOV    RX,A
	          CALL   SENDADDRESS
	          MOV    A,@12
	          MOV    DCNT2,A
	          MOV    A,@D0
	          MOV    R4,A
NEXT1:
	          MOV    A,@0
	          MOV    RX,A
	          MOV    R0,A
	          INC    R4
	          CALL   SENDDATA
	          DJZ    DCNT2 
	          JMP    NEXT1
	          RET



;===============================================================================================
;没66MS作一次AD转换,按键检测,10K,NTS轮讯
;===============================================================================================
MAIN_AD:    JBS       FLAG,F33MS
            RET
            BC        FLAG,F33MS
          
            DJZ       R66MS
            RET
            MOV       A,@2
            MOV       R66MS,A
            
            MOV       A,ADID
            XOR       A,@0
            JBS       R3,Z
            JMP       MA10K
            
            MOV       A,@1
            MOV       ADID,A
            CALL      ADKEY
            RET
            
    MA10K:  MOV       A,ADID
            XOR       A,@1
            JBS       R3,Z
            JMP       MADNTS
            MOV       A,@2
            MOV       ADID,A
            CALL      AD10K
            RET
            
    MADNTS: CALL      ADNTS
            MOV       A,@0
            MOV       ADID,A
            RET



             
                        
;==================================================================================================
;利用AD转换做按键检测
;==================================================================================================                        
ADKEY:        DISI                           ;关中断
              MOV     A,TCC
              MOV     RTCC,A
              ;CLR     TCC                    ;清TCC,应放在充电之前,放在这里起修正作用,
              MOV     A,@0B00000001           ;设置总允许中断,内部记数1:4
              CONTW  
              MOV     A,@0B00000110
              IOW     P5       ;P50,3输出,其他输入
              ;nop             ;休整TCC,使TCC的高字节刚好是键值1~7
              ;nop
              ;nop
              ;nop
              ;BC      P5,KEY
              CLR     TCC 
              BS      P5,KEY
              JBS     P5,R10K
              JMP     $-1
              MOV     A,TCC

              swapa   tcc
              and     a,@0xf
              sub     a,tcc
              ;MOV     A,TCC
              
              MOV     RKEYTC,A
              
              CALL    FANGDIAN0
              
              MOV     A,@0X14-5  ;80+5>TCC>14-5有按键
              SUB     A,RKEYTC
              JBS     R3,C
              JMP     DKEYRET
              MOV     A,@0X90;7C+7
              SUB     A,RKEYTC
              JBC     R3,C
              JMP     DKEYRET
              
              SWAPA   RKEYTC    
              AND     A,@0X0F
              MOV     B,A
              BC      R3,C
              RLC     B    ;高位*2
              DEC     B    ;再减去2
              DEC     B
              BS      B,0;保证b!=0
              
              DEC     RKEYTC
              DJZ     B
              JMP     $-2
              ;MOV     A,RKEYTC ;没必要保护
              ;SUB     A,@0X7F
              ;JBC     R3,C
              ;JMP     DETKEY
              ;MOV     A,@0X7F
              ;MOV     RKEYTC,A
              
  DETKEY:     SWAPA   RKEYTC
              AND     A,@0XF
              MOV     RKEYTC,A;键值
              

              jmp     readkey
            
;==================================================================================================
;利用AD转换做10K标准电阻检测
;==================================================================================================                        
AD10K:        DISI                           ;关中断
              MOV     A,TCC
              MOV     RTCC,A
              MOV     A,@0B00000001           ;设置总允许中断,内部记数1:4
              CONTW  
              
              BC      P5,2   ;放电
              MOV     A,@0B11110011
              IOW     P5      ;P52,3输出,其他输入
              BC      P5,R10K
              CLR     TCC
              BS      P5,R10K
              JBS     P5,NTS
              JMP     $-1
              MOV     A,TCC
              MOV     B,A
            
              CALL    FANGDIAN0
              
              MOV     A,R10KTC3
              MOV     R10KTC4,A
              MOV     A,R10KTC2
              MOV     R10KTC3,A
              MOV     A,R10KTC1
              MOV     R10KTC2,A
              MOV     A,B
              MOV     R10KTC1,A
              MOV     A,RTCC
              MOV     TCC,A              
  D10KRET:    RET                
;==================================================================================================
;利用AD转换做热敏电阻检测
;==================================================================================================                        

ADNTS:        DISI                           ;关中断
              MOV     A,TCC
              MOV     RTCC,A
              MOV     A,@0B00000001           ;设置总允许中断,内部记数1:4
              CONTW  
              
              MOV      A,@0B11110101
              IOW     P5      ;P51,3输出,其他输入
              BC      P5,NTS
              CLR     TCC
              BS      P5,NTS
              JBS     P5,R10K
              JMP     $-1
              MOV     A,TCC               ;程序可以测到27K左右,TCC益处
              MOV     B,A
              
              CALL    FANGDIAN0
              
              MOV     A,RNTSTC3
              MOV     RNTSTC4,A
              MOV     A,RNTSTC2
              MOV     RNTSTC3,A
              MOV     A,RNTSTC1
              MOV     RNTSTC2,A
              MOV     A,B
              MOV     RNTSTC1,A
              MOV     A,RTCC
              MOV     TCC,A
              
;==========================================================================================
PROCESS:    MOV      A,RNTSTC4       ;测试到4个以后就做处理,程序开始要做清零初始化
            JBC      R3,Z
            RET 
            MOV      A,@RNTSTC1
            MOV      R4,A
            CALL     AVERAGE
            MOV      A,R_ADL
            MOV      DIV1,A
            
            MOV      A,@10
            MOV      DCNT1,A
            CLR      DIV2

⌨️ 快捷键说明

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