
一个由89c51与ADC0809构成的电压采集装置,它的程序如下:请问有没有哪不对?我用protues仿真时不能实现?
#include<reg51.h>#defineucharunsignedcharsbitSTART=P0^0;sbitOE=P0^1;sbitRELAY=P0^2;sb...
#include <reg51.h>
#define uchar unsigned char
sbit START=P0^0;
sbit OE=P0^1;
sbit RELAY=P0^2;
sbit EOC=P3^2;
uchar CBA=0x00;
uchar CJDATA;
main()
{
EA=1;//设置IE,开CPU中断
IT0=1;//设置TCON,将INT0触发设置为下边沿触发
EX0=1;//开INT0中断
P2=CBA;//用P2口选择0809的模拟量输入端
START=0;//启动AD转换
START=1;
START=0;
}
void EOCINTERRUPT() interrupt 1 using 1//中断程序
{
P1=0xff;//向P1口写1,准备接收数据
OE=1;//0809输出使能
CJDATA=P1;//读P1口的数据
OE=0;//数据接收完毕,使0809输出不使能
if(CJDATA>0X3F) RELAY=0;//判断采集的数据与设定数据关系,由P0.2口执行操作,使继电器工作或不工作
IE0=0;//清除INT0中断标志
if(CBA>0x02) CBA=0x00;//设置环形循环
CBA++;
P2=CBA;//选择0809的模拟量输入端
START=1;//再次启动AD转换
START=0;
} 展开
#define uchar unsigned char
sbit START=P0^0;
sbit OE=P0^1;
sbit RELAY=P0^2;
sbit EOC=P3^2;
uchar CBA=0x00;
uchar CJDATA;
main()
{
EA=1;//设置IE,开CPU中断
IT0=1;//设置TCON,将INT0触发设置为下边沿触发
EX0=1;//开INT0中断
P2=CBA;//用P2口选择0809的模拟量输入端
START=0;//启动AD转换
START=1;
START=0;
}
void EOCINTERRUPT() interrupt 1 using 1//中断程序
{
P1=0xff;//向P1口写1,准备接收数据
OE=1;//0809输出使能
CJDATA=P1;//读P1口的数据
OE=0;//数据接收完毕,使0809输出不使能
if(CJDATA>0X3F) RELAY=0;//判断采集的数据与设定数据关系,由P0.2口执行操作,使继电器工作或不工作
IE0=0;//清除INT0中断标志
if(CBA>0x02) CBA=0x00;//设置环形循环
CBA++;
P2=CBA;//选择0809的模拟量输入端
START=1;//再次启动AD转换
START=0;
} 展开
展开全部
你程序中只有AD转换,并没有显示和处理函数,怎么会显示出来呢
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询