第7章 单片机并行IO口的扩展.pptVIP

  1. 1、本文档共75页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第7章 单片机并行IO口的扩展

7.1.1 I/O口扩展的原因 1.I/O信息的组成 (1)数据信息 CPU与外设交换的基本信息就是数据信息,数据的传送可采用并行传送(n位同时传送)和串行传送(一位一位地传送)两种形式。 (2)状态信息 状态信息是指在CPU与外设之间交换数据时的联络信息。CPU通过对外设状态信息的读取,可知其工作状态。了解状态信息是CPU与I/O设备正确进行数据交换的重要条件。 (3)控制信息 控制信息指CPU发给外设命令信息,CPU通过发送控制信息控制外设的工作。 (3)中断方式:当外设和计算机进行数据交换时,外设向单片机发出中断请求。单片机接到中断请求后,就作出响应,暂停正在执行的程序,而转去为设备的数据输入/输出服务。当服务完成后,程序返回,单片机再继续执行被中断的程序。 (4)DMA方式:DMA(Direct Memory Access,直接内存存取) 中断方式虽提高了CPU的效率,但仍然是通过CPU执行程序来实现数据传送。其缺点是大量的数据在磁盘与内存间交换需大量的时间,高速I/O设备时或成组数据交换时,显得速度太慢。DMA方式就是在外设与内存间直接传送数据,DMA的速度取决于内存的工作速度。 输入程序段: (1)汇编语言 MOV DPTR,#0FEFFH ;I/O地址→DPTR MOVX A,@DPTR;RD*为低,74LS244口,数据读入内部RAM (2)C语言 #define PORT XBYTE[0xFEFF]; A=PORT; 【例题7-1】编写程序把按钮开关状态通过图7-2中的发光二极管显示出来。 (1)汇编语言 DDIS: MOV DPTR,#0FEFFH ;输入口地址→DPTR LP: MOVX A,@DPTR ;按钮开关状态读入A中 MOVX @DPTR,A ;A中数据送输出口 SJMP LP ;反复连续执行 (2)C语言 #define PORT XBYTE[0xFEFF]; while(1) { A=PORT; PORT=A; } 表7-1 8255A端口工作状态选择 【例题7-2】 如下图是在PROTEUS软件中绘制的用8051扩展1片8255的电路,8255的PA口接输出设备(八个发光二极管)、PB口接输入设备(八个开关)PC口不用,均采用方式0,将8255 B口输入的开关置的数据从A口输出,要求开关合上的对应LED亮,编出相关汇编语言和C语言程序段。 分析:由图7-8可知,P2.7=0才选中该片8255,A1 A0(P2.1 P2.0)为00 01对应PA口和PB口、为11时对应控制口。其余地址写1,A口、B口、控制口地址分别为7CFFH、 7DFFH、7FFFH。设定PA口方式0输出, B口方式0输入,控制=82H,编程如下: (1)汇编语言 MOV DPTR, #7FFFH ;DPTR指向控制口 MOV A, #82H MOVX @DPTR, A ; 控制字写入控制口 MOV DPTR, #7DFFH ;DPTR指向PB口 MOVX A, @DPTR ;从PB口输入数据 CPL A ;开关合上的对应LED亮 DEC DPL ;DPTR指向PA口 MOVX @DPTR, A ;从PA口输出 SJMP $ (2)C语言 #includeabsacc.h #includereg51.h #define COM8255 XBYTE[0x7FFF] #define PA8255 XBYTE[0x7CFF] #define PB8255 XBYTE[0x7DFF] #define PC8255 XBYTE[0x7EFF] #define uchar unsigned char main( ) { char a; COM8255=0x82; /* 写方式控制*/ a=PB8255; /*B口输入*/ PA8255=~a; /*A口输出*/ } 【例题7-3】 在8255的PC7引脚接一个LED,用置位/复位控制字使其闪烁。 8255和单片机的连接同例7-2。 由图可知,8255的控制口地为7FFFH (1)汇编语言 MOV DPTR,#7FFFH ;指向控制口 MOV A,#80H ;先写方式控制字 MOVX @DPTR,A MOV A,#7FH ;使PC7位置位 PNOT:MOVX @DPTR,A ACALL DAY XRL A,

文档评论(0)

118zhuanqian + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档