您当前的位置:五五电子网电子知识单片机-工控设备PIC单片机PIC16C711 直流电压表汇编程序 正文
PIC16C711 直流电压表汇编程序

PIC16C711 直流电压表汇编程序

点击数:7918 次   录入时间:03-04 11:49:50   整理:http://www.55dianzi.com   PIC单片机
定义用户寄存器
WEI1 EQU H’0C’ ;BIT0=MODS:选择模式位 0:模式1 1:模式2
;BIT1=BREK:断路判别位 0:无断路 1:有断路
;BIT2=
;BIT3=
;BIT4=
;BIT5=慢响
;BIT6=快响
;BIT7=长响
WEI2 EQU H’0D’ ;“百位值运算”的启始值 
WEI3 EQU H’0E’ ;“十位值运算”的启始值
WEI4 EQU H’0F’ ;个位值
WEI5 EQU H’10’ ;百位值
WEI6 EQU H’11’ ;十位值
WEI7 EQU H’12’ ;
WEI8 EQU H’13’ ;
WEI9 EQU H’14’ ;
WEIA EQU H’15’ ; 
WEIB EQU H’16’
WEIC EQU H’17’
WEID EQU H’18’
WEIE EQU H’19’
WEIF EQU H’1A’
WEIG EQU H’1B’ 
WEIH EQU H’1C’
WEII EQU H’1D’ 
CHECK EQU H’7’
DP EQU H’1’
AD EQU H’0’
BUZZER EQU H’3’
R EQU H’2’
L EQU H’4’
;************************************************************************
;矢量地址
ORG H’00’ ;复位矢量
GOTO MAIN
ORG H’04’ ;中断矢量
NOP 
GOTO INTER 
;************************************************************************
;数码值
TABLE: 
ADDWF PCL,F ;
RETLW B’01000000’ ;“0”值
RETLW B’01111001’ ;“1”值
RETLW B’00100100’ ;“2”值
RETLW B’00110000’ ;“3”值
RETLW B’00011001’ ;“4”值
RETLW B’00010010’ ;“5”值
RETLW B’00000010’ ;“6”值
RETLW B’01011000’ ;“7”值
RETLW B’00000000’ ;“8”值
RETLW B’00010000’ ;“9”值
;------------------------------------------------------------------------
;清除寄存器WEI1-WEIG 
MAIN: 
CLRF WEI1 ;
CLRF WEI2 ;
CLRF WEI3 ;
CLRF WEI4 ;
CLRF WEI5 ;
CLRF WEI6 ;
CLRF WEI7 ;
CLRF WEI8 ;
CLRF WEI9 ;
CLRF WEIA ;
CLRF WEIB ;
CLRF WEIC ;
CLRF WEID ;
CLRF WEIE ;
CLRF WEIF ;
CLRF WEIG ; 
CLRF WEIH ;
CLRF WEII ; 
BSF STATUS,RP0 ;
BCF OPTION_REG,NOT_RBPU
BCF STATUS,RP0 ;
MOV F PORTB,1 ;
BTFSS PORTB,1 ;
BSF WEI1,0 ;
;------------------------------------------------------------------------ 
;设置A/D通道及A/D结构 
BSF STATUS,RP0 ; 
MOV LW B’00000010’ ;设置一个“A/D口”
MOV WF ADCON1 ;参考电压:工作电压5V 
MOV LW B’10000000’ ;
MOV WF TRISB ;
MOV LW B’00000001’ ;
MOV WF TRISA ;
MOV LW B’10000111’ ;
MOV WF OPTION_REG ;
MOV LW B’10100000’ ;
MOV WF INTCON ; 
;----------------------------------------------------------------------- 
;设置端口“输入/输出”并设置初始状态 
BCF STATUS,RP0 ;
MOV LW B’01000000’ ;设置A/D通道:AN0
MOV WF ADCON0 ;选用内部1:8时钟振荡
MOV LW B’01111111’ ;
MOV WF PORTB ;
MOV LW B’00010110’ ;
MOV WF PORTA ;
MOV LW D’252’ ;
MOV WF TMR0 ;设置TMR0初始值 
;------------------------------------------------------------------------ 
;选择模式
BTFSC WEI1,0 ;判断“模式开关”是否闭合
GOTO MODLE2 ;“模式开关”闭合,则进入“模式2”
GOTO MODLE1 ;“模式开关”断开,则进入“模式1”
;------------------------------------------------------------------------
;“模式1”初始化
MODLE1: 
MOV F PORTB,1 ;
BTFSS PORTB,CHECK ;判断是否有断路
GOTO $+7 ;
BSF WEI1,1 ;
BSF WEI1,6 ;有断路:蜂鸣器快响并且“无显示”延时3秒
BCF WEI1,5 ;
BCF WEI1,7 ;
CALL DELAY3S ;无断路:“无显示”延时3秒
GOTO START ; 
CALL DELAY3S ; 
GOTO START ;
;------------------------------------------------------------------------
;“模式2”初始化 检测数码管各段,蜂鸣器“长响 ”
MODLE2: 
BSF WEI1,0 ;设置“模式选择位”
BSF WEI1,7 ;打开蜂鸣器“长响 ”
BCF WEI1,5 ;
BCF WEI1,6 ;
BCF STATUS,C ;设置“进位标志位” 
MOV LW B’11111111’ ; 
MOV WF WEI7 ; 
RLF WEI7,F ;
MOV F WEI7,W ; 
MOV WF PORTB ;设置“检测数码管段值”给PORT5
BCF PORTA,R ;开通“右数码管”
BCF PORTA,L ;开通“左数码管”
CALL DELAYP5 ;
BSF PORTA,R ;关闭“右数码管”
BSF PORTA,L ;关闭“左数码管”
MOV LW B’11111111’ ;
MOV WF PORTB ;清除给PORT5的“检测数码管段值”
BTFSC WEI7,6 ;检测是否完毕
GOTO $-D’11’ ;没有完毕 继续检测
BCF PORTA,DP ;已完毕 设置“小数点”及“1”值
BCF PORTA,R ;开通“右数码管” 
BCF PORTA,L ;开通“左数码管”
CALL DELAYP5 ;
BSF PORTA,R ;关闭“右数码管”
BSF PORTA,L ;关闭“左数码管”
BSF PORTA,DP ;清除“小数点”及“1”值
BCF WEI1,7 ;关闭蜂鸣器“长响 ”
BCF WEI1,6 ;
BCF WEI1,5 ; 
GOTO START ;
;------------------------------------------------------------------------
;开始工作
START: 
MOV F PORTB,F ;
BTFSC PORTB,CHECK ;判断是否有断路
GOTO DUANLU ;有断路
BCF WEI1,1 ;清0断路判别位 
GOTO PANZHI ;无断路
;------------------------------------------------------------------------
;断路处理
DUANLU: 
BSF WEI1,1 ;设置断路判别位
BSF WEI1,6 ;
BCF WEI1,5 ;
BCF WEI1,7 ;
GOTO PANZHI ; 
;------------------------------------------------------------------------
;判断电压值
PANZHI: 
BSF ADCON0,ADON ;A/D处于工作状态
BSF ADCON0,GO_DONE ;A/D开始运行
BTFSC ADCON0,GO_DONE ;判A/D是否完成
GOTO $-1 ;A/D没完成
BCF ADCON0,ADIF ;
BCF ADCON0,ADON ;A/D已完成 关闭A/D
CALL CV ;
MOV F ADRES,W ;
MOV WF WEI8 ;
MOV WF WEI2 ;A/D值传给WEI2
BCF STATUS,C ;清零“进位标志位” 
SUBLW D’200’ ;
BTFSS STATUS,C
GOTO V_20 ;跳到“20V以上”程序
MOV F ADRES,W
BCF STATUS,C ;清零“进位标志位”
SUBLW D’160’
BTFSS STATUS,C
GOTO V16 ;跳到“16V-19.9V之间”程序
MOV F ADRES,W
BCF STATUS,C ;清零“进位标志位”
SUBLW D’100’
BTFSS STATUS,C
GOTO V10 ;跳到“10V-15.9V之间”程序
MOV F ADRES,W 
BCF STATUS,C ;清零“进位标志位”
SUBLW D’50’
BTFSS STATUS,C
GOTO V5 ;跳到“5V-9.9V之间”程序
GOTO V4.9 ;跳到4.9V以下程序 
;------------------------------------------------------------------------- 
V4.9: ;4.9V以下 数码管显示LL

[1] [2] [3]  下一页


本文关键字:电压表  PIC单片机单片机-工控设备 - PIC单片机