;程序功能:上电开机:PIN5为高电平,绿灯亮;PIN2,PIN3为低电平,红灯灭;
; 轮流检测PIN6,PIN7脚电平,欠压3.9V,10V,红灯亮,绿灯灭,过压5.9V,15.9V
; 红灯亮,绿灯灭,alram为TTL高电平,过压锁死
LIST P=12F675
INCLUDE __CONFIG(B'11000101110100') ;Highest band gap voltage,0,0,Data memory is not protected ;Program memory is code-protected,BOD enabled,MCLR pin is MCLR function ;PWRT enabled,WDT disabled,INTOSC oscillator ;************************************** READH EQU 2Ah ;读到的高2位数据 READL EQU 2Bh ;读到的低8位数据 SOUH EQU 40h ;欠压设置,高2位存储地址 SOU EQU 41h ;欠压设置,低8位存储地址 RLTH EQU 42h ;过压设置,高2位存储地址 RLT EQU 43h ;过压设置,低8位存储地址 ORG 0000H GOTO MAIN ORG 0004H GOTO ADBEGIN ORG 0030H MAIN BCF STATUS,RP0 ;BANK 0 CLRF GPIO MOVLW 07H MOVWF CMCON ;关闭比较器 BSF STATUS,RP0 ;BANK 1 CALL 3FFH ; 读内部振荡出厂校准字,返回值在W寄存器内 MOVWF OSCCAL ;校准晶振 MOVLW B'00001011';TRISIO 三态控制器 MOVWF TRISIO ;设置TRISIO方向控制器,GP0,GP1,GP3为输入口 MOVLW B'00010011' MOVWF ANSEL ;8分频晶振,AN0AN1为模拟口,AN2AN3为数字口 BANKSEL OPTION_REG MOVLW B'00000000';将预分频器分配给TIMER0 模块,2分频 MOVWF OPTION_REG ; BANKSEL INTCON MOVLW B'10100000' ;允许全局中断,禁止外围中断,允许TRMO中断,禁止GP2/INT外部中断 MOVWF INTCON ;禁止GPIO端口电平变化中断,TMR0寄存器没有溢出,未发生GP2/INT中断 ;GP5:GP0 引脚电平均未发生变化 MOVLW 02H MOVWF 24H ;AD通道设置选择 MOVLW D'10' MOVWF 25H ;过压后延时采样,10*90uS=900uS ;******************************************** ;欠压设置2.5V,5V路对应值3.8V,15V路对应值10V MOVLW 0002H MOVWF SOUH MOVLW 0000H MOVWF SOU ;********************************************* ;过压设置值3.9V,5V路对应值5.9V,15V路对应15.9V MOVLW 0003H MOVWF RLTH MOVLW 0020H MOVWF RLT MOVLW B'10000001' MOVWF ADCON0 ;右对齐,参考电压Vdd,模拟通道0 BANKSEL TMR0 MOVLW D'242' MOVWF TMR0 GOTO $ ;********************************************* ;定时中断后开始AD转换 ADBEGIN BTFSC INTCON,T0IF ;是否是定时器TMR0中断 BANKSEL ADCON0 BSF ADCON0,GO ;开始转换 ADWAIT BTFSC ADCON0,GO GOTO ADWAIT ;等待转换完成 ;********************************************** ;AD转换后数据判断处理 READ BANKSEL ADRESH ;自动设置存储地址bank MOVF ADRESH,W ;读电压值高2位, CLRF STATUS MOVWF READH ;读到的高2位数据放到vrevh寄存器 BANKSEL ADRESL ;自动设置存储地址bank MOVF ADRESL,w ;读电压低8位 CLRF STATUS MOVWF READL ;***************************************************** LOWPOWER MOVF SOU,W SUBWF READL,W BTFSS STATUS,C;没有借位,跳过 GOTO JUMP1 MOVF SOUH,W CONTIUE1 SUBWF READH,W BTFSS STATUS,C ;没有借位,跳过 GOTO ALARM0 OVERPOWER MOVF RLT,W SUBWF READL,W BTFSS STATUS,C ;没有借位,跳过 GOTO JUMP2 MOVF RLTH,W CONTIUE2 SUBWF READH,W BTFSS STATUS,C ;;没有借位,跳过 GOTO NORMAL GOTO ALARM1 ;***************************************** ;时间到,准备选择通道和赋值 LOOP DECFSZ 24H,F GOTO SKIP BANKSEL ADCON0 MOVLW B'10000001' MOVWF ADCON0 ;右对齐,参考电压Vdd,模拟通道0 MOVLW D'2' MOVWF 24H GOON BCF INTCON,T0IF;恢复定时器继续判断 BANKSEL INTCON BSF INTCON,7 BANKSEL TMR0 MOVLW D'242' ADDWF TMR0,F GOTO $ ;*************************************************** ;子程序 SKIP BANKSEL ADCON0 MOVLW B'10000101' MOVWF ADCON0 ;右对齐,参考电压Vdd,模拟通道0 GOTO GOON JUMP1 INCFSZ SOUH,W GOTO CONTIUE1 JUMP2 INCFSZ RLTH,W GOTO CONTIUE2 NORMAL BANKSEL GPIO BTFSC 22H,0 ;为0跳过 GOTO BACK BSF GPIO,2 ;绿灯亮 BCF GPIO,4 ;红灯灭 BACK BCF 22H,0 GOTO LOOP ALARM0 BSF 22H,0 BANKSEL GPIO BCF GPIO,2 ;绿灯灭 BSF GPIO,4 ;红灯亮 GOTO LOOP ALARM1 DECFSZ 25H,F ;为0则跳 GOTO LOOP BANKSEL GPIO BSF GPIO,5 ;关机 BCF GPIO,2 ;红灯亮 BSF GPIO,4 ;绿灯灭 GOTO $ END
上一篇:PIC16F873A单片机的照度测量项目原理图与源代码
下一篇:PIC单片机16*64点阵屏proteus仿真
推荐阅读最新更新时间:2024-11-17 11:13
设计资源 培训 开发板 精华推荐
- LT1026CS8 正负转换器的典型应用电路
- AM3GW-4815DZ ±15V 3 瓦 DC-DC 转换器的典型应用
- SSTC+PLLSSTC双TC合体板
- 具有重合跟踪和 6V 输入 UVLO 的 LTC3633AEFE 1.2V/1.8V 降压稳压器的典型应用电路
- 使用 Analog Devices 的 LTC3526LEDC 的参考设计
- LT1310 的典型应用 - 具有锁相环的 1.5A 升压型 DC/DC 转换器
- 使用 Microchip Technology 的 MIC2774L-XXBM5 的参考设计
- 基于TS507运算放大器的体积描记器应用电路
- LT1307BCS8 外部控制突发模式操作的典型应用电路
- AM30EW-2405SZ 5V 三路输出 DC/DC 转换器的典型应用