📄 cdj-1-73.asm
字号:
list p=16f873A ; list directive to define processor
;_config 0x01
#include P16f873A.inc ; processor specific variable definitions
;**********************************************************************
__CONFIG _PWRTE_ON & _WDT_OFF & _HS_OSC &_BODEN_OFF &_CP_ALL
JS1 EQU 0X5E
JS2 EQU 0X5F
JS3 EQU 0X51
R3 EQU 0x39
R4 EQU 0x3A
R1 EQU 0x3B
R5 EQU 0x3C
R0 EQU 0x20
R2 EQU 0X2B
SR1 EQU 0X6E
SR2 EQU 0X6F
AD0TEMP EQU 0x30
AD1TEMP EQU 0x31
AD0TEMPB EQU 0x32
AD1TEMPB EQU 0x33
AD0TEMPA EQU 0x44
AD1TEMPA EQU 0x45
JRS1 EQU 0X78
JRS2 EQU 0X79
TEMP EQU 0X21
CCPD EQU 0X22
CCPE EQU 0X23
CCPD1 EQU 0X24
CCPE1 EQU 0X25
ORG 0x00
clrf PCLATH ; ensure page bits are claared
GOTO MAIN
ORG 0X10
MAIN
BCF STATUS,RP1
BSF STATUS,RP0
MOVLW 0x02
MOVWF PCON
MOVLW 0x87
MOVWF OPTION_REG
MOVLW 0x02
MOVWF ADCON1
MOVLW 0xFF
MOVWF TRISA
MOVLW 0xFF
MOVWF TRISB
MOVLW 0x00
MOVWF TRISC
MOVLW 0X3D ;T2CON,1,0=00,1:1,16KHZ
MOVWF PR2
; BSF PIE1,CCP1IF
BCF STATUS,RP0
; BSF INTCON,GIE
MOVLW 0X0F
MOVWF CCP1CON
; CLRF CCPR1L
CLRF CCPD
CLRF CCPE
CLRF TEMP
CLRF CCPD1
CLRF CCPE1
CLRF AD0TEMP
CLRF AD1TEMP
CLRF AD0TEMPB
CLRF AD1TEMPB
CLRF AD0TEMPA
CLRF AD1TEMPA
CLRF JRS1
CLRF JRS2
MOVLW 0X04
MOVWF T2CON
MOVLW 0xEF
MOVWF PORTA
MOVLW 0XFF
MOVWF PORTB
MOVLW 0X00
MOVWF PORTC
MOVLW 0xFF
MOVWF TMR0
MOVLW 0x31
MOVWF T1CON
CLRF SR1
CLRF SR2
MOVLW 0XFF
MOVWF CCPR1L
PROG_BEG
MOVLW 0X04
MOVWF T2CON
BTFSC PORTC,0
GOTO JX2
MOVLW 0XFF
MOVWF CCPR1L
BCF PORTC,3
BCF PORTC,4
BCF PORTC,7
BCF PORTC,6
JX2
BTFSC PORTB,7
GOTO ZY5
CALL DELAY
CALL DELAY
BTFSC PORTB,7
GOTO ZY5
GOTO GO1
GO1
BTFSC PORTB,7
GOTO GO2
GOTO GO1
GO2
BTFSC R3,0 ;PORTC,0
GOTO ZY3
BSF R3,0 ;PORTC,0
GOTO ZY2
ZY3
BCF R3,0 ; PORTC,0
BCF PORTC,0
GOTO ZY4
NOP
ZY2
BSF PORTC,4
BSF PORTC,5
BSF PORTC,6
BSF PORTC,7
MOVLW 0xFF
MOVWF R5
WAIT1
MOVLW 0XFF
MOVWF TMR0
WAIT:
BTFSS INTCON,2
GOTO WAIT
CALL DELAY2
DECFSZ R5
GOTO WAIT1
CALL DELAY2
BSF PORTC,4
BSF PORTC,0
BCF PORTC,5
BCF PORTC,6
BCF PORTC,7
BSF INTCON,2
MOVLW 0X3F ;3D
MOVWF CCPR1L
GOTO ZY4
NOP
NOP
ZY4
NOP
BTFSC PORTC,0
GOTO ZY1
ZYRE
BCF PORTC,3
; MOVLW 0XFF
; MOVWF CCPR1L
GOTO PROG_BEG
ZY5
NOP
BTFSS PORTC,0
GOTO ZYRE
GOTO AD_CHG1
ZY1
CALL DELAY1
CALL DELAY1
CALL DELAY1
BSF PORTC,3
CALL DELAY1
BSF T2CON,TMR2ON
NOP
NOP
AD_CHG1
CALL DELAY
MOVLW 0xC1
MOVWF ADCON0
CALL DELAY
BSF ADCON0,GO
AD_WAIT1
CALL DELAY
BTFSC ADCON0,GO
GOTO AD_WAIT1
U0_IN
MOVFW ADRESH
ADDWF AD0TEMPA,1
BTFSS STATUS,C
GOTO AD_SET0N
RRF AD0TEMPA,1
BSF AD0TEMPA,7
GOTO U0_END
NOP
AD_SET0N
RRF AD0TEMPA,1
BCF AD0TEMPA,7
U0_END
MOVFW AD0TEMPA
MOVWF JRS1
NOP
CALL DELAY
CALL DELAY
MOVFW JRS1
MOVWF AD0TEMP
AD_CHG2
CALL DELAY
MOVLW 0xC9
MOVWF ADCON0
CALL DELAY
BSF ADCON0,GO
AD_WAIT2
CALL DELAY
BTFSC ADCON0,GO
GOTO AD_WAIT2
MOVFW ADRESH
U1_IN
MOVFW ADRESH
ADDWF AD1TEMPA,1
BTFSS STATUS,C
GOTO AD_SET1N
RRF AD1TEMPA,1
BSF AD1TEMPA,7
GOTO U1_END
NOP
AD_SET1N
RRF AD1TEMPA,1
BCF AD1TEMPA,7
U1_END
MOVFW AD1TEMPA
MOVWF JRS2
NOP
CALL DELAY
CALL DELAY
MOVFW JRS2
MOVWF AD1TEMP
BTFSS PORTC,0
GOTO PROG_BEG
CALL DELAY
BTFSC PORTB,5
GOTO DDK
BSF PORTC,5
NEXT1
BCF PORTC,0
BCF PORTC,4
BCF PORTC,6
BCF PORTC,7
BCF PORTC,3
GOTO PROG_BEG
DDK
MOVFW AD1TEMP ;3v
SUBLW 0X99
BTFSC STATUS,C
GOTO IOD
GOTO NEXT3
IOD
MOVFW AD1TEMP
SUBLW 0X7F ;2.5v
BTFSS STATUS,C
GOTO IBD1
GOTO VOD
IBD1
BTFSS PORTC,0
GOTO PROG_BEG
BSF PORTC,6
BCF PORTC,7
BSF PORTC,4
GOTO NEXTZ
MOVFW AD0TEMP
SUBLW 0X99
BTFSC STATUS,C
GOTO NEXTZ
NEXT3
BSF PORTC,5
BCF PORTC,4
BCF PORTC,0
BCF PORTC,7
BCF PORTC,6
BCF PORTC,3
GOTO NEXTZ
VOD
BTFSS PORTC,0
GOTO PROG_BEG
BSF PORTC,4
BSF PORTC,3
MOVFW AD0TEMP
SUBLW 0X33
BTFSS STATUS,C
GOTO NEXTZ
BTFSS PORTC,0
GOTO PROG_BEG
BCF PORTC,6
BSF PORTC,7
BSF PORTC,4
NEXTZ
MOVLW 0X0F
MOVWF CCP1CON
BSF T2CON,TMR2ON
NOP
BTFSS PIR1,TMR2IF
GOTO PROG_BEG
CALL ZD
GOTO PROG_BEG
DELAY1
MOVLW 0xFF
MOVLW JS1
MOVWF JS2
DELAY_0
MOVLW 0XFF
MOVWF JS3
DELAY_2
DECFSZ JS3
GOTO DELAY_2
DECFSZ JS1
GOTO DELAY_0
DELAY_3
DECFSZ JS2
GOTO DELAY_3
return
DELAY2
MOVLW 0X7F
MOVWF JS2
DELAY_6
MOVLW 0X0F
MOVWF JS1
DELAY_5
DECFSZ JS1,1
GOTO DELAY_5
DECFSZ JS2,1
GOTO DELAY_6
RETURN
DELAY3
MOVLW 0X7F
MOVWF JS2
DELAY_8
MOVLW 0XFF
MOVWF JS1
DELAY_7
DECFSZ JS1,1
GOTO DELAY_7
DECFSZ JS2,1
GOTO DELAY_8
RETURN
DELAY
MOVLW 0xFF
MOVWF R0
DELAY_1
DECFSZ R0,1
GOTO DELAY_1
return
ZD
BCF PIR1,TMR2IF ;VD>3V?
MOVFW AD1TEMP
SUBLW 0X99
BTFSC STATUS,C
GOTO ZD1 ;<3V
GOTO NEXT3 ;>3V
ZD1
MOVFW AD0TEMP ;ID>2.5V?
SUBLW 0X99
BTFSC STATUS,C
GOTO ZD2 ;<2.5V
GOTO NEXT3 ;>2.5V,OFF
ZD2
MOVFW AD1TEMP ;VD>2.5V?
SUBLW 0X7F
BTFSS STATUS,C
GOTO DDZ1 ;>2.5V
GOTO DZ3 ;<2.5V
DZ3
MOVFW AD0TEMP
SUBLW 0X33 ;1V
BTFSC STATUS,C
GOTO DE2
GOTO DDZ
DDZ
MOVFW AD0TEMP
SUBLW 0X32
BTFSC STATUS,C
GOTO RET1
MOVFW AD0TEMP
SUBLW 0X34
BTFSC STATUS,C
GOTO RET1
DDZ1
MOVFW CCPR1L
SUBLW 0X3D
BTFSS STATUS,C
GOTO RETD
INCF CCPR1L
MOVFW CCPR1L
MOVWF CCPD
CALL DELAY3
GOTO RET1 ;>
DE2
MOVFW AD0TEMP
SUBLW 0X34
BTFSS STATUS,C
GOTO RET1
MOVFW AD0TEMP
SUBLW 0X32
BTFSS STATUS,C
GOTO RET1
MOVFW CCPR1L
SUBLW 0X01
BTFSC STATUS,C
GOTO RETE
DECF CCPR1L ;-1
MOVFW CCPR1L
MOVWF CCPD
CALL DELAY3
GOTO RET1
RETD
MOVLW 0X3D
MOVWF CCPR1L
GOTO RET
RETE
MOVLW 0X02
MOVWF CCPR1L
GOTO RET
RET1
MOVFW CCPD
MOVWF CCPR1L
;<
RET
RETURN
NOP
NOP
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -