找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1534|回复: 7
收起左侧

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

[复制链接]
ID:811381 发表于 2021-4-8 20:59 | 显示全部楼层 |阅读模式
捕获.PNG
朋友们,为什么我这个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;
        }
}

回复

使用道具 举报

ID:39632 发表于 2021-4-9 00:07 | 显示全部楼层
P0没有定义?
回复

使用道具 举报

ID:811381 发表于 2021-4-9 08:16 | 显示全部楼层

P0没有定义,直接接8255的D0-D7
回复

使用道具 举报

ID:811381 发表于 2021-4-9 08:23 | 显示全部楼层
rst_8255=0;低电平,不让8255复位输入也是不对的,8255的三个端口做输出时都能够正确输出数据,但读的时候就读不进来正确的数据,是时许的问题么?请朋友们指正这个测试程序,谢谢!
回复

使用道具 举报

ID:39632 发表于 2021-4-9 23:12 | 显示全部楼层
P0端口当输入用时,要先置位。
回复

使用道具 举报

ID:811381 发表于 2021-4-11 14:55 | 显示全部楼层
wlpdd 发表于 2021-4-9 23:12
P0端口当输入用时,要先置位。

试过读数前先置位,都进来的数据还是不对
回复

使用道具 举报

ID:811381 发表于 2021-4-12 16:47 | 显示全部楼层
这种自己定义时序的方法只实现了输出,没能实现读的功能,只有使用XBYTE实现了,如有大虾实现了,请不吝指教,感谢!
回复

使用道具 举报

ID:184978 发表于 2022-3-7 10:24 | 显示全部楼层
我是自己定义时序的方法,也不能实现读的功能
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表