📄 ad.c
字号:
//程序实现A/D转换功能,A/D采用中断方式//程序实现A/D转换功能,A/D采用中断方式。
#include <p18cxxx.h>
#include <adc.h>
union adres
{
int y1;
unsigned char adre[2];
}adresult; //定义一个共用体,用于存放A/D转换的结果
//unsigned char i;
//unsigned int j;
void InterruptHandlerHigh(void);
//A/D转化初始化子程序
void ad(unsigned char chunnel )
{
INTCON=0X00; //禁止总中断和外围中断
ADCON0=chunnel<<2+0x01; //选择A/D通道,打开A/D转换器
ADCON1=0X0; //且把RAx口设置为模拟量输入方式
ADCON2=0X2E; //转换结果左移,及ADRESL寄存器的低6位为"0"
PIR1bits.ADIF=0; //清除A/D转换标志
PIE1bits.ADIE=1; //A/D转换中断允许
INTCONbits.PEIE=1; //外围中断允许
IPR1bits.ADIP=1; //B口变位中断高优先级
RCONbits.IPEN=1; //使能中断优先级
TRISA=0xFF; //设置为输入方式
INTCONbits.GIE=1; //总中断允许
ADCON0bits.GO=1; //启动A/D转换
}
//高优先级中断向量
#pragma code InterruptVectorHigh=0x08
void InterruptVectorHigh (void)
{
_asm
goto InterruptHandlerHigh //跳到中断程
_endasm
}
//高优先级中断服务程序
#pragma code
#pragma interrupt InterruptHandlerHigh
void InterruptHandlerHigh ()
{
while(PIR1bits.ADIF){
PIR1bits.ADIF=0; //清除中断标志
//adresult.adre[0]=ADRESL;
//adresult.adre[1]=ADRESH; //读取并存储A/D转换结果,A/D转换的结果通过共
TXREG=ADRESH; //To RS232
}
}
//主程序
void main(void)
{
ad(1); //A/D转换
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -