📄 ad1.c
字号:
//------------------------------------------------
#include <STC_NEW_8051.h>
#include <intrins.h >
#include <math.h >
//------------------------------------------------
#define uint unsigned int
#define uchar unsigned char
/*//------------------------------------------------
sfr ADC_CONTR = 0xBC; //ADC 寄存器定义
sfr P1ASF = 0x9D ; //
sfr ADC_RES = 0xBD; //
sfr ADC_RESL = 0xBE ;
sfr AUXR1 = 0xA2 ;
//------------------------------------------------ */
void delay1(uint ms);
//===============================================
// 函数 :AD操作函数组
//===============================================
void run_adc(void) //初始化AD
{ // uchar adc_con;
ADC_CONTR|=0x80;// //开电源
delay1(1);
P1ASF|=0x40; //引脚p1.6
ADC_CONTR=0xE6; //选通p1.6
delay1(1);
AUXR1&= 0xfb; //ADRJ=0;结果ADC_RESL低2位;ADC_RES高8位
ADC_RES=0x00; // 清零
ADC_RESL=0x00;
ADC_CONTR|=0x08;
_nop_();
_nop_();
_nop_();
_nop_();
ACC=ADC_CONTR;
while ((ACC&0x10)==0x00) ACC=ADC_CONTR; //判断AD转换结束标识ADC_FLAG=1,完成
ADC_CONTR&=0xe7;
//清标识,停止ADC
P1ASF&=0xbf; //清引脚,普通I/O
}
/******************************************************************************
延时函数(us)
******************************************************************************/
void delay(uint us) //delay time
{
while(us--);
}
void delay1(uint ms)
{
uint i,j;
for(i=0;i<ms;i++)
for(j=0;j<15;j++)
delay(1);
}
/******************************************************************************
主程序
******************************************************************************/
void main(void)
{
while(1)
{run_adc();
P0= ADC_RES;
// P0= (ADC_RES*5)/255;
// P0= (ADC_RES*5)%256;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -