请给一个STC 90C58AD 的单片机AD转换的C程序。谢谢。 有的话发到我的邮箱里lylhe@163.com 谢谢!

本人也参照过DATA SHEET但是它上面写的内容不是很到位,本人也做过程序改进,但是还是效果不好,希望有人与我共同解决这个问题,谢谢! 都是老姚惹的祸!!!

第1个回答  2010-11-22
//定义与ADC有关的特殊功能寄存器
sfr ADC_CONTR =0xC5;
sfr ADC_DATA =0xC6;
sfr ADC_LOW2 =0xBE;
sfr P1M0 =0x91;
sfr P1M1 =0x92;
sbit p20 =P2^0;

void STC90CxxAD_delay(int timer) //延时函数
{
while(timer--);
}

int Ad_Change(char channel) //AD转换
{
int AD_Result_Temp = 0 ;
P1 = 0xff; //将P1口置高,为A/D转换作准备
ADC_CONTR = ADC_CONTR|0x80; //1000,0000打开A/D转换电源
P1M0 = 0x03; //0000,0011用于A/D转换的P1.x口,先设为开漏
P1M1 = 0x03; //0000,0011P1.0--P1.1先设为开漏。断开内部上拉电阻
STC90CxxAD_delay(20); //20

ADC_CONTR = ADC_CONTR&0xE0; //1110,0000 清ADC_FLAG,ADC_START位和低3位
ADC_CONTR = ADC_CONTR|(channel); //设置当前通道号

STC90CxxAD_delay(1); //延时使输入电压达到稳定
ADC_DATA = 0; //清A/D转换结果寄存器
ADC_LOW2 = 0;
ADC_CONTR = ADC_CONTR|0x08; //0000,1000ADCS = 1,启动转换
do { ; }
while((ADC_CONTR & 0x10)==0); //0001,0000等待A/D转换结束

ADC_CONTR = ADC_CONTR&0xE7; //1110,0111清ADC_FLAG位,停止A/D转换
AD_Result_Temp = ((AD_Result_Temp|ADC_DATA)<<2)|(ADC_LOW2&0x03);
//保存返回AD转换的 结果
STC90CxxAD_delay(1); //
return AD_Result_Temp;
}

已调试通过,望对你有用本回答被提问者采纳

有没有STC90C58AD系列单片机的引脚图
有没有STC90C58AD系列单片机的引脚图  我来答 1个回答 #热议# 生活中有哪些成瘾食物?hedxu 2018-05-24 · TA获得超过250个赞 知道小有建树答主 回答量:212 采纳率:100% 帮助的人:81.8万 我也去答题访问个人页 关注 展开全部 追问 有没有知识双列直插式的 追答 图片右边PDIP-40就是双...

关于STC单片机90C52RC的几个简单问题
1. STC的这款单片机基本和Atmel 89C52完全兼容,你用Keil Uv2写程序可以用#include<reg52.h>也可以用从STC官网下载的头文件http:\/\/www.stcmcu.com\/UV2.rar 2. STC90C52RC官网手册在这里http:\/\/www.stcmcu.com\/datasheet\/stc\/STC-AD-PDF\/STC90C58RD+-english.pdf,这个就是52的 3.要引出RXD...

求一个 六维空间邀请码,正确的话再追加50。 邮箱ningjunbobo@163...
哥们,你这样没人给你的,现在邀请码很贵的,都2w积分左右,很难攒。有积分的都准备卖,没人给的。你在某些节日像端午。中秋去申请,不用邀请吗。

请问几个关于火焰纹章-圣邪的意志的问题
从本章开始敌人基本上都是高级职业的了,开始时最好兵分三路,一路从中间走,拉切尔要从右边走,身边最好有强力人物保护,一路从左下走,右边的狂战士比较多,带上剑圣比较容易,左下都是贤者,中间则是几个狙击手,走右路的打完门口的几个杂兵后就可以用拉切尔说得可莱莉亚了,不过要注意后面出现的敌人支援,三路人清完...

相似回答