目录
题目:
分析题目:
Proteus仿真:
代码:
82c55工作方式:
代码解析:
题目:
单片机扩展一片82C55可编程并行I/O芯片,实现数字量的输入/输出:8个输入开关分别控制8个输出LED。
82C55—可编程的通用并行接口电路(3个8位I/O口)
分析题目:
由题可知,我们可以将82c55的PA口作为输出口连接八个LED,PB口作为输入口连接八个按键。
Proteus仿真:
本题涉及的Proteus文件以及程序源码均在本账号发布
代码:
#include<reg52.h>
#include<absacc.h>
#define uchar unsigned char
#define uint unsigned int
#define PAdata XBYTE[0x7f00] //82c55芯片PA口地址(0111 1111 0000 0000)
#define PBdata XBYTE[0x7f01] //82c55芯片PB口地址(0111 1111 0000 0001)
#define PCdata XBYTE[0x7f02] //82c55芯片PC口地址(0111 1111 0000 0010)
#define contral XBYTE[0x7003] //82c55控制口地址 (0111 1111 0000 0011)
sbit reset=P3^5;
void delayms(uint j)
{
uchar i;
for(;j>0;j--)
{
i=250;
while(--i);
i=249;
while(--i);
}
}
void main()
{
uchar temp;
reset = 1; //82c55复位
delayms(10);
contral = 0x8b; //设置PB,PC口输入,PA口输出(1000 1011)
while(1)
{
temp = PBdata; //读PB口开关值
PAdata = temp; //写PA口
}
}
82c55工作方式:
- 方式0:基本输入/输出;
- 方式1:应答输入/输出;
输入 输出
- 方式2:双向传送;
代码解析:
82C55各端口地址的确定:#define PAdata XBYTE[0x7f00]
82C55各端口地址由P2和P0口决定。
端口地址:P2和P0=16位(根据具体I/O口接法决定,答案不是唯一的)
P2:111 1111 (本程序单片机P2.7口接82c55CS非端,未接的默认为1)
P0:1111 11A1A0 (本程序单片机P0.1口接82c55A1端,P0.0口接82c55A0端)
例:#define PAdata XBYTE[0x7f00] //82c55芯片PA口地址(0111 1111 0000 0000)
I/O口模式设置:contral = 0x8b;
模式1:工作方式选择控制字及端口PC置位/复位控制字(控制I/O口输入/输出)
文章来源:https://www.toymoban.com/news/detail-487362.html
本题PA设为输出(LED显示),PB为输入(检测按键),PC未接设备,所以本题设置为输入(输入输出均可),且均选择方式0(基本输入/输出),本题是将整个PAPB口全部选中,所以选择模式1,则D7=1,按照本题I/O要求D6~D0分别为000 1011(0x8b)文章来源地址https://www.toymoban.com/news/detail-487362.html
到了这里,关于51单片机 82C55扩展控制8个LED,单片机扩展一片82C55可编程并行I/O芯片,实现数字量的输入/输出:8个输入开关分别控制8个输出LED。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!