📄 adc1.asm
字号:
list p=16f877A
include "p16f877A.inc"
W_Temp equ 0x20
STATUS_T equ 0x21
AD_Status equ 0x23
Delay1 equ 0x24
Delay2 equ 0X25
Dey equ 0x26
org 0x0000
nop
goto MainLine
;*******************************************
;interupt
org 0x04
movwf W_Temp
swapf STATUS,W
movwf STATUS_T
bcf PIR1,ADIF
movf ADRESH,W
movwf AD_Status
movlw 0FH
movwf Dey
Loop1
decfsz Dey,1
goto Loop1
bsf ADCON0,2
swapf STATUS_T,W
movwf STATUS
swapf W_Temp,f
swapf W_Temp,W
retfie
;********************************************
;main programe
MainLine
call Initial
MainLoop
movf AD_Status,W
sublw 0E6H
btfss STATUS,C
goto S5
movf AD_Status,W
sublw 0B3H
btfss STATUS,C
goto S4
movf AD_Status,W
sublw 80H
btfss STATUS,C
goto S3
movf AD_Status,W
sublw 4DH
btfss STATUS,C
goto S2
movf AD_Status,W
sublw 1AH
btfss STATUS,C
goto S1
goto S0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
S0
movlw 11H
goto output
S1
movlw 7DH
goto output
S2
movlw 23H
goto output
S3
movlw 29H
goto output
S4
movlw 4DH
goto output
S5
movlw 89H
output
banksel PORTC
movwf PORTC
call LoopTime
movlw 0FH
subwf AD_Status,0
btfsc STATUS,0
call Display1
goto MainLoop
;*******************************************
;initial
Initial
banksel TRISC
clrf TRISC
banksel PORTC
clrf PORTC
banksel PIE1
bsf PIE1,ADIE
bsf TRISA,0
banksel ADCON1
movlw B'00000000'
movwf ADCON1
banksel ADCON0
movlw B'10000001'
movwf ADCON0
banksel INTCON
bsf INTCON,GIE
bsf INTCON,PEIE
bsf ADCON0,2
return
;********************************************
;alarm
Display1
movlw 0fh
banksel PORTD
movwf PORTD
call LoopTime
movwf PORTD
call LoopTime
return
;********************************************
;delay
LoopTime
movlw 0XFF
movwf Delay1
clrf Delay2
DelayLoop
decfsz Delay2,F
goto DelayLoop
decfsz Delay1,F
goto DelayLoop
return
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -