找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 810|回复: 3
打印 上一主题 下一主题
收起左侧

新手想请教一下关于单片机+8255a的程序问题

[复制链接]
跳转到指定楼层
楼主
写了一个关于用8255a控制流水灯的代码,但实际却无法运行,想请教一下该如何修改。

单片机源程序如下:
#include<regx52.h>

#include<absacc.h>
#define uchar unsigned char
#define uint unsigned int
#define PA XBYTE[0x8000]
#define PB XBYTE[0x8001]
#define PC XBYTE[0x8002]
void delay(unsigned int n)
{
    unsigned int i=0,j=0;
    for(i=0;i<n;i++)
    {
        for(j=0;j<120;j++);
    }
}
void display()
{
uchar i=0,outdata;
for(i=0;i<8;i++)
  { outdata=~(0x01<<i);
        PB=outdata;
    delay(1000);
  }
}
void main()
{   
    P2=0x80;
    while(1)
{
        display();
}
}


51hei截图20220504115856.png (233.24 KB, 下载次数: 117)

51hei截图20220504115856.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:121859 发表于 2022-5-4 14:39 | 只看该作者
还有一个命令口,你没有初始化8255,当然怎么也不会正常工作的。
回复

使用道具 举报

板凳
ID:155507 发表于 2022-5-4 16:07 | 只看该作者
你的电路有很多问题
RESET  端口 连接138会使他一直复位。
A0,A1 端口 连接138会使他不能选择。




  1. #include <reg52.h>
  2. #include <absacc.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int

  5. #define PA XBYTE[0x8000]
  6. #define PB XBYTE[0x8100]
  7. #define PC XBYTE[0x8200]
  8. #define CR XBYTE[0x8300] //命令口

  9. sbit A8255_Rst=P3^5;


  10. void delay(unsigned int n)
  11. {
  12.         unsigned int i=0,j=0;
  13.         for(i=0;i<n;i++)
  14.         {
  15.                 for(j=0;j<120;j++);
  16.         }
  17. }
  18. void display()
  19. {
  20.         uchar i=0, outdata=0;
  21.         for(i=0;i<8;i++)
  22.         {
  23.                 outdata=~(0x01<<i);
  24.                 PB=outdata;
  25.                 delay(1000);
  26.         }
  27. }
  28. void main()
  29. {   
  30.         A8255_Rst=1;
  31.         A8255_Rst=0;
  32.         CR = 0x80;  //Set control byte for PA = out, PB = out, PC = out.

  33.         //P2=0x80;
  34.         while(1)
  35.         {
  36.                 display();
  37.         }
  38. }

复制代码




回复

使用道具 举报

地板
ID:824490 发表于 2022-5-4 19:11 | 只看该作者
138占用6个IO,8255也才行个IO,为什么要经138中转?138是译码器,同一时刻只有1个Y输出,如何保证8255能正常地工作?
非要用的话,可以用595,只需要的3个IO,就能输出任意组合的8个IO线。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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