|
用2片373扩展IO口驱动多路继电器,输出与仿真结果完全不同
两片373分别叫Q1和Q2吧,Q1和Q2和数据输入口接51芯片P1口,LE分别接P3.0和P3.1使能,QE全部使能,起始P3.0和P3.1输出0,P1输出一个字节,Q1使能,关Q1;输出下个字节,Q2使能,关Q2。这样Q1和Q2的输出应该保持这两个不同的数据。
试验电路:
Q1输出01,Q2输出03,仿真结果正确,试验电路输出全03.
附程序:
#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit s=P3^5;
sbit P30=P3^0;
sbit P31=P3^1;
sbit P32=P3^2;
sbit P33=P3^3;
uchar mm,st,bc;
//void time(void);
//void delay(void);
void main()
{
mm=0;
st=0;
bc=0;
TCON=0x00;
TMOD=0x01;
TH0=0x3c;
TL0=0xb0;
EA=1;
TR0=1;
ET0=1;
bc=st+1;
P30=0;
P31=0;
P1=0x00;
P30=1;
for(;mm<80;)
P1=0x01;//Q1接收01;循环体定时8s,time每执行一次0.1s
P30=1;
mm=0;
P30=0;
P1=0x03;
P31=1;//Q2接收03
while(1);//防止重复执行主程序
}
void time(void) interrupt 1
{
mm++;
if(mm>95)
mm=85;
TH0=0x3c;
TL0=0xb0;
TR1=1;
}
/* void delay(void)
{
int y;
for(y=0;y<10000;y++) ;
} */
|
|