📄 main.c
字号:
//-----------------------------------------------------------------
// 名称: 用PICC18库函数实现的模/数转换测试程序
//-----------------------------------------------------------------
// 说明: 本例使用了PICC18提供的ADC库函数,对AN0与AN1通道进行模数转换.
// 转换结束由TIMER3溢出中断刷新显示在8位数码管上.
// 由于当前版本PICC18提供的TIMER3库函数存在异常,
// 本例使用了自定义的Open_Timer3函数.
//
//-----------------------------------------------------------------
#include <htc.h>
#define INT8U unsigned char
#define INT16U unsigned int
#define _XTAL_FREQ 4000000UL
//共阳数码管0~9的数字段码,最后一位为黑屏
const INT8U SEG_CODE[] =
{0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xFF};
//两路模拟转换结果显示缓冲,显示格式为:X.XX X.XX ,第4位和第8位不显示
volatile INT8U Display_Buffer[] = {0,0,0,10,0,0,0,10};
int Result;
void Open_Timer3()
{
}
//-----------------------------------------------------------------
// 对通道0与通道1进行模数转换
//-----------------------------------------------------------------
void ADC_01_Convert()
{
//打开AN0通道
OpenADC( ADC_FOSC_32 & ADC_RIGHT_JUST & ADC_2ANA_2REF,
ADC_CH0 & ADC_INT_OFF);
_delay(50); ConvertADC(); //延时50个周期后启动转换
while (BusyADC()); //等待转换结束
//读取转换结果并转换
//打开AN1通道
OpenADC( ADC_FOSC_32 & ADC_RIGHT_JUST & ADC_2ANA_2REF,
ADC_CH1 & ADC_INT_OFF);
//延时50个周期后启动转换
//等待转换结束
//读取转换结果并转换
CloseADC();
}
//-----------------------------------------------------------------
// 主程序
//-----------------------------------------------------------------
void main()
{
}
//-----------------------------------------------------------------
// TMR3定时器溢出中断控制数码管刷新显示两路A/D转换结果
//-----------------------------------------------------------------
void interrupt TMR3_ISR( )
{
static INT8U i = 0;
if (TMR3IF)
{
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -