51/AVR单片机技术驿站!  <在线翻译>     便利工具    特色网址   无弹窗、无插件的绿色站点...  英才招聘   学历查询  喜欢>>收藏我站 

当前位置:首页 > 单片机技术文章 > PIC单片机 > 详细内容
pic单片机p18f458A/D中断转换程序
发布时间:2009/7/20  阅读次数:810  字体大小: 【】 【】【

//程序实现A/D转换功能,A/D采用中断方式。该程序通过pic单片机p18f458的RA2模拟通道送入一直流电压,
//当送入的直流电压大于2.5V时,与PORTD口相连的8个发光二极管闪动,当直流电压恢复到
//http://www.51hei.com单片机网提供此ad转换程序,有问题请联系本站。
//2.5V以下时,发光二极管停止闪动,且只有低四个发光。

#include "p18f458.h"

union adres
{
int y1;
unsigned char adre[2];
}adresult; //定义一个共用体,用于存放A/D转换的结果

unsigned char i;
unsigned int j;

void InterruptHandlerHigh(void);

//系统各I/O口初始化子程序
void initial()
{
TRISD=0X00; //D口为输出
i=0x00;
}

//A/D转化初始化子程序
void adinitial()
{
INTCON=0X00; //禁止总中断和外围中断
ADCON0=0x51; //选择A/D通道为RA2,打开A/D转换器
//在工作状态,且使A/D转换时钟为8tosc
ADCON1=0X80; //转换结果右移,及ADRESH寄存器的高6位为"0"
//且把RA2口设置为模拟量输入方式
PIR1bits.ADIF=0; //清除A/D转换标志
PIE1bits.ADIE=1; //A/D转换中断允许
INTCONbits.PEIE=1; //外围中断允许
IPR1bits.ADIP=1; //B口变位中断高优先级
RCONbits.IPEN=1; //使能中断优先级
PORTAbits.RA2=1; //设置RA2为输入方式
}

//延时子程序
void delay()
{
for(j=5535;--j;) continue;
}

//报警子程序
void alarm()
{
i=i^0xFF; //通过异或方式每次把i的各位值取反
PORTD=i; //D口输出i的值
}

//高优先级中断向量,
#pragma code InterruptVectorHigh=0x08
void InterruptVectorHigh (void)
{
_asm
goto InterruptHandlerHigh //跳到中断程
_endasm
}

//高优先级中断服务程序
#pragma code
#pragma interrupt InterruptHandlerHigh
void InterruptHandlerHigh ()
{
PIR1bits.ADIF=0; //清除中断标志
adresult.adre[0]=ADRESL;
adresult.adre[1]=ADRESH; //读取并存储A/D转换结果,A/D转换的结果通过共
//用体的形式放入了变量y1中
if(adresult.y1>0x200)
{
alarm(); //如果输入的模拟量大于2.5V(对应数字量
//0X200h),则调用报警子程序
delay(); //调用延时子程序,使电压检测不要过于频繁
}
else PORTD=0XF0 ; //如果输入的模拟量小于2.5V,则与D口相连的
//8个发光二极管的低4个发亮,表示系统正常
ADCON0bits.GO=1; //启动下一次A/D转换
}

//主程序
main()
{
adinitial(); //A/D转换初始化
initial(); //系统各I/O口初始化
INTCONbits.GIE=1; //总中断允许
ADCON0bits.GO=1; //启动A/D转换
while(1)
{
;
} //等待中断,在中断中循环检测外部电压
}

我要评论
  • 匿名发表
  • [添加到收藏夹]
  • 发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态:未登录
最新评论
所有评论[0]
    暂无已审核评论!

网站导航 管理登陆 ┊ 免责声明 问题反馈  友链说明
本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正!
不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作!

    我要报警 Alexa
 mcusy_cn#126.com (请把#改成@) 交流:522422171
本站学习交流群:138..158(高级群1-)、77930286(高级群2)、61804809(群3)
Copyright© MCUSY All Rights Reserved
本站网警备案号: WZ36040002485
  ICP备案证书号:粤ICP备09034963号