单片机的对应ST脚的P口接上0809时就被拉低了。Proteus仿真什么问题都没有。0809要注意什么问题么?
有两个问题:1,我希望设定的是500K,用定时器方式2也是设成255。可从P口出来的就是50K 啊。
2,ST脚被拉低,但不接0809时单片机P口是正常的。
之前ST,OE,EOC,CLK都用的是P1口,然后P3口读数据,P0口接上拉电阻后接的LED。。。。
现在AD出来的没变化。P0口是FF。
下边是程序。请高手帮忙分析一下啊。
#include"reg52.h"
#define uchar unsigned char
sbit ST=P1^2;
sbit EOC=P1^1;
sbit OE=P1^0;
sbit CLK=P1^3;
sbit C3=P1^4;
sbit C2=P1^5;
sbit C1=P1^6;
uchar AD_DATA; //保存经AD转换后的数据
/**********延时函数************/
void delay(uchar i)
{
uchar j;
while(i--)
{
for(j=125;j>0;j--)
;
}
}
/*********系统初始化***********/
void init()
{
EA = 1; //开总中断
TMOD = 0x02; //设定定时器T0工作方式
TH0=255; //利用T0中断产生CLK信号
TL0=255;
TR0=1; //启动定时器T0
ET0=1;
ST=0;
OE=0;
}
/***********T0中断服务程序************/
void t0(void) interrupt 1 using 0
{
CLK=~CLK;
}
/***********AD转换函数**********/
void AD()
{
ST=0;
C3=1;
C2=1;
C1=0; //选择通道IN0
delay(10);
ST=1; //启动AD转换
delay(10);
ST=0;
while(0==EOC)
;
OE=1;
AD_DATA=P2;
OE=0;
P0=AD_DATA;
}
/*****************主函数**************/
void main()
{
init();
while(1)
{
AD();
}
}
[
本帖最后由 pippin 于 2010-9-4 16:33 编辑 ]