#include<pic.h>
__CONFIG(0x23F2);
__CONFIG(0x3EFF);
unsigned long a;
void delay(int z)//延时函数
{
unsigned int i,j;
for(i=0;i<z;i++)
for(j=0;j<110;j++);
}
void initialandselect1()
{
TRISA0=0x1;
TRISA1=0x1;
TRISA2=0x1;
ANS0=0x1;
ANS1=0x1;
ANS2=0x1;
ADCS1=0x1;
ADCS0=0x0;
VCFG1=0x0;
VCFG0=0x0;
CHS3=0x0;//Vp
CHS2=0x0;
CHS1=0x0;
CHS0=0x0;
ADFM=0x0;
ADON=0x1;
delay(2);
GO_DONE=0x1;
}
void lcd_wcom(unsigned char com)
{
RC3=0;
RC4=0;
PORTB=com;
delay(1000);
RC5=1;
RC5=0;
}
void lcd_wdat(unsigned char dat)
{
RC3=1;
RC4=0;
PORTB=dat;
delay(1000);
RC5=1;
RC5=0;
}
void lcd_init()
{ TRISB=0x00;
TRISC3=0x0;
TRISC4=0x0;
TRISC5=0x0;
lcd_wcom(0x38);
lcd_wcom(0x0c);
lcd_wcom(0x06);
lcd_wcom(0x01);
}
void main()
{ initialandselect1();
delay(1000);
if(GO_DONE==0)
{
a=ADRESH<<2+ADRESL;
delay(1000);
if(a==0)
{
TRISC0=0;
RC0=0;
}
}
}
不知道为什么a的数值为零,本来想AD采样的,用的是pic单片机的database写的初始化程序,并不想用中断、
答案:3 悬赏:60 手机版
解决时间 2021-04-11 06:59
- 提问者网友:浪荡绅士
- 2021-04-10 17:59
最佳答案
- 五星知识达人网友:千夜
- 2021-04-10 18:19
unsigned int AD_data(void) // 转换一次0.5ms
{
unsigned int y;
int a=1,data_H=0,data_L=0;
ADIE = 0;//禁止中断
ADCON0=0x09; //0000 1001//使能ADC-AN2
// ADCON1=0x90;
// ADCON1=0x80; //1000 0000
// ADCON1=0xD0;
ADCON1=0xE0;
ADCON0 = ADCON0 | 0x02;//开始转换
//RA1=1 ;//测试管脚
while(a)
{
a = ADCON0&0x02;
if(a==0)
{
if(ADIF==1)
{
data_L=ADRESL;
data_H=ADRESH;
ADIF=0;
y=0;
y=data_H<<8;
y |=data_L;
}
}
}
a=0;
ADIF=0 ;
ADCON0 = 0x08;//关ADC
//RA1=0 ;//测试管脚
for(int adi=0;adi<0x7F;adi++);//调节adi的范围值改变采集灵敏度。//延时440us
return(y);
}
全部回答
- 1楼网友:山君与见山
- 2021-04-10 19:33
问题出在这一句:a=ADRESH<<2+ADRESL,要这样写:a=ADRESH;
a=a<<8;
a=a+ADRESL;
为什么要这样写,请运行正确后好好想一想!
- 2楼网友:人间朝暮
- 2021-04-10 19:26
问题出在这一句:a=ADRESH<<2+ADRESL,要这样写:a=ADRESH;
a=a<<8;
a=a+ADRESL;
为什么要这样写,请运行正确后好好想一想!
再看看别人怎么说的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯