请教stc自带ad的51单片机的使用方法

有人能简单的告诉我stc里自带ad的51单片机的使用方法和编程方法吗?谁能给个带注释的例子程序我看看吗,谢谢啦... 有人能简单的告诉我stc里自带ad的51单片机的使用方法和编程方法吗?谁能给个带注释的例子程序我看看吗,谢谢啦 展开
 我来答
吉吉手
2012-12-21 · TA获得超过224个赞
知道答主
回答量:156
采纳率:0%
帮助的人:75.1万
展开全部
#include<reg52.h>#include<intrins.h>
#define uchar unsigned char#define uint unsigned int
sfr ADC_CONTR = 0xbc; //ADC控制寄存器
sfr ADC_RES = 0xbd; //ADC转换结果高八位寄存器
sfr ADC_LOW2 = 0xbe; //ADC转换结果低两位寄存器
sfr P1ASF = 0x9d; //P1口模拟功能控制寄存器

#define ADC_POWER 0x80 //ADC电源控制位
#define ADC_FLAG 0x10 //ADC结束标志位
#define ADC_START 0x08 //ADC启动标志位
#define ADC_SPEEDLL 0x00 //540个时钟周期
#define ADC_SPEEDL 0x20 //360个时钟周期
#define ADC_SPEEDH 0x40 //180个时钟周期
#define ADC_SPEEDHH 0x60 //90 个时钟周期

void InitUart();
void SendData(uchar);
void Delay(uint n);
void InitADC();

uchar ch=0; //ADC通道选择
void main()
{
InitUart(); //初始化串口
InitADC(); //初始化ADC
IE = 0xa0; //打开总中断

while(1);}
/*ADC中断函数*/
void ads_isr() interrupt 5 using 1
{
ADC_CONTR&=!ADC_FLAG; //将ADC结束标志位清零

SendData(ch); //将对应ADC通道号发送给电脑 SendData(ADC_RES); //将转换结果发送给电脑
if(++ch > 7)ch = 0; //下一个ADC通道 ADC_CONTR = ADC_POWER|ADC_SPEEDLL|ADC_START|ch; //打开ADC电源、转换时间540个时钟周期、开始转换、选择通道号
}
/*初始化ADC寄存器*/
void InitADC()
{
P1ASF = 0xff; //定义p1口为ADC转换口
ADC_RES = 0;
ADC_CONTR = ADC_POWER|ADC_SPEEDLL|ADC_START|ch; //打开ADC电源、转换时间540个时钟周期、开始转换、选择通道号
Delay(2); //等待ADC上电稳定然后开始ADC转换?应该是先开电源,等待后再START,可能STC官方程序有问题
}

/*初始化串口*/
void InitUart()
{
SCON = 0x5a;
TMOD = 0x20;
TH1 = 0xfd; //在11.0592MHZ晶振下,波特率为9600
TL1 = 0xfd;
TR1 = 1;
}

/*串口发送数据*/
void SendData(uchar dat)
{
while(!TI);
TI = 0;
SBUF = dat;
}

/*延时函数*/
void Delay(uint n)
{
uint x;

while(n--)
{
x=5000;
while(x--);
}
}

注释原创
2004012430
2013-01-05 · 超过43用户采纳过TA的回答
知道小有建树答主
回答量:128
采纳率:0%
帮助的人:92.4万
展开全部
直接下载一个老姚的规格书就可以了,上面有例子的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
indexI0
2012-12-27 · TA获得超过488个赞
知道小有建树答主
回答量:274
采纳率:0%
帮助的人:66.9万
展开全部
celiang: ;
; ;*************测量值
;
;
MOV 0C5H,#11101010B ; 电源开启,速率,速率,完成,开始,010=P1.1口
NOP ; 转换中
NOP ;
NOP ;
NOP ;
NOP ;
WAIT: ;
MOV A,0C5H ; 读转换标志
JNB ACC.4,WAIT ;
;ANL ADC_CONTR,ADC_FLAG ;
;MOV A,ADC_LOW2 ;
;MOV 4BH,A ;
MOV A,0C6H ; 高8位读出
MOV 4AH,A ;
RET ;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式