- 1、本文档共63页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第九章扩展输入输出整理
(1)具有两个8位端口(PA、PB)和两个4位端口(PC的上半部分和下半部分)。 (2)任何端口都可以设定为输入或输出,各端口的输入、输出共有16种组合。 PA口、PB口和PC口均可设定为方式0,并可根据需要,向控制寄存器写入工作方式控制字,规定各端口为输入或输出方式。 * 图9-25 音乐报警接口电路 * 图9-6 PA口方式1输入工作过程示意图 (2)方式1输出 方式1输出时,应答联络信号如图9-7所示。 与 构成一对应答联络信号,应答联络信号功能如下。 :端口输出缓冲器满信号,低有效,它是82C55发给外设的联络信号,表示外设可以将数据取走。 :外设应答信号,低有效。表示外设已把82C55发出的数据取走。 INTR:中断请求信号,高有效。表示该数据已被外设取走,向单片机发出中断请求,如果AT89C51响应该中断,在中断服务子程序中向82C55写入要输出的下一数据。 * INTEA—控制PA口是否允许中断,由PC6控制。 INTEB—控制PB口是否允许中断,由PC2控制。 方式1输出工作示意如图9-8所示。以PB口的方式1输出为例,介绍工作过程。 ① AT89C51可以通过“MOVX @Ri,A”指令把输出数据送到B口的输出数据锁存器,82C55收到后便令输出缓冲器满引脚 (PC1)变低,以通知输出设备输出的数据已在PB口的PB7~PB0上。 ② 输出外设收到 上低电平后,先从PB7~PB0上取走输出数据,然后使 B 变低电平,以通知82C55输出外设已收到82C55输出的数据。 * * 图9-7 方式1输出应答联络信号 图9-8 PB口方式1输出工作过程示意图 * ③ 82C55从应答输入线 B收到低电平后就对 B 和中断允许控制位INTEB状态进行检测,若皆为高电平,则INTRB变为高电平而向单片机请求中断。 ④ AT89C51单片机响应INTRB上中断请求后便可通过中断服务程序把下一个输出数据送到PB口的输出数据锁存器。重复上述过程,完成数据的输出。 3.方式2 只有PA口才有方式2。图9-9为工作示意图。方式2是方式1输入和输出组合。PA7~PA0为双向I/O总线。当作为输入口使用,PA7~PA0受STBA 和IBFA控制;当作输出端口使用,PA7~PA0受 A、 A 控制。 * * 图9-9 PA口在方式2下的工作示意图 方式2特别适用于像键盘、显示器一类的外部设备,因为有时需要把键盘上输入的编码信号通过PA口送给单片机,有时又需把单片机发出的数据通过PA口送给显示器显示。 9.2.4 AT89C51单片机与82C55的接口设计 1.硬件接口电路 如图9-10为AT89C51扩展一片82C55的电路。P0.1、P0.0经74LS373与82C55的A1、A0连接;P0.7经74LS373与片选端 相连,其它地址线悬空;82C55的控制线 、 直接与单片机 和 端相连;单片机数据总线P0.0~P0.7与82C55数据线D0~D7连接。 * 2.确定82C55端口地址 图9-10中82C55只有3条线与AT89C51地址线相接,片选端 、端口地址选择端A1、A0,分别接于P0.7、P0.1和P0.0,其他地址线全悬空。显然只要保证P0.7为低电平时,即可选中82C55;若P0.1、P0.0再为“00”,则选中82C55的PA口。同理P0.1、P0.0为“01”、“10”、“11”分别选中PB口、PC口及控制口。 若端口地址用16位表示,其他无用端全设为“1”(也可把无用端全设为“0”),则82C55的A、B、C及控制口地址分别为FF7CH、FF7DH、FF7EH、FF7FH。 * * 图9-10 AT89C51单片机扩展一片82C55的接口电路 如果没有用到的位取“0”,则4个端口地址分别为0000H、0001H、0002H、0003H,只要保证 、A1、A0的状态,无用位设为“0”或“1”均可。 3.软件编程 在实际设计中,须根据外设的类型选择82C55的操作方式,并在初始化程序中把相应控制字写入控制口。下面根据图9-10,介绍对82C55进行操作的编程。 【例9-4】要求82C55工作在方式0,且PA口作为输入,PB口、PC口作为输出,程序如下: MOV A,#90H ;控制字送A MOV DP
文档评论(0)