我在网上买了一对2262/2272的无线收发模块。编码发射和接收解码分别坐在一起的,2262发射模块有VCC,GND,D10~D13这几个引脚,接收有VCC,GND,VT(解码有效输出),D10~D13。单片机P1.7~1.4分别串联一个电阻接到2262模块的D13~D10,P2.6 P2.7分别是红绿LED.我的想法是绿灯时外部中断关闭,到红灯时打开外部中断,若有外部中断则P1=0x80,这样2272上D13是接收到高电平,可程序里P1改变后2272 上的电平却不在刷新。程序如下:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
void delay(uint x);
uchar flag=0;
void main()
{P1=0x00;
while(1)
{
P2=0xfe; /*绿灯亮*/
if(flag)
{flag=0;
P1=0x00;
delay(100);
P1=0x40;
}
delay(5000);
P2=0xfd; /*红灯亮*/
IT0=0;
EX0=1;
EA=1;
delay(5000);
EA=0; }
}
void delay(uint x)
{uint i,j;
for(i=x;i>0;i--)
for(j=112;j>0;j--){;}}
void x_INT(void) interrupt 0
{EX0=0;
delay(5);
P1=0x80;
flag=1;
EX0=1;
}
在运行到P1=0x40 时,我用万用表测单片机P1.6是高电平,可在与它相连的2262模块的D12上却是几十毫伏。 而且这个时候D13还是高电平。在2272的接收那边,当P1=0x80时,D13确实接到高电平,可D12同样有高电平,真糊涂了,这个倒是次要了。主要是搞不懂为什么P1更新时,为什么收发模块不能同时更新?已经纠结几天了,改程序是徒劳,不知道是不是模块本身的问题。急切希望前辈指点! |