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

📄 adc0808.txt

📁 ADC0808系列AD转换器
💻 TXT
字号:
#include<reg51.h>
      unsigned int xdata *ADC; /*定义ADC0809端口指针*/
      unsigned int xdata *ADCdata; /*定义ADC0809数据缓冲器指针*/
      unsigned char I;
void main( )
{
      ADC=0x00f0; /*定义端口地址和数据缓冲器地址*/
      ADCdata=0x1000; 
      I=8; /* ADC0809有8个模拟输入通道*/
      EA=1; EX1=1;IT1=1; /*开中断*/ 
      *ADC=I; /*启动ADC0809*/
      WHILE(I); /*等待8个通道A/D转换完*/
}
void int1() interrupt 2
{
      unsigned char tmp;
      temp=*ADC; /*读取A/D转换结果*/
      *ADCdata=temp; /*结果值存到数据缓冲区*/
      ADCdata++; /*数据缓冲区地址加1*/
      i—;
      *ADC=I; /*启动下一个模拟输入通道A/D转换*/
}

除了用指针变量来实现对内存地址的直接操作外,c51编译器还提供一组宏,该宏定义文件为:“absacc.h”,利用它可十分方便地实现对任何内存空间的直接操作,改写上面的程序:
      #include<reg51.h>
      #include<absacc.h> /*包含绝对地址操作预定义头文件*/
      #define ADC 0x00f0; /*定义ADC0809端口地址*/
      #define ADCdata 0X1000 /*定义数据缓冲器地址*/
      unsigned char I;
void main( )
{
      I=8; / *ADC0809有8个模拟输入通道*/
      EA=1;ex1=1;it1=1; / *开中断*/
      XBYTE[ADC]=I; /*启动0809 */
      While(i); /*等待8个通道转换完毕*/
}

void int1() interrupt2 {
      unsigned char tmp;
      tmp=XBYTE[ADC]; /*读取A/D转换结果*/
      i--;
      XBYTE[ADCdata+I]=tmp; /**结果值存储到数据缓冲器*/
      XBYTE[ADC]=I; /*启动下一个模拟输入通道A/D转换*/
}

⌨️ 快捷键说明

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