📄 all.txt
字号:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;实现功能和设计思路
;1. 文件名〈07_12_13〉
;2. 文件路径〈桌面〉
;3. 时间07_12_13
;4. 功能
;将可调电压RN4模拟输入的信号通过A/D转换在RC1-RC4口输出
;将VIN+和VIN—的值通过A/D转换后,相比较,将其结果通过COUT输出
;A/D转换后的结果存放在两个地址内,值相减,如果大于就输出1,小于就输出0
;如果CIN+〉VIN-则COUT输出为1
;如果CIN+〈VIN-则COUT输出为0
;5. 地址使用一览表
; CON_1 ORG 0X20(放CIN+A/D的值)
; con_2 org 0x21(放CIN-A/D的值)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#include<p16f676.inc>
__config 0x31b4 ;看门狗关;内部RC振荡,RA4/RA5做I/O,MCLR脚做复位
AD_H equ 0x21
scaler equ 0x22
org 00h
nop
Main
call INitial ;掉用子程序
call AD_Convert ;RN4 A/D转换后将ADSERH中的低5位值分别给RC1-RC2输出
call display
call LMP
GOTO Main
INitial
BANKSEL ANSEL
movlw 00h
movwf ANSEL
banksel TRISC
movlw 01h
MOVWF TRISC
banksel ADCON0
MOVLW 13h ;AN4 A/D 输入设置
movwf ADCON0
movlw 04H
movwf scaler
bsf PORTC,4
bsf PORTC,5
banksel CMCON
movlw 07h
movwf CMCON
banksel TRISA
bcf TRISA,2
bsf TRISA,0
bsf TRISA,1
return
AD_Convert
banksel ADCON0
bsf ADCON0,GO ;开始A/D转换
WAIT
BTFSC ADCON0,GO ;检查A/D转换是否完成
GOTO WAIT ;否,继续检查
MOVF ADRESH,w ;ADRESH->W
movwf AD_H ;放到AD_0寄存器中
return
display
btfss AD_H,5 ;AD_0寄存器中2位是否=0,
GOTO ADRESH_1 ;是跳到ADRSH_1
bsf PORTC,1 ;NO,则PORTC=1
fz_data2
btfss AD_H,6 ;AD_0寄存器中3位是否=0,
GOTO ADRESH_2 ;Y跳到ADRSH_2
bsf PORTC,2 ;N,则PORTC=2
fz_data3
btfss AD_H,7 ;AD_0寄存器中4位是否=0,
GOTO ADRESH_3 ;Y跳到ADRSH_3
bsf PORTC,3 ;N,则PORTC=3
RETURN
ADRESH_1
BCF PORTC,1
goto fz_data2
ADRESH_2
BCF PORTC,2
goto fz_data3
ADRESH_3
BCF PORTC,3
return
LMP
banksel PORTA
btfss PORTA,0 ;判断RA0是不是等于0,等于0跳到
GOTO LMP_1
BSF PORTA,2 ;否,RA2=1
return
LMP_1
btfsc PORTA,1 ;判断RA1是不是等于1,等于1跳到
GOTO LMP_2
bsf PORTA,2 ;否,RA2=1
return
LMP_2
bcf PORTA,2 ;否,RA2=0
return
END
;looptime ;延时10MS
; btfss scaler,7
; goto looptime
; movlw 5
; addwf scaler,f
; return
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -