第9章STC89C52单片机IO扩展与设计探讨.ppt

  1. 1、本文档共166页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
*;*;*;1. I/O接口功能;*;*;*;*;9.2 TTL电路扩展并行接口 ;*;*;*;9.3 可编程接口芯片82C55扩展并行接口 ;3、组成部分: ⑴数据端口:A、B、C ①PA口:一个8位数据输出锁存器和缓冲器。 一个8位数据输入锁存器。 ②PB口:一个8位数据输出锁存器和缓冲器。 一个8位数据输入缓冲器。 ③PC口:一个8位数据输出锁存器。 一个8位数据输入缓冲器。 通常PA、PB口作为输入、输出口。PC口可作输入、输出口,也可在软件控制下,分为两个4位的端口,作为端口A、B选通方式操作时的状态控制信号。; 82C55A的引脚图; 82C55的结构框图; ⑵A组和B组控制电路 这是两组根据CPU写入的“命令字”控制8255A工作方式的控制电路。 A组:控制PA口和PC口的上半部(PC7~PC4) B组:控制PB口和PC口的下半部(PC3~PC0) 可据“命令字”对端口的每一位实现按位“置位”或“复位”。 ⑶双向三态数据缓冲器 为8255A和CPU数据总线的接口,CPU和8255A间的命令数据和状态的传输都通过双向三态总线缓冲器传送的。 D0~D7接CPU的数据总线。 ⑷A0、A1、 为8255A的端口选择信号和片选。 ⑸CPU对8255A的A口、B口、C口和控制口的寻址如b表9-1所示:;9.2.2 工作方式选择控制字及C口置位/复位控制字;图9-4;2. C口按位置位/复位控制字;【例9-2】 STC89C52向82C55的控制字寄存器写入按位置位/复位控制字07H,则PC3置1;08H写入控制口,则PC4清0。程序段如下: MOV DPTR,#××××H ; 控制寄存器端口地址××××H送DPTR MOV A,#07H ;按位置位/复位控制字07H送A MOVX @DPTR,A; 控制字07H送控制寄存器,把PC3置1 ………… MOV DPTR,#××××H; 控制字寄存器端口地址送DPTR MOV A,#08H ; 方式控制字08H送A MOVX @DPTR,A ;08H送控制字寄存器,PC4清0;9.2.3 82C55的三种工作方式;基本功能为:;*;2. 确定82C55端口地址 根据图9-6所示,82C55只有3条线与STC89C52地址线相接,片选端、端口地址选择端A1、A0,分别接于地址总线A7A1A0,其它地址线全悬空。显然只要保证A7为低电平时,即可选中82C55;若A1A0再为“00”,则选中82C55的PA口。同理A1A0为“01”、“10”、“11”分别选中PB口、PC口及控制口。 若端口地址用16位表示,其他无用端全设为“1”(也可把无用端全设为“0”),则82C55的A、B、C及控制口地址分别为FF7CH、FF7DH、FF7EH、FF7FH。;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;9.4.3.2 IIC总线的数据传送;*;*;*;*;*;*;*;*;*;*;9.4.3.3 STC89C52单片机的IIC总线扩展的设计;*;*;*;*;*;*;*;*;*;*;(A) 应答位检查子程序 在应答位检查子程序CACK中,设置了标志位F0,当检查到正常应答位时,F0=0;否则F0=1。 汇编语言参考子程序如下: CACK: SETB P1.2 ;SDA为输入线,SDA=1 SETB P1.3 ;SCL=1, 使SDA引脚上的数据有效 CLR F0 ;预设F0=0 MOV C, P1.2 ;读入SDA线的状态 JNC CEND ;应答正常,转CEND SETB F0 ;当SDA=1时,应答不正常, F0=1 CEND: CLR P1.3 ;当SDA=0时,子程序结束, 使SCL=0 RET;/**********C语言从机应答位检查函数************/ void check_ACK(void) { SCL=0; SCL=1; //SCL=1, 使SDA引脚上的数据有效 _nop_(); _nop_(); while(SDA); //检测SDA线,当SDA=1时,踏步等 SCL=0; //当SDA=0时,应答正常,使SCL=

文档评论(0)

希望之星 + 关注
实名认证
内容提供者

我是一名原创力文库的爱好者!从事自由职业!

1亿VIP精品文档

相关文档