新手入门AD转换
直接将数据在RB口读出
代码如下
#include<pic.h> #define uint unsigned int #define uchar unsigned char uint adval,ad; // void adget(uchar advel); void adintial(); void delay(uint len); void initial(); void display();
void initial(void) { TRISA=0X02; TRISB=0x00; // PORTB=0x00; // RBIF=1; } void delay(uint len) { uint i,d=10; i=d*len; while(--i) {;} } void adinitial(void) { ADCON1=0X00; //AD配置,VDD参考电压 ADCON0=0X08; //F/2,AN1模拟输入,AD开 TRISA1=1; //RA1 is selectd for the input //ADON=1; //启动AD转换 ADIF=0; //清除AD中断允许位 ADIE=1; //设置AD中断允许 PEIE=0; //AD interrupt enable GIE=1; //全局中断开 ADON=1; //start AD conversion } void display() { TRISB=adval; } //uint adval,ad; uchar adget() {
delay(100); // waiting(20); //ADIF=0; ADCON0=0X0D; GO=1; while(GO); adval=ADRES; delay(100); ad=adval; return(adval); /*while(GO) { }*/ } void main() { initial(); while(1) { adinitial(); adget(); display(); } } 问题是仿真时只有RB0-RB2和RB7有反应,其他口没反应,请高手指点。
|