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

📄 nuanfeng.asm

📁 暖风机的相关程序及原理图,调试成功,希望对大家有用
💻 ASM
📖 第 1 页 / 共 4 页
字号:
            CLR      DIV3
            
    PRO:    BC       R3,C         ;*1024,标准电阻10K,相当于放大102.4倍
            RLC      DIV1
            RLC      DIV2
            RLC      DIV3
            DJZ      DCNT1
            JMP      PRO
            
            ;MOV      A,@10
            ;MOV      CHENG1,A
            ;CALL     MULTIPLICATION
            MOV      A,@R10KTC1
            MOV      R4,A
            CALL     AVERAGE
            MOV      A,R_ADL
            MOV      CHU1,A
            CALL     DIVISION
            BC       SHANG1,0 ;防止比较时候益处,将表格最大值置为ff           

            CLR      DCNT1
PRT00:      MOV      A,SHANG2
            SUB      A,@5    ;高位与5比较,
            JBS      R3,C
            JMP      PRT6
  PTRXX:    MOV      A,SHANG2
            JMP      PRTTAB
            
            

PRT0:       MOV      A,DCNT1
            CALL     TEMPTAB0  ;从小到大排列
            JMP      PRTXX
PRT1:       MOV      A,DCNT1
            CALL     TEMPTAB1  ;从小到大排列
            JMP      PRTXX
PRT2:       MOV      A,DCNT1
            CALL     TEMPTAB2  ;从小到大排列
            JMP      PRTXX
PRT3:       MOV      A,DCNT1
            CALL     TEMPTAB3  ;从小到大排列
            JMP      PRTXX
PRT4:       MOV      A,DCNT1
            CALL     TEMPTAB4  ;从小到大排列
            JMP      PRTXX
PRT5:       MOV      A,DCNT1
            CALL     TEMPTAB5  ;从小到大排列
            JMP      PRTXX
PRT7:
PRT6:       MOV      A,@15      ;小于最小值,则直接给15度
            MOV      TEMP,A
            RET
            
            
  PRTXX:    SUB      A,SHANG1
            JBC      R3,C
            JMP      PRDAYU
            MOV      A,SHANG2
            CALL     TEMPH
            MOV      TEMP,A
            MOV      A,DCNT1
            SUB      TEMP,A
            
            SUB      A,STEMP      ;设置温度到
            JBC      R3,C
            RET
            BC       P6,JDQ1      ;温度则关加热继电器???是不是这样处理
            BC       P6,JDQ2
            BC       FLAG1,FKO
            RET
              
            
 PRDAYU:    INC     DCNT1
            JMP     PTRXX           
                         
            
            
                   
;=========================================================================
;取平均数,将采集到的4个电压值平均,
;入口:开始地址,给R4,出口R_ADL(R_ADH计算中,暂存高位)中
;========================================================================           
AVERAGE:   CLR    R_ADL
           CLR    R_ADH
           MOV    A,@4
           MOV    DCNT1,A
           
  A0:      MOV    A,R0
           ADD    R_ADL,A
           JBS    R3,C
           JMP    A1
           MOV    A,@1
           ADD    R_ADH,A
  A1:      INC    R4
           DJZ    DCNT1
           JMP    A0
           RRC    R_ADH
           RRC    R_ADL
           RRC    R_ADH
           RRC    R_ADL
           RET 
 
;======================================================================================
;被除数是DIV3(HIGH),DIV2,DIV1(LOW)
;除数是CHU1
;商是SHANG3(HIGH),SHANG2,SHANG1(LOW)
;余数是YU
;======================================================================================
DIVISION:
	CLR SHANG1
	CLR SHANG2
;	CLR SHANG3                 ;为见小RAM,将高位去掉
	CLR YU
	MOV A,@24
	MOV DIV_CNT,A
DIV_L:
	RLC DIV1
	RLC DIV2
	RLC DIV3
	RLC YU
	JBS 3,0
	JMP YU_C_0
	MOV A,CHU1
	SUB YU,A
	BS 3,0	;YU>CHU1
	JMP DIV_SHIFT
YU_C_0:
	MOV A,CHU1
	SUB A,YU
	JBC 3,0
	MOV YU,A	;YU>CHU1
DIV_SHIFT:
	RLC SHANG1
	RLC SHANG2
	;RLC SHANG3
	DJZ DIV_CNT
	JMP DIV_L
	RET   
;====================================================================
;将电容上的残留的电压放掉
;====================================================================
FANGDIAN0:    MOV    A,@0B00000110                ;1:128:, 
              CONTW 
              CLR    RF
              ENI
 FANGDIAN:    CLRA
              IOW     P5
 DELAY2:             
 DELAY1:      MOV     A,@8
              AND     P5,A
              RET
              
;=============================================================================================
;红外解码,50MS内没有读到,则返回,接收到的用户码是00FF,只要读数据码就能区分按键
;=============================================================================================
HW_TEST:      BC      FLAG,FHWKEY         ;红外按键清除

  /*            MOV     A,@50               ;50MS没有检测到,则退出
  ;            MOV     DCNT1,A
  ;  HW50MS:   MOV     A,@200              
  ;            MOV     DCNT2,A
  ;            
  ;  HW50MS1:  JBS     P6,REM   ;5
  ;            JMP     ISHEADL
  ;            DJZ     DCNT2
  ;            JMP     HW50MS1
  ;            DJZ     DCNT1
  ;            JMP     HW50MS
  ;            RET 
  */
              MOV     A,@0X80
              IOW     P6     ;设为输入
              ;NOP
              ;NOP
              CALL   DELAY2
              JBC    P6,REM
              JMP    HW_RET            
                           
   
   ISHEADL:   MOV     A,@8           ;等待8MS接收底电平           
              MOV     DCNT1,A
      HW8MS:  MOV     A,@200
              MOV     DCNT2,A
              
      HW8MS1: JBC     P6,REM
              JMP     HW_RET                    ;头L电平过短,小于8MS
              DJZ     DCNT2
              JMP     HW8MS1
              DJZ     DCNT1
              JMP     HW8MS          
             
              MOV     A,@2
              MOV     DCNT1,A
      HW2MS:  MOV     A,@200
              MOV     DCNT2,A
              
      HW2MS1: JBC     P6,REM
              JMP     ISHEADH
              DJZ     DCNT2
              JMP     HW2MS1
              DJZ     DCNT1
              JMP     HW2MS 
              JMP     HW_RET                  ;4.5MS高电平没有到来
              
   ISHEADH:   MOV     A,@4
              MOV     DCNT1,A
      HW4MS:  MOV     A,@200
              MOV     DCNT2,A
             
      HW4MS1: JBS     P6,REM
              JMP     HW_RET                  ;4.5MSH电平国过短
              DJZ     DCNT2
              JMP     HW4MS1
              DJZ     DCNT1
              JMP     HW4MS 
              
              
              MOV     A,@3
              MOV     B3,A
              MOV     A,@8
              MOV     B8,A
              MOV     A,@0X30
              MOV     R4,A
              
              JBS     P6,REM       ;等待头高电平结束    
              JMP     $+2
              JMP     $-2
    HEADL:    JBS     P6,REM       ;忽略底电平,根据高电平判断数据
              JMP     $-1          ;__|~~|__|~~~~|
              
              CLR     DCNT1
             
              
     HEADH:   ;NOP                  ;=560US为0   ,=1560us为1
              ;NOP
              ;NOP
              ;NOP
              ;NOP
              ;NOP
              CALL   DELAY1         
              INC    DCNT1
              JBC    P6,REM
              JMP    HEADH
              MOV    A,DCNT1
              SUB    A,@100
              JBS    R3,C
              JMP    IS1
         IS0: BC     R3,C
              RLC    DCNT2
              JMP    IS10   
              
         IS1: BS     R3,C
              RLC    DCNT2
              
         IS10:DJZ    B8
              JMP    HEADL
              MOV    A,@8
              MOV    B8,A
              ;MOV    A,DCNT2
              ;MOV    R0,A
              ;INC    R4
              DJZ    B3
              JMP    HEADL
                        
              CLR    DCNT1
  N2:         MOV    A,DCNT1
              CALL   REMOTETAB
              XOR    A,DCNT2
              JBS    R3,Z
              JMP    N1
              
              MOV    A,DCNT1
              MOV    RKEYTC,A
              XOR    A,@3
              JBS    R3,Z
              JMP    READKEY
              JBS    FLAG1,FTIME
              JMP    READKEY
              MOV    A,@4
              MOV    RKEYTC,A
              JMP    READKEY
                  
              
  N1:         INC    DCNT1
              MOV    A,DCNT1
              SUB    A,@7
              JBS    R3,C
              JMP    HW_RET            ;有借位,错
              JMP    N2
HW_RET:       CLRA
              IOW    P6
              RET               ;全部设为输出            
;=============================================================================
;每次发送完,WR为高电平,CS保持底电平,WR上升沿有效,CS底电平有效
;每次模式改变,或不连续读写时,调用此程序
;=============================================================================	
SENDMODE:
        BS     6,CS
	    ;NOP
	    ;NOP
	    CALL   DELAY2
	    BC     6,CS
	    CALL   DELAY2
	    ;NOP
	    ;NOP
	    MOV    A,@3
	    MOV    DCNT1,A	
SENDJ1:
	    JBS    RX,2
	    JMP    SM1
	    BS     6,DATA
	    JMP    SM2
SM1:
	    BC     6,DATA
SM2:
	    BC     6,WR
	    ;NOP
	    ;NOP
	    CALL   DELAY2
	    BS     6,WR
	    RLC    RX
	    DJZ    DCNT1
	    JMP    SENDJ1
	    RET		
;=============================================================================
;每次发送完,WR为高电平,CS保持底电平,WR上升沿有效,CS底电平有效
;=============================================================================
SENDCOMMAND:		
	    MOV     A,@8
	    MOV     DCNT1,A
J2:
	    JBS     RX,7
	    JMP     SC1
		BS      6,DATA
	    JMP     SC2
SC1:
		BC      6,DATA
SC2:
		BC      6,WR
		;NOP
		;NOP
		CALL   DELAY2
		BS      6,WR
		RLC     RX
		DJZ     DCNT1
		JMP     J2
		BC      6,DATA      ;发送最后1位X
		BC      6,WR
		;NOP
		;NOP
		CALL   DELAY2
		BS 6,   WR
		RET
;=============================================================================
;每次发送完,WR为高电平,CS保持底电平,WR上升沿有效,CS底电平有效
;=============================================================================
SENDADDRESS:
		MOV     A,@6
		MOV     DCNT1,A
J3:
		JBS     RX,5
		JMP     SA1
		BS      6,DATA
		JMP     SA2
SA1:
		BC      6,DATA
SA2: 
		BC      6,WR
		;NOP
		;NOP
		CALL   DELAY2
		BS      6,WR
		RLC     RX
		DJZ     DCNT1
		JMP     J3
		RET  
;=============================================================================
;每次发送完,WR为高电平,CS保持底电平,WR上升沿有效,CS底电平有效
;=============================================================================
SENDDATA:
		MOV    A,@4
		MOV    DCNT1,A
J4:
		JBS    RX,0

⌨️ 快捷键说明

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