历史上的今天
返回首页

历史上的今天

今天是:2025年02月01日(星期六)

2018年02月01日 | STC12C5A60S2 AD转换C语言示例程序(ADC查询方式)

2018-02-01 来源:eefocus

STC12C5A60S2 C语言示例程序(ADC查询方式)

#include "reg51.h" 
#include "intrins.h" 

#define FOSC    18432000L 
#define BAUD    9600

typedef unsigned char BYTE; 
typedef unsigned int WORD; 

/*Declare SFR associated with the ADC */ 
sfr ADC_CONTR   =   0xBC;           //ADC control register 
sfr ADC_RES     =   0xBD;           //ADC high 8-bit result register 
sfr ADC_LOW2    =   0xBE;           //ADC low 2-bit result register 
sfr P1ASF       =   0x9D;           //P1 secondary function control register 

/*Define ADC operation const for ADC_CONTR*/ 
#define ADC_POWER   0x80            //ADC power control bit 
#define ADC_FLAG    0x10            //ADC complete flag 
#define ADC_START   0x08            //ADC start control bit 
#define ADC_SPEEDLL 0x00            //420 cLOCks 
#define ADC_SPEEDL  0x20            //280 clocks 
#define ADC_SPEEDH  0x40            //140 clocks 
#define ADC_SPEEDHH 0x60            //70 clocks 

void InitUART(); 
void InitADC(); 
void SendData(BYTE dat); 
BYTE GetADCResult(BYTE ch); 
void Delay(WORD n); 
void ShowResult(BYTE ch); 

void main() 

    InitUart();                     //Init UART, use to show ADC result 
    InitADC();                      //Init ADC sfr 
    while (1) 
    { 
        ShowResult(0);              //Show Channel0 
        ShowResult(1);              //Show Channel1 
        ShowResult(2);              //Show Channel2 
        ShowResult(3);              //Show Channel3 
        ShowResult(4);              //Show Channel4 
        ShowResult(5);              //Show Channel5 
        ShowResult(6);              //Show Channel6 
        ShowResult(7);              //Show Channel7 
    } 


/*---------------------------- 
Send ADC result to UART 
----------------------------*/ 
void ShowResult(BYTE ch) 

    SendData(ch);                   //Show Channel NO. 
    SendData(GetADCResult(ch));     //Show ADC high 8-bit result 

//if you want show 10-bit result, uncomment next line 
//    SendData(ADC_LOW2);             //Show ADC low 2-bit result 


/*---------------------------- 
Get ADC result 
----------------------------*/ 
BYTE GetADCResult(BYTE ch) 

    ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START; 
    _nop_();                        //Must wait before inquiry 
    _nop_(); 
    _nop_(); 
    _nop_(); 
    while (!(ADC_CONTR & ADC_FLAG));//Wait complete flag 
    ADC_CONTR &= ~ADC_FLAG;         //Close ADC 

    return ADC_RES;                 //Return ADC result 


/*---------------------------- 
Initial UART 
----------------------------*/ 
void InitUart() 

    SCON = 0x5a;                    //8 bit data ,no parity bit 
    TMOD = 0x20;                    //T1 as 8-bit auto reload 
    TH1 = TL1 = -(FOSC/12/32/BAUD); //Set Uart baudrate 
    TR1 = 1;                        //T1 start running 


/*---------------------------- 
Initial ADC sfr 
----------------------------*/ 
void InitADC() 

    P1ASF = 0xff;                   //Open 8 channels ADC function 
    ADC_RES = 0;                    //Clear previous result 
    ADC_CONTR = ADC_POWER | ADC_SPEEDLL; 
    Delay(2);                       //ADC power-on and delay 


/*---------------------------- 
Send one byte data to PC 
Input: dat (UART data) 
Output:- 
----------------------------*/ 
void SendData(BYTE dat) 

    while (!TI);                    //Wait for the previous data is sent 
    TI = 0;                         //Clear TI flag 
    SBUF = dat;                     //Send current data 


/*---------------------------- 
SOFtware delay function 
----------------------------*/ 
void Delay(WORD n) 

    WORD x; 

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


推荐阅读

史海拾趣

兵字(BingZi)公司的发展小趣事

为了进一步提升公司的管理水平和市场竞争力,兵字公司决定进行企业规范化和市场化运作。公司建立了完善的管理体系和运营机制,优化了业务流程和组织结构,提高了工作效率和响应速度。同时,兵字公司还积极引进外部投资和战略合作伙伴,为公司的发展注入了新的活力和动力。

Eska公司的发展小趣事

Eska公司注重技术传承与创新发展。作为奥地利唯一一家仍在为手套制造业培训学徒和技术工人的企业,Eska坚持手套传统工艺和技术的秉承。同时,公司也积极引入新技术和新材料,不断提升产品的性能和质量。这种技术传承与创新相结合的发展模式,使得Eska在保持传统优势的同时,也能不断适应市场的变化和发展。

DIOTEC公司的发展小趣事

为了进一步拓展欧洲市场,DIOTEC于1989年在斯洛文尼亚的特尔博夫列建立了第二家工厂。这座工厂成为了DIOTEC在欧洲的重要生产基地,不仅提高了产能,还使得公司能够更好地服务欧洲客户。斯洛文尼亚工厂的建成,标志着DIOTEC在欧洲市场的地位得到了进一步巩固。

安普康(AMPCOM)公司的发展小趣事

安普康(AMPCOM)自创立之初,就致力于将品牌推向国际市场。随着公司规模的扩大和产品线的丰富,安普康开始实施全球商标注册战略。从2011年首次申请安普康AMPCOM商标,到随后的几年内在泰国、日本、新加坡、老挝、澳大利亚等多个国家成功注册,安普康的品牌影响力逐渐扩大。这一过程中,公司不仅面临着不同国家法律法规的挑战,还需应对文化差异和市场需求的差异。然而,凭借专业的团队和精准的市场定位,安普康成功地将品牌推向了全球舞台。

Hamamatsu公司的发展小趣事

对于安普康来说,品质是企业生存和发展的基石。自成立以来,公司始终将产品品质放在首位,从原材料采购到生产流程控制,再到产品测试和包装,每一个环节都严格把关。这种对品质的执着追求使得安普康的产品在市场上赢得了良好的口碑。无论是电信、移动、电力等大型企业,还是智能大厦、家庭用户等终端客户,都对安普康的产品给予了高度评价。

HCC Industries公司的发展小趣事

随着国内市场的饱和,HCC Industries在2010年制定了国际化发展战略。公司首先选择在欧洲市场设立分支机构,利用其先进的制造工艺和技术优势,迅速打开了当地市场。随后,HCC又相继在亚洲和北美地区设立了多个办事处和生产基地,实现了全球范围内的生产和销售网络布局。这一战略不仅显著提升了HCC的品牌影响力,也为其带来了更加多元化的客户群体和更广阔的市场空间。

问答坊 | AI 解惑

费恩曼物理学讲义(中文版 三卷)

一部世界级的物理学好书。文件太大,分开压缩,必须10个包全部下载后,一起解压。…

查看全部问答>

altium

谁有altium的原件库啊?…

查看全部问答>

Platform Builder远程工具使用问题

问题描述: 我现在有两台Windows CE 5.0设备 两台设备都可以使用ActiveSync同步软件 都可链接成功,且利用其向FLASH里面拷贝程序等等 但是在Platform Builder远程工具的使用上 其中一台设备可以连接上 比如使用Remote Zoom In或者Remote Proc ...…

查看全部问答>

有没有人做过在2410+linux做过opengl程序的移植

我想在2410+linux+qt的板子上实现调用opengl库的程序,不知道在这实现的过程中有那些需要注意,也不知道2410的芯片支不支持opengl 库…

查看全部问答>

RDA中的PULL

我现在在做PPC的数据库开发,需要将模拟器PPC的SQLCE与服务器上的SQL2000同步,RDA中有三个函数Submit,Pull,Push. 在Submit时是成功的,但在Pull时就出现了问题。 如下 ERROR 1 of 2 Description:\'SQL Server CE encountered problems in open ...…

查看全部问答>

字模格式转换,从HZK16转换为单片机格式,有没有简捷的程序?

现在有HZK16字库(DOS下的字库),是横向8点左高位 取模的 想转化为 纵向8点下高位 取模格式,有没有简捷的程序推荐? 网上有个例子 for(m=0;m…

查看全部问答>

告诉你一个快速学习PIC单片机的好方法!

 告诉你一个快速学习PIC单片机的好方法! 最近在优酷上看到了一个叫《我的PIC日记》的视频教程,觉得挺好,上手挺快的,我把视频资料整理了一下,供大家参考:     高显生原创PIC单片机的基础教程,是继《我和单片机的21天之 ...…

查看全部问答>

运放波形很奇怪

本帖最后由 paulhyde 于 2014-9-15 04:00 编辑 用双运放max4016接的一个跟随器,然后后级再做一个反向放大器,通过模拟开关选择放大倍数。 现在检测到 跟随器输出端波形上,每个周期的特定位置上都会有一道噪音。 想问两个问题: 1.这个算是自 ...…

查看全部问答>

【转贴】stm32 串口第一字节丢失问题分析

STM32 串口 发送 必须 先检测 状态,否则 第一个 字节 无法 发出,发送完毕,必须检测发送状态是否完成,否则,发送不成功, 使用stm32f10x调试串口通讯时,发现一个出错的现象,硬件复位重启之后,发送测试数据0x01 0x02 0x03 0x04..接收端收到的 ...…

查看全部问答>

552X核心板一次成功,嘿嘿

驱动程序还没写好,上图 …

查看全部问答>