8051单片机如何对I/O口进行位操作?

来源:百度知道 编辑:UC知道 时间:2024/06/03 22:51:05
我使用的单片机是w77e058,用它和另一个单片机并行通信,通过w77e058的P2口传输数据,int_0触发另一个单片机的INT0,ASW为应答信号。w77e058的程序如下:

#include <w77c32.h>
//#include<stdio.h>

sbit P2_0 = P2^0; //定义并行口4位输出位
sbit P2_1 = P2^1;
sbit P2_2= P2^2;
sbit P2_3= P2^3;
sbit int_0= P2^4; //触发24E1的外部中断0
sbit ASW= P2^7; //应答信号线

void Delay100us(volatile unsigned char n)
{
unsigned char i;
while(n--)
for(i=0;i<35;i++)
;
}//n=1,delay100us

void Delayms(volatile unsigned char n)
{
unsigned char j;
while(n--)
for(j=0;j<10;j++)
Delay100us(10);

}//n=1,delay10ms

void main()
{
P2=0xff;
int_0=0;
ASW=0;
Delayms(1);

while(1)
{

int_0=0;
ASW=1;
Delay100us(10);
int_0=1;
ASW=0;
Delay100us(10);

}

}

这是一个测试程序,想让int_0和ASW产生方波信号,但是单片机好像没有工作,一直是高电平。请问怎样才能

单片机的第二功能,是需要设置的,如果没有设置刚P3口就像其它的P0-P2口一样,作为普通的I/O口线..
如果设置后,有些就不能当普通I/O口用了..
P3.0,P3.1是串行通信用的...串行通信时需要设置波特率,就不能当一般的I/O口用了..当然,当你关闭波特率后,就可以当普通I/O口用了..
P3.2,P3.3是两个中断口,如果设置了中断,就不要当I/O口用了..关了中断,就和普通I/O口一样了..
P3.4,P3.5是两个定时器用的口,如果设置了计数器的话,就不要当I/O口用了..不用计数器,就和普通I/O口一样了..
P3.6,P3.7是读写控制口,主要用于对外部存储器的读写,是不用设置的..如果程序中的MOVX指令的话,那这两个口是会有相应该动作的...没有MOVX的话,也和一般I/O口一样用...

你是用示波器看的吗?你用万用表量是测不出的,建议用示波器看看!检测下晶振有无起振!
程序上应该没错误!!!

唉!这么高的分,只能望洋兴叹!要是一直没有人回答,分不是都浪费了,我可想要啦!我太缺它啦!

程序上应该没错误!!!

用汇编啊 简单方便

不懂