- 1、本文档共46页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
四、可编程并行接口8255A (1)和外设相连的引脚 PA7~PA0 :A端口数据信号引脚 PB7~PB0 :B端口数据信号引脚 PC7~PC0 :C端口数据信号引脚 DATE: * PAGE: * 四、可编程并行接口8255A DATE: * PAGE: * (2)和CPU相连的引脚 RESET:复位信号,高电平有效。当该引脚为高电平时,所有内部寄存器都被清除,同时A、B、C三个数据端口被自动设为输入端口。 D7~D0:8255A的数据线,和系统数据总线相连。 RD:读引脚,低电平时,CPU可以从8255A选中的端口读出数据,经系统数据总线送入CPU。 WR:写引脚,低电平时,CPU可以向8255A选中的端口写入数据。 CS:片选引脚,低电平时,可以选中对该芯片操作。 四、可编程并行接口8255A DATE: * PAGE: * (2)和CPU相连的引脚 A1、A0:端口选择信号,接系统地址总线。8255A内部有3个数据端口和1个控制端口,共4个端口。A1、A0不同组合时,对应选中不同端口,如下表所示: 四、可编程并行接口8255A 8255A的控制 8255A共有两个控制字,一个是方式选择控制字,另一个是C端口的置位/复位控制字,这两个控制字通过第7位来区分。如果第7位为1,则该控制字是方式选择控制字,否则是C端口的置位/复位控制字。 (1)方式选择控制字 方式选择控制字用于设定8255A各端口的工作方式,具体格式如下: DATE: * PAGE: * 四、可编程并行接口8255A C端口按位置1/清0控制字 C端口按位置1/置0控制字可以对C端口中的任何一位进行置位/复位,具体格式如下图所示: DATE: * PAGE: * 四、可编程并行接口8255A 8255A的应用 8255A与单片机在采用线选法的情况下最多可连接6片8255,可满足一般情况下的需要。三总线构成如下: 地址总线:地址线A0和A1连接P2.6和P2.5; 数据总线:8255A的数据线D0~D7同8051单片机的P0端口相连; DATE: * PAGE: * 四、可编程并行接口8255A 控制总线: (1)片选信号线CS连接单片机P2.7 。 (2) 在工作方式0下,因为A口、B口和C口都作为I/O口,将8255A的RESET、RD和WR引脚与单片机信号线连接。 (3)在方式1和方式2下,C口作为联络信号,要根据外设的情况将C口的某些位与单片机或外设相连。 DATE: * PAGE: * 四、可编程并行接口8255A 例8-4 如图8-11所示, 8255A的A端口和B端口分别连接两个7段数码管,编程实现两数码管分别静态显示“0”和“1”。 DATE: * PAGE: * 四、可编程并行接口8255A #include reg51.h #include absacc.h #define PORT_A XBYTE[0x1FFF] //A15=0,A14A13=00 #define PORT_B XBYTE[0x3FFF] //A15=0,A14A13=01 #define PORT_CTL XBYTE[0x7FFF] //A15=0,A14A13=11 int main(void) { PORT_CTL=0x80;//设定A、B两组工作在方式0,A和B都是输出口; PORT_A=0xC0; //写“0”字型到8255A的A端口,送数码管显示 PORT_B=0xF9; //写“1”到8255A的B端口,送数码管显示 while(1) ; } ? DATE: * PAGE: * 四、可编程并行接口8255A 例8-5 应用8255构成键盘/数码管接口电路,如图8-12所示。8255的PC0~PC3与四位数码管的位选端相连,PA0~PA7与数码管的段选端相连,PB0~PB3与键盘列线相连,PC0~PC3与键盘行线相连。编写控制程序,实现按下某按键后,计算相应键值的3次方,并送四位数码管显示。 DATE: * PAGE: * 四、可编程并行接口8255A #include reg51.h #include absacc.h #define uchar unsigned char #define uint unsigned int? #define PORT_A XBYTE[0x1FFF] //A15=0,A14A13=00 #define PORT_B XBYTE[0x3FFF] //A15=0,A14A13=01 #define PORT_C XBYTE[0x5FFF] //A15=0,A14A1
文档评论(0)