/*************PIC16F917单片机程序*************************/
/******************************************************************/
/*****File Function : 内部AD练习程序 *****/
/*****Program Author : ZhengWen(ClimberWin) *****/
/*****MCU : PIC16F917 内部晶振 *****/
/*****Compile Date : 2014/08/17 *****/
/*****Edition Info : V1.0 *****/
/*************************************************************/
//RA5(AN4)作为AD输入,电位器调节电压,LED显示电压数值
//引脚定义:PORTD=8LED,KEY=RB0(INT)
/*修改日期: */
/************************************/
#include <pic.h>
#define uchar unsigned char
#define uint unsigned int
void Init(void);//初始化子程序
#define KEY RB0
void Init(void)
{
PORTA = 0B00000000;
PORTB = 0B00000000;
PORTC = 0B00000000;
PORTD = 0B00000000;
#include <pic.h>
#define uchar unsigned char
#define uint unsigned int
void Init(void);//初始化子程序
#define KEY RB0
void Init(void)
{
PORTA = 0B00000000;
PORTB = 0B00000000;
PORTC = 0B00000000;
PORTD = 0B00000000;
TRISA = 0B00100000;//设置RA5(AN4)作为输入
TRISB = 0B00100001;//设置RB0为输入,作为按键口
TRISC = 0B00000000;//设置RC0为输出
LCDCON=0x00;//关闭LCD功能,不然PORTC不能作为普通I/O输出
TRISB = 0B00100001;//设置RB0为输入,作为按键口
TRISC = 0B00000000;//设置RC0为输出
LCDCON=0x00;//关闭LCD功能,不然PORTC不能作为普通I/O输出
TRISD = 0B00000000;//设置PORTD口为输出,作为LED显示口
///////////AD配置///////////////////////////////////////
ANSEL= 0B00010000; //选择AN4作为AD输入 (PDF 148)
ADCON0=0B10010001;//AD结果格式Right justified,选择参考电压VDD-VSS,AN4输入,关闭AD转换
ADCON1=0B01010000; //AD转换时钟选择
ANSEL= 0B00010000; //选择AN4作为AD输入 (PDF 148)
ADCON0=0B10010001;//AD结果格式Right justified,选择参考电压VDD-VSS,AN4输入,关闭AD转换
ADCON1=0B01010000; //AD转换时钟选择
ADIE=1;//AD中断使能
PEIE=1;
ADIF=0;//清除中断标志位
GIE=1; //开总中断
}
void interrupt ADint(void)
{
PORTD=~ADRESL;//LED输出显示低8位
PORTC=~ADRESH;//LED输出显示高2位
ADIF=0;//清除中断标志位
ADCON0=ADCON0|0B00000010;//开始AD转换
}
{
PORTD=~ADRESL;//LED输出显示低8位
PORTC=~ADRESH;//LED输出显示高2位
ADIF=0;//清除中断标志位
ADCON0=ADCON0|0B00000010;//开始AD转换
}
////////////主程序/////////////////////////
int main (void)
{
int main (void)
{
Init();//初始化程序
ADCON0=ADCON0|0B00000010;//开始AD转换
while(1) //等待AD转换
{
;
}
}
while(1) //等待AD转换
{
;
}
}