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

📄 adc0832.c

📁 kile 18b20 温度读取
💻 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 + -