ADC0808,中断方式采样的单片机C语言代码
时间: 2023-07-09 17:17:08 浏览: 78
好的,以下是一个基于AT89C51单片机和ADC0808 AD转换器的C语言代码示例,采用中断方式进行循环采集:
```c
#include <reg51.h>
#define ADC0808_OUT P2
#define ADC0808_IN P1
unsigned char adc_data;
sbit LED = P3^0; // LED指示灯
sbit OVER = P3^1; // 超过5V指示灯
sbit ST = P3^2; // 启动位
void ADC_init() {
ADC0808_IN = 0xff; // 设置ADC0808的输入端口为高阻态
ADC0808_OUT = 0x00; // 设置ADC0808的输出端口为全零
}
void ADC_start() {
ST = 0; // 启动ADC转换
ST = 1;
}
void ADC_ISR() interrupt 5 {
adc_data = ADC0808_OUT; // 读取ADC0808输出的数值
P0 = adc_data; // 将读取到的数值显示在LED数码管上
if (adc_data > 0x7f) { // 如果采集到的电压超过5V
OVER = ~OVER; // 则让OVER指示灯闪烁
}
ADC_start(); // 开始下一次ADC转换
}
void main() {
ADC_init(); // 初始化ADC0808
EA = 1; // 允许中断
ET0 = 1; // 允许定时器0中断
ET1 = 1; // 允许定时器1中断
ET2 = 1; // 允许定时器2中断
ES = 1; // 允许串口中断
ET2 = 1; // 允许外部中断2
ADC_start(); // 启动第一次ADC转换
while (1); // 循环等待中断
}
```
以上代码只是一个示例,具体实现还需要根据硬件和电路实际情况进行调整和改进。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)