单片机IO口的拓展方法 第7章_并行IO接口电路扩展设计及应用.ppt
-
资源ID:67342060
资源大小:902.50KB
全文页数:28页
- 资源格式: PPT
下载积分:16金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
单片机IO口的拓展方法 第7章_并行IO接口电路扩展设计及应用.ppt
第第7章章 I/O接口扩展设计及应用接口扩展设计及应用7.1 概 述 7.2 可编程并行I/O接口芯片8255A 7.3 可编程RAM/IO扩展器8155/8156 7.4 用TTL芯片扩展简单的I/O接口 7.5 显示器与键盘接口 7.6 并行打印机接口 并行接口的基本概念MCS-51单片机有四个并行I/O口。当用MCS-51单片机组成的应用系统需外扩程序存储器和数据存储器时,真正可用的并行口,就只有一个P1口了。并行接口的基本概念可编程并行接口芯片8255A8255A8255A的内部结构及引脚的内部结构及引脚可编程并行接口芯片8255A/CSA1A0功能000A口001B口010C口011控制寄存器8255A的内部结构及引脚7.2.2 8255A的操作说明18255工作方式方式0:基本式输入输出方式1:选通式输入输出方式2:双向传送方式(1)方式选择控制字(2)PC口按位置/复位控制字8255A的操作说明8255A的扩展接口电路MOV A,#98H;方式控制字AMOV DPTR,#7FFFH;选通控制寄存器MOVXDPTR,A;方式控制字送入8255AMOV DPTR,#7FFCH;MOVXA,DPTR;读PA口数据MOV DPTR,#7FFDH;MOVXDPTR,A;送PB口输出例程例7-4在一个8031的应用系统中,利用扩展8255A设计一个EPROM2764编程器,要求8255A的PA口作为D0D7数据输出口,PB口作为低8位地址口,PC口作为高5位的地址口。并将起始地址设定为ADR1,长度为L16的外扩RAM中用户程序固化到起始地址为ADR2的2764EPROM中。例7-4EPROM编程器逻辑图用户程序固化子程序框图对8255的初始化编程用下列程序实现:START:MOVDPTR,#7FFFH;选通控制寄存器MOVA,#80H;MOVXDPTR,A;方式控制字送接口MOVA,#0FH;置/复位控制字MOVXDPTR,A;1PC7,2764编程无效程序1START1:MOVDPTR,#addr1;RAM起始地址DPTRMOVR4,#addr2L;MOVR5,#addr2H;EPROM起始地址R5,R4MOVR6,#L16L;长度R7,R6MOVR7,#L16H;MOVA,R6JNZLOOPDECR7;调整长度值程序2LOOP:MOVX A,DPTR;取RAM中数据INCDPTR;RAM地址指针加1PUSHDPL;PUSHDPH;RAM地址压入堆栈MOVDPTR,#07FFCH;A口地址DPTRMOVX DPTR,A;数据A口INCDPTR;选通B口地址MOVA,R4;MOVX DPTR,A;低8位地址B口INCDPTR;选通C口地址MOVA,R5;ANLA,#1FH;地址高5位PC0PC4SETBACC.6;0PC7MOVX DPTR,A;开始写EPROM程序3MOVA,R4;INCA;EPROM地址加1MOVR4,A;JNZLOOP1;若A不为0转LOOP1INCR5;否则R4有进位到高位,即R5加1LOOP1:ACALLDL50;延时DL50子程为50ms延时子程序MOVDPTR,#7FFFH;MOVA,#0FH;1PC7(控制口),MOVX DPTR,A;停止编程POPDPH;POPDPL;RAM地址指针出栈DJNZR6,LOOP;DJNZR7,LOOP;长度减为0结束,非0继续RET程序47.4用TTL芯片扩展简单的I/O接口1用74LS377扩展8位输出端口用74LS377扩展8位输出端口2用74LS373扩展一个8位并行输入口用74LS373扩展一个8位并行输入口ORG0LJMP BEGIN;ORG03H;入口地址LJMP PINT0;初始化BEGIN:SETBIT0;下降沿触发MOV R0,#30H;数据缓冲首址SETB EX0;开中断SETB EA;CPU开中断;中断服务:PINT0:MOVDPTR,#07FFFH;指向373输入口MOVXA,DPTR;读入MOV R0,A;送数据缓冲区INCR0;修改R0指针RETI;返回程序输入接口输出接口扩展逻辑8位并行输出口74LS273,由P2.7和相“或”控制,地址为7FFFHMOVDPTR,#7FFFHMOVA,#DATAMOVX DPTR,A8位并行输入口74LS244,由P2.6和相“或”控制,地址为0BFFFHMOVDPTR,#0BFFFHMOVX A,DPTR如果将图7-13中,U4A的第一脚接在P2.7上,两口地址为7FFFHMOVDPTR,#7FFFHLOOP:MOVX A,DPTRMOVX DPTR,ASJMPLOOP程序7.5显示器与键盘接口显示器与键盘接口入口:显示数据首址送R0DIR:MOVP2,#7FH;P2.7=0MOVR1,#0FFH;R1指向L1MOVDPTR,#TAB;段码表首址MOVR7,#4;DIR1:MOVA,R0;取要显示数据ANLA,#0FHMOVCA,A+DPTR;查表CPLA;取反MOVXR1,A;送段码显示INCR0;指向下一个要显示数据DECR1;指向下一个LEDDJNZR7,DIR1;未完继续RETTAB:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB7FH,6FH,77H,7CH,39H,5EH,79H,71H程序LED显示接口显示接口动态扫描驱动接口LED显示接口显示接口动态扫描驱动接口DIR:MOVDPTR,#CWR;MOVA,#4DH;设置8155工作方式MOVX DPTR,A;设A口、C口均作输出口MOVR0,#DISBUF;指向显示缓冲区首址MOVR5,#0FEH;选中最左边LED显示器MOVR4,#4;DIR1:CLRA;MOVDPTR,#PC;MOVX DPTR,A;全熄DIR0:MOVA,R0;取数MOVDPTR,#TAB;指向表首址MOVC A,A+DPTR;查表,取段码MOVDPTR,#PA;指向段码地址MOVX DPTR,A;送段码至PA口程序1MOVA,R5;取位码MOVDPTR,#PC;指向位码地址MOVX DPTR,A;送位码至PC口RLA;MOVR5,A;修改位码LCALL DELY;延时INCR0;准备取下一个数DJNZR4,DIR0RETDELY:MOVR7,#3DEL1:MOVR6,#250DJNZR6,$DJNZR7,DEL1RETTAB:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB7FH,6FH,77H,7CH,39H,5EH,79H,71H程序27.5.2键盘接口键盘接口8155扩展I/O组成的行列式键盘KEY:CLRAACALL KS;有键按下吗?JZNK;无键按下返回ACALL DLAY;调用延时程序,消除抖动CLRA;ACALL KS;再次判断是否有键按下JZNK;无键按下返回MOVA,#0FEH;行扫描信号,从最低位开始MOVR4,#0;行计数器K1:MOVR2,AACALL KS;扫描键盘JNZFIND;找到键转移INCR4;行计数器加1,指向下一行MOVA,R2RLA;行扫描信号左移一位CJNEA,#0FE,K1;8行扫描完?MOVA,#0;没找到键SJMPNK程序1FIND:SWAPAADDA,R4NK:RETKS:MOVDPTR,#PA;A口地址送DPTRMOVX DPTR,A;送行扫描信号MOVDPTR,#PC;C口地址送DPTRMOVX A,DPTR;读列回扫信号CPLA;求反ANLA,#0FH;屏蔽高四位RET;A=0,无键按下程序2