⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adc0832.c

📁 ADC0832-2应用程序-ADC0832,C语言,KEIL C,51单片机
💻 C
字号:
CODE:
/**********************************************
程序名称:ADC0832子程序
作    者:liuanggh 
时    间:2006.12.30 
**********************************************/
#ifndef ADC0832_H
#define ADC0832_H
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint  unsigned int
#define first_channel   0x02  //通道1
#define second_channel  0x03  //通道2
sbit ADCLK  =P0^0;     //时钟接口
sbit ADDI   =P0^1;     //数据输入接口
sbit ADDO   =P0^2;    //数据输出接口
sbit ADCS =P0^3;    //使能接口
uchar buff[] = {0};
/********************************************************
函数名称:void AD_init(uchar i)
函数作用:初始化ADC0832
参数说明:i=2,表示通道0,i=3,表示通道1
********************************************************/
void AD_init(uchar i) 
{
     ADDI = 1;       /*在第1 个时钟脉冲的下沉之前DI端必须是高电平,表示启始信号*/
     _nop_();
    _nop_();
    ADCS = 0;  //使能ADC0832
    _nop_();
    _nop_();
    ADCLK = 1;
    _nop_();
    _nop_();
    ADCLK = 0;    //形成下降沿1 
    _nop_();
    _nop_();         /*在第2、3个脉冲下沉之前DI端应输入2位数据用于选择通道功能*/
    if( (i&&0x01) == 0)
    ADDI = 0;
    if( (i&&0x01) == 1)
    ADDI = 1;
    _nop_();
    _nop_();
    ADCLK = 1;
    _nop_();
    _nop_();
    ADCLK = 0;    //形成下降沿2 
    _nop_();
    _nop_();
    if( (i&&0x02) == 0)
    ADDI = 0;
    if( (i&&0x02) == 1)
    ADDI = 1;
    ADCLK = 1;
    _nop_();
    _nop_();
    ADCLK = 0;    //形成下降沿3 
    _nop_();
    _nop_();
}
/********************************************************
函数名称:uchar AD_read()
函数作用:读取ADC0832转换的数据
参数说明:无
函数返回:返回8位的数据
********************************************************/
uchar AD_read()
{
     uchar temp = 0;
     uchar temp1 = 0;
     uchar temp2 = 0;
     uchar i = 0;
    for(i = 0; i < 8; i++)
    {
         ADCLK = 1;
        _nop_();
        _nop_();
        ADCLK = 0;   //形成下降沿
        _nop_();
        _nop_();
        if(ADDI)temp1 |= 0x01;
        else temp1 |= 0x00;
        temp1 = temp1 << 1;
    }
    for(i = 0; i < 8; i++)
   {
        if(ADDI)temp = 0x01;
        else temp = 0x00;
        temp = temp << i;
        temp2 |= temp;
        ADCLK = 1;
        _nop_();
        _nop_();
        ADCLK = 0;   //形成下降沿 
        _nop_();
        _nop_();
    }
    if(temp1 == temp2)
    flag = 0;
    return temp1;
}

void delay(void)//延时5ms
{
    unsigned char i,j;
    for(i=10;i>0;i--)
    for(j=248;j>0;j--);
}

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -