PIC单片机AD转换汇编程序文档格式.docx

上传人:b****2 文档编号:14766247 上传时间: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

间接寻址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直接取反

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

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

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

BCFPIR1,ADIF;

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”子程序

**********显全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;

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

L00P8DMOVLWOXFF;

显示值为0,FFH为DARK的段码MOVWFSSPBUF;

启动发

WAIT1

GOTOWAIT1;

GOTOL00P8D;

一次要发送完8个数据

*********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

MOVWFFSROL

LOOP15MOVFINDFO,W

MOVWFACCAHI

MOVFINDFO,W

MOVWFACCALO

CALLD_ADD

GOTOLOOP15

NOP;

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

MOVLW0X84

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

CLRFACCALO

CALLD_SUB;

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

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

BTFSSACCBHI,7

CALLALARM;

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

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

BTFSCACCBHI,7

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

同时显示0

CALLDELAY;

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

GOTOLOOP;

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

END

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

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

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

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