📄 adc_config.c
字号:
#include "reg24le1.h" //头文件包含定义寄存器地址
#include "conf.h" //下面那些函数的包含头文件
/**AD功能配置函数***/
/*函数名称:adc_config();传递的参数无,用于初始化AD转换**/
void adc_config()
{
ADCCON2=0X00; //设置成单步转换并使能,速度为2ksps
ADCCON3|=0XE0; //精度12bit,数据右对齐
ADCDATH&=0XF0; //转换结果寄存器清0
ADCDATL&=0X00;
P0DIR|=0X07; //设置转换的输入通道为0,1,2
P0&=0XF8; //端口初始化为低
}
/***串口初始化函数***/
/***函数名称: uart_init();传递的参数无,用于串口的初始化*/
void uart_init()
{
CLKCTRL = 0x28; // 使用 XCOSC16M
CLKLFCTRL = 0x01;
P0DIR &= 0xF7; // P03 (TxD)
P0DIR |= 0x10; // P04 (RxD)
P0|=0x18;
S0CON = 0x50;
PCON |= 0x80; // 倍增
WDCON |= 0x80; // 选用内部波特率发生器
S0RELH = 0x03;
S0RELL = 0xF3; // 设置波特率为38400
}
/*通过串口发送一个字符到串口终端*/
void send(char ch) //通过串口发送一个字符
{
S0BUF=ch;
while(!TI0); //等待发送完成
TI0=0;
}
/*读取AD转换结果的功能函数,pip_num保存通道号,返回AD转换的结果*/
/*通过定义的静态变量来循环读取0.1.2三个通道*/
unsigned int readadc(unsigned char* pip_num)
{
unsigned int res=0;
static unsigned char num=0;
ADCCON1=BIT7+(num<<2)+BIT0; //设置转换的通道,设置参考,以及启动
while(!(ADCCON1&BIT6)); //等待启动
while((ADCCON1&BIT6)); //等待完成转换
res=ADCDATL+(ADCDATH&0X0F)*256;//读取结果
*pip_num=num; //保存当前通道号
num++;
num=num%3; //计算下一个需要转换的通道
return res;
}
/*软件延时函数,通过设置内部循环的次数来决定延时的时间*/
void delay(unsigned int dx) //软件延时函数
{
unsigned int di;
for(;dx>0;dx--)
for(di=120;di>0;di--)
{
;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -