C0809与8051的一个接口电路图。Р1.硬件连接РP0.0?P0.1?P0.2?P0.3?P0.4?P0.5?P0.6?P0.7РALEР WR? ?P2.7?RDРINTOР+Р+Р+5VРGNDРD0?D1?D2?D3?D4?D5?D6?D7?ADDA?ADDB?ADDC?CLK?ALE?STARTРOEРEOCРIN0?IN1?IN2?IN3?IN4?IN5?IN6?IN7? РVREF+РVREF-РADC0809Р8051Р分?频?器Р2.软件编程Р设接口电路用于一个8路模拟量输入的巡回检测系统,使用中断方式采样数据,把采样转换所得的数字量按序存于片内RAM单元中。采样完一遍后停止采集。РC语言编程:?#include <reg51.h>?#include <.h> //定义绝对地址访问?#define uchar unsigned char?#define IN0 XBYTE[0x7ff8] //定义IN0为通道0的地址?static uchar data x[8]; //定义8个单元的数组,存放结果?uchar xdata *ad_adr; //定义指向通道的指针?uchar i=0;?void main(void)?{?IT0=1; //初始化?EX0=1;?EA=1;?i=0;?ad_adr=&IN0; //指针指向通道0?*ad_adr=i; //启动通道0转换?for (;;) {;} //等待中断?}Рvoid int_adc(void) interrupt 0 //中断函数?{?x[i]=*ad_adr; //接收当前通道转换结果?i++;?ad_adr++; //指向下一个通道?if (i<8)?{?*ad_adr=i; //8个通道未转换完,启动下一个通道返回?}?else?{?EA=0;EX0=0; //8个通道转换完,关中断返回?}?}