📄 adc0832.c
字号:
#include <reg51.h>
//#include <intrins.h>
#include<stdio.h>
//#define uchar unsigned char
//#define uint unsigned int
void write_adc_byte(char data_byte);
char ReadADC(unsigned char channel);
void DelayMs(unsigned int count);
sbit ADC_CS = P3^5; /*使能接口*/
sbit ADC_CLK = P3^2; /*时钟接口*/
sbit ADC_DO = P3^3; /*数据输出接口(复用)*/
sbit ADC_DI = P2^3;/*数据输入接口*/
//************************************************************************
char ReadADC(unsigned char channel)
{
unsigned char i,k;
unsigned char AdcResult; // 8 bit
ADC_CS=0; // Active chip select
k++; // Delay about 1 uS
ADC_CLK=0; // make clock low first
k++;k++;
channel = channel? 0xE0 : 0xC0;
k++;k++; // delay about 2 uS
//--- write command 3 bit ----------
for(i=0; i< 3;i++) {
ADC_DI = (channel & 0x80) != 0;
channel<<=1;
ADC_CLK=1;
k++;k++; // delay about 2 uS
ADC_CLK=0;
}
//--- read ADC result 8 bit --------
AdcResult=0;
for(i=0;i<8;i++) {
ADC_CLK=1;
k++;k++; // delay about 2 uS
ADC_CLK=0;
k++;k++; // delay about 2 uS
AdcResult<<=1;
AdcResult=AdcResult | (ADC_DO & 0x01);
ADC_CLK=1;
k++;k++; // delay about 2 uS
ADC_CLK=0;
k++;k++; // delay about 2 uS
}
ADC_CS=1;
return(AdcResult);
}
//************************************************************************
void DelayMs(unsigned int count)
{ // mSec Delay 11.0592 Mhz
unsigned int i;
while(count) { i = 115; while(i>0) i--;count--; }
}
/*
putchar(0x0C); // clear Hyper terminal
printf("Ch 0 : %bu\n\r",ReadADC(0));
printf("Ch 1 : %bu\n\r",ReadADC(1));
DelayMs(100); // Delay about 100 mS
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -