PIC单片机AD转换汇编程序.docx

上传人:b****2 文档编号:1846032 上传时间:2022-10-24 格式:DOCX 页数:7 大小:17.24KB
下载 相关 举报
PIC单片机AD转换汇编程序.docx_第1页
第1页 / 共7页
PIC单片机AD转换汇编程序.docx_第2页
第2页 / 共7页
PIC单片机AD转换汇编程序.docx_第3页
第3页 / 共7页
PIC单片机AD转换汇编程序.docx_第4页
第4页 / 共7页
PIC单片机AD转换汇编程序.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

PIC单片机AD转换汇编程序.docx

《PIC单片机AD转换汇编程序.docx》由会员分享,可在线阅读,更多相关《PIC单片机AD转换汇编程序.docx(7页珍藏版)》请在冰豆网上搜索。

PIC单片机AD转换汇编程序.docx

PIC单片机AD转换汇编程序

PIC单片机AD转换汇编程序

;此汇编程序实现A/D转换功能,应用于pic单片机上,A/D采用中断方式。

该程序通过单片机的RA2模拟通道送入

;一直流电压,当送入的直流电压大于2.5V时,8个LED闪动,当直流电压恢复到2.5V以下

;时,LED停止闪动。

为了防止干扰,本程序对直流电压采样10次后再作判断,中间的采样结

;果用间接寻址的方式存取。

LISTP二18F458

INCLUDE"P18F458.INC"

TIMESEQU0X20

DEYEQUTIMES+1

ACCALOEQUTIMES+2;ACCA为双精度加数寄存器

ACCAHIEQUTIMES+3

ACCBLOEQUTIMES+4;ACCB为双精度加法的结果寄存器

ACCBHIEQUTIMES+5

FLAGEQUTIMES+6

DEYHEQUTIMES+7

DEYLEQUTIMES+9

BEGFSREQU0X30;间接寻址FSR的起始值(宏定义方式给出)

0RG0X0000

GOTONfAIX

ORG0X0008

GOTOINTSERVE;转向中断服务子程序

;***双字节减法子程序,入口地址ACCB-ACCA,出口地址ACCB***D_SUB

CALLNEG_A;求人“人的补码

;*衬双字节加法子程序,入口地址ACCB+ACCA,出口地址ACCB***D_ADD

MOVFACCALO,0;ACCB和ACCA低半字节相加

ADDWFACCBLO

BTFSCSTATUS,C;有进位否?

INCFACCBHI;有,ACCB高字节加I1,再加ACCAHI

MOVFACCAHI,0;ACCA、ACCB高半字节相加

ADDWFACCBHI

RETURN;子程序返回

f**************

NEG_A

COMFACCALO;ACCALO取反加1

INCFACCALO

BTFSCSTATUS,Z;低8位有进位吗?

DECFACCAHI;有,ACCAHI减1,再取反

COMFACCAHI;否则ACCAHI直接取反

RETURN;子程序返回

;*********初女台化子程序***************

CLRFINTCON;禁止总中断和外围中断

MOVLW0X51

MOVWFADCONO;选择AD通道为RA2,且打开A/D转换器;在工作状态,且使AD转换时钟为STosc

MOVLW0X80

MOVWFADC0N1;转换结果右移,即ADRESH寄存器的高6;位为〃0",且把RA2

口设置为模拟量输入式

;(注意后面要把RA5改成数据I/O方式,以

;输出显示琐存信号)

BCFPIR1,ADIF;清除A/D转换标志

BSFPIE1,ADIE;A/D转换中断允许

BSFINTCON,PEIE;外围中断允许

BSFIPR1,ADIP;B口变位中断高优先级

BSFRCON,7;使能中断优先级

BSFTRISA,2;设置RA2为输入方式

BCFTRISA,5;置RA3为输出方式,以输出锁存信号

BCFTRISC,5

BCFTRISC,3;设置SCK与SDO为输出方式

MOVLWOXCO

MOVWFSSPSTAT;设置SSPSTAT寄存器

MOVLW0X30

MOVWFSSPCON1;设置SPI的控制方式,允许SSP方式,并;且时钟下降沿发送,与"74HC595当其

;SCLK从低到高电平跳变时,串行输入数据

;(DI)移入寄存器"的特点相应

CLRFFLAG

RETURN

;*********软件延时子程序****************

DELAY

MOVLWOXFF

MOVWFDEYH

AGAIN1MOVLWOXFF

MOVWFDEYL

AGAIX2NOP

DECFSZDEYL

GOTOAGAIN2

DECFSZDEYH

GOTOAGAIN1

RETURN

;***************a/D中断服务子程序*****************INTSERVE

BCFPIR1,ADIF;清除A/D转换标志

MOVFADRESH,W

MOVWFINDFO;读取并存储A/D转换结果的高两位

INCFFSROL

MOVFADRESL,W

MOVWFINDFO

INCFFSROL;读取并存储A/D转换结果的低8位

DECFTIMES,1;A/D转换次数减1

MOVLW0X02

MOVWFDEY

LOOP13DECFSZDEY,1

GOTOL00P13;给予一定的延时,保证两次A/D转换期间;2Tad的间隔时间和

电容的采样时间

BSFADCONO,2;启动下一次A/D转换

RETFIE;中断返回

;**********led闪烁报警子程序*♦*♦*♦♦*♦♦*♦*

ALARM

MOVLW0X01

XORWFFLAG,1

BTFSSFLAG,0

CALLDISPLAYO;调用显“0”子程序

NOP

BTFSCFLAG,0

CALLDISPDARK;调用显“DARK”子程序

RETURN

;**********显全o•F■程序*************

DISPLAYO

TRANSMIT;SPI发送显示子模块

CLRFPORTA;LACK送低电平,为锁存做准备

MOVLW0X08

MOVWFTIMES

L00P80MOVLWOXCO;显示值为0,COH为0的段码MOVWFSSPBUF;启动发送

WAIT

BTFSSPIR1,SSPIF

GOTOWAIT;等待发送结束

BCFPIR1,SSPIF;清除中断标志

DECFSZTIMES

GOTOL00P80;一次要发送完8个数据

BSFPORTA,5;最后给一个锁存信号,代表一次显示任务完成RETURN

;**********显示全DARK『程序*************

DISPDARK

TRANSMIT1;SPI发送显示子模块

CLRFPORTA;LACK送低电平,为锁存做准备

MOVLW0X08

L00P8DMOVLWOXFF;显示值为0,FFH为DARK的段码MOVWFSSPBUF;启动发

WAIT1

BTFSSPIR1,SSPIF

GOTOWAIT1;等待发送结束

BCFPIR1,SSPIF;清除中断标志

DECFSZTIMES

GOTOL00P8D;一次要发送完8个数据

BSFPORTA,5;最后给一个锁存信号,代表一次显示任务完成RETURN

;*********PIC单片机A/D转换汇编程序主程丿了;************

;转载www.olhei.com单片机网

MAINNOP

CALLINITIAL;初始化

LOOP

MOVLW0X80;转换结果右移,及ADRESH寄存器的高6位为"0";且把RA2口设置为模拟量输入式(注意后面要把

;RA5改成数据I/O方式,以输出显示琐存信号)

MOVWFADC0N1

MOVLWBEGFSR

MOVWFFSROL;给出间接寻址时FSR的初值

MOVWFTIMES;每一轮A/D连续采样10次

BSFIXTCON,GIE;总中断打开,及可以进行A/D转换中断BSFADC0N0,2;启动A/D转换

L00P1MOVFTIMES,W

BTFSSSTATUS,Z

GOTOL00P1;等待A/D转换中断

BCFINTCON,GIE;A/D转换次数到10次,关闭中断NOP

CLRFACCBHI

CLRFACCBLO;双精度加法的结果寄存器清0,为后面准备MOVLWOXOA

MOVWFTIMES

MOVLWBEGFSR

MOVWFFSROL

LOOP15MOVFINDFO,W

MOVWFACCAHI

INCFFSROL

MOVFINDFO,W

MOVWFACCALO

INCFFSROL

CALLD_ADD

DECFSZTIMES

GOTOLOOP15

NOP;计算得到10次A/D转换的和

MOVLW0X84

MOVWFADC0N1;把RA3设成数字I/O,以输出显示锁存信号MOVLW0X14

MOVWFACCAHI

CLRFACCALO

CALLD_SUB;通过双精度减判断模拟量是否达到报警限

;度(1400H=200H*0AH,200H与2.5V对应)

BTFSSACCBHI,7

CALLALARM;若ACCBHI的最高位为1,则证明减法结

;果为负,即直流电压值超过2.5V,则报警

NOP

BTFSCACCBHI,7

CALLDISPLAYO;若没有超过2.5V,则不报警,8个LED

;同时显示0

CALLDELAY;软件延时,使电压检测不要过于频繁

GOTOLOOP;重复检测输入的直流电压值

END

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1