- 打卡等级:初来乍到
- 打卡总天数:3
- 最近打卡:2025-03-15 08:14:34
已绑定手机
注册会员
- 积分
- 82
|
发表于 2025-3-15 08:14:34
|
显示全部楼层
这个IO配置问题已经确定过 没有问题 采集的AD口是处于悬空状态(方便测试) 会不会是程序设计问题
#include <ai8h.h>
#include <intrins.h>
#include <1640.h>
void delay1(uchar x) //延时程序
{
uchar y,z;
for(y=x;y>0;y--)
for(z=150;z>0;z--);
}
void Init()
{
P1M0 = 0x01; //设置P1.0为ADC口
P1M1 = 0x00;
P2M0=0x00;
P2M1=0x00;
P3M0=0x00;
P3M1=0x00;
}
uint ad_result(uchar adda) //A/D转换函数
{
uint adzh;
ADC_CONTR=0xc0+adda; //启动A/D转换
delay1(10);
while(!(ADC_CONTR&0x20)){;} //等待A/D转换结束
ADC_CONTR=0x80+adda;
adzh=ADC_RES;
adzh=(adzh<<8)+ADC_RESL;
return(adzh); //返回10位AD转换结果
}
void Timer0_Init(void) //1毫秒@11.0592MHz
{
AUXR |= 0x80; //定时器时钟1T模式
TMOD &= 0xF0; //设置定时器模式
TL0 = 0xCD; //设置定时初始值
TH0 = 0xD4; //设置定时初始值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
ET0=1;
EA=1;
}
void main()
{
Init();
Timer0_Init();
ADCCFG=0x27;//专换结果高4位,低8位 256个时钟
while(1)
{
out_disp();
}
}
void TM0_Isr() interrupt 1
{
static uint a;
if(a<500) a++; //测试端口
else {a=0;DP_disp(0,ad_result(0));}
} |
|