PIC12F675两通道的AD转换的汇编程序

发布者:自由思想最新更新时间:2019-11-12 来源: 51hei关键字:PIC12F675  两通道  AD转换  汇编程序 手机看文章 扫描二维码
随时随地手机看文章

;程序功能:上电开机: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


关键字:PIC12F675  两通道  AD转换  汇编程序 引用地址:PIC12F675两通道的AD转换的汇编程序

上一篇:PIC16F873A单片机的照度测量项目原理图与源代码
下一篇:PIC单片机16*64点阵屏proteus仿真

推荐阅读最新更新时间:2024-11-17 11:13

PIC反汇编(一)汇编程序和PIC
前言 由于一些要求,现在需要将一段hex文件反汇编成为C,那么首先要了解的就是PIC和汇编语言的概况。 1、PIC 其实按照实际来讲,PIC也不过是一种MCU的描述,就想C和JAVA对于编程语言一样,我们了解PIC也不过是通过他的功能,特性以及使用场合来接触,然后根据自己的需要去了解内部结构,总体框架。 这里我引用一段大佬对于pic的描述 1 PIC到底有什么优势?也许你也会有这样的疑问,所以我在这里略谈几点自己的看法。NGE自动化在线网 (1)PIC最大的特点是不搞单纯的功能堆积,而是从实际出发,重视产品的性能与价格比,靠发展多种型号来满足不同层次的应用要求。就实际而言,不同的应用对单片机功能和资源的需求也是不同的。比如
[单片机]
单片机电子琴汇编程序
H EQU 30H L EQU 31H ORG 0000H SJMP MAIN ORG 0BH SJMP INT_T0 ORG 0030H SJMP MAIN MAIN: MOV TMOD,#01H SETB EA SETB ET0 MOV TH0,#0F9H MOV TL0,#21H SETB TR0 MOV R2,#0 LOOP:MOV DPTR,#TAB MOV A,R2 MOVC A,@A+DPTR MOV H,A MOV DPTR,#TAB2 MOV A,R2
[单片机]
51控制的MT8880双音频收发器的汇编程序
ORG 0000H AJMP MAIN : : ;******************** ;* 8880 初始化 * ;******************** MAIN: MOV A, #90H MOV P0, A ; 写 8880CRA MOV P0, A ; 写 8880CRA MOV A, #98H MOV P0, A ; 写 8880CRA
[单片机]
51单片机一位数码管汇编程序
;数码管从0-9显示 ORG 0000H AJMP MAIN ORG 0030H MAIN: MOV R4, #00H ;记录码表的值 MOV DPTR, #TABLE ;把地址送DPTR STRAT: MOV A, R4 MOVC A, @A+DPTR ;取码 MOV P2, A ;显示 INC R4 ;自增,取下个值做准备 CALL DELAY ;调用 CJNE R4, #16, STRAT ;判断是否显示完16个数值 AJMP MAIN DELAY: MOV R6, #1 DELAY4: MOV R1, #10 DELAY3: MOV R2, #100 DEALY1: MOV
[单片机]
51单片机一位数码管<font color='red'>汇编程序</font>
四点二次插值的单片机汇编程序实现
在微机化的仪器仪表控制软件中,特别是快速控制软件中,或因直接计算过于复杂,或因只有经验数据没有理论公式,常采用查表插值法计算某些数据。 一般适合于插值法的函数是光滑性较好的函数。所谓“光滑性较好”是指以下两个方面: ◆连续且尽量高阶地可导: ◆其泰勒展开式中高次项的绝对值较小。 采用多项式插值时,若提高多项式次数,除了增加计算量(在高速实时控制的程序中,计算速度是很重要的问题)外,从数学上看还有若干缺点,故实际应用中一般不用太高的次数。抛物线插值(三点二次插值)是常用的一种。 提高精度的另一途径是增加节点密度。对于三点二次插值,节点密度若能提高二倍,则截断误差大约可以缩小到原来的1/8。但是这样一来数据表的容量也
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved