📄 ad.c
字号:
#include<p18f4620.h>
void initial()
{
INTCON=0x00; //bit7-bit0:关总中断 */
ADCON1=0X07; //* 设置数字输入输出口 */
PIE1=0;
PIE2=0;
}
/* ****************************************************************
** 函 数 名: sciinitial()
** 功能描述: 232串行通讯初始化子程序,设置低优先级中断接收,使能232收和发
*************************************************************** */
void EUSART_Init()
{
TXSTA=0xa4; //选择异步高速方式传输8位数据
RCSTA=0x90; //允许串行口工作使能,
BAUDCON=0x00;
TRISC=TRISC|0X80; //将RC7(RX)设置为输入方式
TRISC=TRISC&0Xbf; //RC6(TX)设置为输出
SPBRG=25; //4M晶振时波特率为25
}
void sent_ch(unsigned char d)
{
PIR1bits.TXIF=0; //清发送接收中断标志位
TXREG=d; // 返送接收到的数据
Nop();
while(TXSTAbits.TRMT==0);
}
void AD_Init()
{
ADCON1=0x0d; //参看电压为VCC~GND,配置IN0和IN1
ADCON2=0xA6; //AD结果右对齐,8个TAD,Fos/64
ADCON0=1; //启动AD
PIR1bits.ADIF=0; //清标志
TRISAbits.TRISA0=1; //RA0和RA1模拟输入
TRISAbits.TRISA1=1;
}
unsigned int Read_AD(unsigned char ch)
{
unsigned int adtemp;
PIR1bits.ADIF=0;
ADCON0=(ch<<2)|1; //选择转换通道
ADCON0bits.GO=1; //忙标志
while(ADCON0bits.GO); //等待转换结束
PIR1bits.ADIF=0; //清标志
adtemp=ADRESL+ADRESH*256; //读取AD数据
return adtemp;
}
void wait(unsigned int t)//ms
{
unsigned int i,j;
for(i=0;i<1000;i++)
{
for(j=0;j<t;t++);
}
}
void main()
{
unsigned int adtempdat;
initial();
EUSART_Init();
AD_Init();
while(1)
{
sent_ch(0x55);
adtempdat=Read_AD(1);//转换0通道
sent_ch(adtempdat); //发送低8位到串口
sent_ch(adtempdat>>8);//发送高位到串口
wait(100);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -