找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4821|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

(資料分享)STC12C5A60S2內(nèi)部自帶AD的使用

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:494791 發(fā)表于 2019-5-30 21:41 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int  
#define uchar unsigned char
sfr P1ASF=0X9D;                 //P1口模擬功能控制寄存器
sfr        ADC_CONTR=0XBC;        //ADC控制寄存器
sfr        ADC_RES=0XBD;        //AD轉(zhuǎn)換結(jié)果存放
sfr        ADC_RESL=0XBE;        //AD轉(zhuǎn)換結(jié)果存放
sfr        AUXR1=0XA2;               
//sfr        IE=0XA8;               
//sfr        IPH=0XB7;        //中斷優(yōu)先級控制寄存器高
//sfr        IP=0XB8;        //中斷優(yōu)先級控制寄存器低

uchar temp;

unsigned int result=0,resulth=0;

void delay1ms(uint z)   //誤差 0us
{
    unsigned char a,b,c;
    for(c=z;c>0;c--)
        for(b=142;b>0;b--)
            for(a=2;a>0;a--);
}

void ADinit()
{
   P1ASF=0x01;        //P1^0口作為AD輸入口
   ADC_CONTR=0x20;          //P1^0口作為AD輸入口,360個時鐘周期轉(zhuǎn)換一次
   AUXR1=0x00;        //高八位存放于ADC_RES,低二位存放于ADC_RESL
   IE=0XA0;                      //開總中斷允許AD中斷
}
void ADser() interrupt 5
{
     P2=0xaa;
     _nop_();
         _nop_();
         _nop_();         
         _nop_();                                   //延時4個時鐘周期,使其趨于穩(wěn)定
     temp=(ADC_CONTR|0X10)<<4; //此時ADC_FLAG的值被移入CY位;
     ADC_CONTR=0xC0;           //轉(zhuǎn)換完成,將ADC_FLAG清零
     resulth=ADC_RES;          //讀取高8位值
     P2=ADC_RES;            
     result=(unsigned int)(resulth*5/256);
     P2=result;                               //把ADC_RES的值以點亮小燈的形式顯示出來
}
void main()
{
    ADinit();
        while(1)
        {
           ADC_CONTR=0XA8;;//開始AD轉(zhuǎn)換
           delay1ms(1000);  //以下延時非必須,為測試程序而加,
           delay1ms(1000);
           delay1ms(1000);
           delay1ms(1000);
           delay1ms(1000);
           delay1ms(1000);
           delay1ms(1000);
           delay1ms(1000);
           delay1ms(1000);
           delay1ms(1000);
           delay1ms(1000);
           delay1ms(1000);
           delay1ms(1000);
           delay1ms(1000);
           delay1ms(1000);
           delay1ms(1000);
           delay1ms(1000);
           delay1ms(1000);
           delay1ms(1000);
           delay1ms(1000);
           delay1ms(1000);
           delay1ms(1000);
           delay1ms(1000);
           delay1ms(1000);
           ADC_CONTR=0X20;;//關(guān)閉AD轉(zhuǎn)
           P2=0xff;
           delay1ms(1000);
           delay1ms(1000);
           delay1ms(1000);
           delay1ms(1000);
           delay1ms(1000);
           delay1ms(1000);
           delay1ms(1000);
           delay1ms(1000);
           delay1ms(1000);
           delay1ms(1000);
           delay1ms(1000);
           delay1ms(1000);
           delay1ms(1000);
           delay1ms(1000);
           delay1ms(1000);
           delay1ms(1000);
           delay1ms(1000);
           delay1ms(1000);
           delay1ms(1000);
           delay1ms(1000);
           delay1ms(1000);
           delay1ms(1000);
           delay1ms(1000);
           delay1ms(1000);
        }
}
我用的是普中的板子,P2口接有8個共陽極的LED燈,不同的結(jié)果會有不同的現(xiàn)象,可以通過小燈的亮滅讀取結(jié)果                                                                 

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏5 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:382699 發(fā)表于 2020-11-2 00:09 | 只看該作者
非常感謝,找到一個可以理解的AD程序!
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表