标题: 为什么我这个8255PB口读的数据读不进来呢?PA写数据能正常输出 [打印本页]

作者: 的事发生的    时间: 2021-4-8 20:59
标题: 为什么我这个8255PB口读的数据读不进来呢?PA写数据能正常输出

朋友们,为什么我这个8255PB口读的数据读不进来呢?PA写数据能正常输出,单PB读进来的数据不对呢?

单片机源程序如下:
#include<reg51.h>
#include<intrins.h>
sbit rd_8255=P2^0;
sbit wr_8255=P2^1;
sbit a0=P2^2;
sbit a1=P2^3;
sbit rst_8255=P2^4;
sbit cs_8255=P2^5;
int temp=0;
void wcom_8255(iunsigned char x)
{
         cs_8255=0;
        rd_8255=1;
        a1=1;
        a0=1;
        P0=x;
        wr_8255=1;
        _nop_();
        wr_8255=0;
          cs_8255=1;
}
void PA_wdata8255(unsigned char x)
{
         cs_8255=0;
        rd_8255=1;
        a1=0;
        a0=0;
        P0=x;
        wr_8255=1;
        _nop_();
        wr_8255=0;
         cs_8255=1;
}
unsigned char PB_rdata8255(void)
{        
         unsigned char i;
        cs_8255=0;
        wr_8255=1;
        a1=0;
        a0=1;
        i=P0;
        rd_8255=1;
        _nop_();
        rd_8255=0;
         cs_8255=1;
        return i;
}
main()
{        
            unsigned char temp;
        rst_8255=1;
        wcom_8255(0x82);
         while(1)
        {        
                temp=PB_rdata8255();
                P1=temp;
        }
}


作者: wlpdd    时间: 2021-4-9 00:07
P0没有定义?
作者: 的事发生的    时间: 2021-4-9 08:16
wlpdd 发表于 2021-4-9 00:07
P0没有定义?

P0没有定义,直接接8255的D0-D7
作者: 的事发生的    时间: 2021-4-9 08:23
rst_8255=0;低电平,不让8255复位输入也是不对的,8255的三个端口做输出时都能够正确输出数据,但读的时候就读不进来正确的数据,是时许的问题么?请朋友们指正这个测试程序,谢谢!
作者: wlpdd    时间: 2021-4-9 23:12
P0端口当输入用时,要先置位。
作者: 的事发生的    时间: 2021-4-11 14:55
wlpdd 发表于 2021-4-9 23:12
P0端口当输入用时,要先置位。

试过读数前先置位,都进来的数据还是不对
作者: 的事发生的    时间: 2021-4-12 16:47
这种自己定义时序的方法只实现了输出,没能实现读的功能,只有使用XBYTE实现了,如有大虾实现了,请不吝指教,感谢!
作者: lzh1762    时间: 2022-3-7 10:24
我是自己定义时序的方法,也不能实现读的功能





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1