请大侠看看我的程序问题在哪里 十分感谢 不用考虑7289先 就转换 在线仿真 ADC0H 和ADC0L 没结果
#include <C8051F020.h>
#include "ad_initial.h"
#include "ZLG7289.h"
#define VREF0 2.43 //内部基准电压为2.43V
void DelayMs(unsigned int n)//延时(n)MS
{
unsigned int i;
for(;n>0;n--)
{
for(i=2211;i>0;i--);
}
}
void SysClkInit(void)//配置系统时钟
{
int i;
OSCXCN = 0x67; // 使用外部24M晶振
for (i=0; i < 256; i++) ; // 延时大于1ms
while (!(OSCXCN & 0x80)) ; // 查询是否稳定起振
OSCICN = 0x88; // 切换到外部晶振
}
void SystemInit(void)//系统配置
{
PCA0MD&=~0x40;//禁止看门狗定时器
//EA=1;
}
void PortInit(void)//端口配置
{
P0MDOUT = 0XFF;
P1MDOUT = 0XFF;
P2MDOUT = 0XFF;
P3MDOUT = 0XFF;
P74OUT = 0XFF;
}
void main(void)
{
//uint sum;
//uchar table[3];
float dat;
float output;
SystemInit();//系统配置
SysClkInit();//配置系统时钟
PortInit();//端口配置
/* DelayMs(300); //延时300ms,等待ZLG7289 复位完毕
//ZLG7289_Init(40); //调用ZLG7289 的初始化函数
DelayMs(1000);
ZLG7289_Test();
DelayMs(2000);
ZLG7289_Reset();
DelayMs(1000);*/
ADC0_Init();
AD0EN=1;
while(1)
{
AD0INT=0; //清除转换结果
AD0BUSY=1; //启动转换
DelayMs(10);
while(!AD0INT); //等待AD0INT=1;
dat=ADC0H*256+ADC0L;
output=2.43/4096*dat;
DelayMs(100);
/* sum = output*100;
table[0]=sum/100;
table[1]=sum%100/10;
table[2]=sum%100%10;
ZLG7289_Download(0,0,1,table[0]);
ZLG7289_Download(0,1,0,table[1]);
ZLG7289_Download(0,2,0,table[2]);*/
}
}
void ADC0_Init (void)
{
REF0CN=0x03; //使用VREF0电压基准
AMX0CF=0x00; //选择单端输入
AMX0SL=0x00; //选择AIN0输入
ADC0CF=0x80; //ADC转换时钟2.5M 增益为1
ADC0CN = 0x41; // 关闭ADC0; 低能追踪模式
// ADC0使用向AD0BUSY写1做转换源
//使用左对齐输出模式
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>