版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微机原理与接口实验系列一、IO端口扩展(8255)二、定时器/计数器(8253)三、串口通信(8251)四、模数转换(ADC0809)五、数模转换(DAC0832)六、液晶屏显示(LCD1602)七、中断控制器(8259)赖晓铮博士华南理工大学laixz@QQ:68046508(一)IO端口扩展(8255)实验实验内容:●构建一个“CPU+8255”的微型计算机系统,通过8255芯片扩展微程序版CPU的I/O端口功能。编写机器语言程序,通过8255芯片实现可定制的循环“流水灯”功能;进而编写机器语言程序,通过8255芯片实现记录4×4键盘按键触发位置(行/列)的功能。实验目的:●理解可编程并行接口芯片8255的基本工作原理。●掌握CPU使用8255芯片外扩IO端口的硬件架构及编程方法。微程序版“CPU+8255”电路图初始化过程时钟信号CLK接手动开关MANUAL,启动仿真,使能复位信号#RESET=0;手动按钮MANUAL开关“010”,然后令信号#RESET=1.注:初始化完成后,若时钟信号CLK继续接开关MANUAL,则CPU进入手动模式,手动MANUAL开关,生成时钟信号CLK,程序单步执行;若时钟信号CLK接信号源AUTO-CLK(主频10Hz),则CPU进入自动模式,程序自动运行,直到HLT指令的“断点”处暂停。重启过程(跳出“断点”)时钟信号CLK接开关MANUAL,手动令复位信号端#RESET的状态“101”变化,即重启完成,跳出“断点”继续执行
。注:跳出“断点”后,CPU进入HLT指令的后续下一条指令的取指周期。8255应用电路图可编程并行IO接口芯片8255A结构图8255A控制字示意图#CS#RD#WRA1A0操作数据传送方式00100读
A口A口数据→数据总线00101读
B口B口数据→数据总线00110读
C口C口数据→数据总线01000写
A口数据总线数据→A口01001写
B口数据总线数据→B口01010写
C口数据总线数据→C口01011写控制口数据总线数据→控制口1XXXX禁止访问数据总线接口高阻态8255A控制端口功能图8255A工作方式1(选通)输入组态8255A工作方式1(选通)输入时序图8255A工作方式1(选通)输出组态8255A工作方式1(选通)输出时序图8255A工作方式2(双向传送)应答联络线定义8255A工作方式2(双向传送)时序图实验步骤(可编程的循环流水灯):1)可编程的循环流水灯程序8255_Cycle_LED.asm存放在实验4.1项目的子文件夹test里,其功能实现了CPU从8255芯片的A口读入拨码开关设置的8位数值,从B口输出该数值到8位LED灯。然后,该数值不断循环移位,在8位LED灯上形成“循环流水灯”效果。具体代码如后页所示。2)编译、烧写、自动运行8255_Cycle_LED源程序,在程序自动运行过程中,观察B口连接的8位LED灯变化。
(编译和烧写asm文件的方法参见“2.6存储器实验:ROM批量导入数据”)3)修改8255_Cycle_LED源程序,A口连接的拨码开关设置不同的数值,观察自动执行过程中B口连接的8位LED灯变化。汇编助记符注释(M地址:机器指令)SETR0,86H选8255地址[1000xxxx]控制端A1A0=1100H:0011000001H:10000110OUTAR0,AR02H:01010010SETR0,99H控制字:PA输入/PB输出/PC输入03H:0011000004H:10011001OUTR0,PORT005H:01010000SETR0,80H选PA口:A1A0=0006H:0011000007H:10000000OUTAR0,PORT008H:01010010INR1,PORT0PA口输入09H:01000100HLT停机0AH:000000018255_Cycle_LED汇编助记符注释(M地址:机器指令)SETR0,82H选PB口:A1A0=010BH:001100000CH:10000010OUTAR0,PORT00DH:01010010OUTR1,PORT0PB口输出0EH:01010100LRCR10FH:10100111HLT10H:00000001JMP0EH循环移位11H:0001000012H:000011108255_Cycle_LED实验步骤(矩阵键盘测试):1)矩阵键盘测试程序keyboard.asm存放在实验4.1项目的子文件夹test里,其实现的功能如下(代码如后页所示):
首先,在程序的第一次HLT“断点”跳出后,用户按下矩阵键盘的某个键,一直持续到第二次HLT“断点”暂停后才松开按键。
然后,CPU通过8255芯片的C口高4位输出不同的电平组合,再从C口低4位读取相应的电平组合,可以判断出矩阵键盘中哪个键被压下。
最后,在8255芯片B口连接的8位LED灯上显示被按下键的行值(高4位代表从上到下的矩阵键盘行信息)和列值(低4位代表从左到右的矩阵键盘列信息)。
实验步骤(矩阵键盘测试):2)编译、烧写、自动运行keyboard源程序:(编译和烧写asm文件的方法参见“2.6存储器实验:ROM批量导入数据”)3)在程序第一次HLT“断点”跳出后,随机按下矩阵键盘中的某个按键(注:按下的时间要足够长,直到程序在第二次HLT“断点”暂停后才能松开按键),观察和记录程序中三个HLT“断点”暂停时刻,通用寄存器R0~3和8255芯片B口连接的8位LED灯变化。4)为何CPU使用C口的高4位输出测试矩阵键盘的时候,不是逐行拉低电平(即输出0111、1011、1101、1110),而是输出0000、0011、1001?这样设计安排有什么优点?
汇编助记符注释(M地址:机器指令)SETR0,86H选8255地址[1000xxxx]控制端A1A0=1100H:0011000001H:10000110OUTAR0,PORT002H:01010010SETR0,91H控制字:PA输入/PB输出/PC高四位输出低四位输入03H:0011000004H:10010001OUTR0,PORT005H:01010000SETR0,82H选PB口:A1A0=0106H:0011000007H:10000010OUTAR0,PORT008H:01010010SETR0,FFH初始化PB口,LED全灭09H:001100000AH:11111111OUTR0,PORT00BH:01010000keyboard汇编助记符注释(M地址:机器指令)SETR0,84H选PC口:A1A0=100CH:001100000DH:10000100OUTAR0,PORT00EH:01010010SETR2,0FHR2=00001111,列判断用0FH:0011100010H:00001111OUTR2,PORT0PC口置位00001111(高四位输出0000)11H:01011000SETR1,3FHR1=00111111,行判断用12H:0011010013H:00111111HLT该断点后就可以按键,按键要保持到下一个断点才能松开!14H:00000001INR0,PORT0PC口输入;L115H:01000000XORR0,R2无键按下,R0是00001111,R0=R2有键按下,R0低四位:1110/1101/1011/011116H:10110010keyboard汇编助记符注释(M地址:机器指令)JZ,15H无键按下,跳转到
L1(循环监听键盘输入)17H:0001100018H:00010101MOVR3,R0R3=0000yyyy(yyyy是列编码)19H:01101100OUTR1,PORT0PC口置位00111111(高四位输出0011)1AH:01010100INR0,PORT0PC口输入1BH:01000000XORR0,R1无键按下,R0是00111111,R0=R1有键按下,R0低四位1110/1101/1011/01111CH:10110001JZ20H行输出0011无键按下,R2仍是000011111DH:000110001EH:00100000MOVR2,R1行输出0011有键按下,R2赋值001111111FH:01101001SHT(RRC)R1R1=10011111(行判断用)20H:10100101OUTR1,PORT0PC口置位10011111(高四位输出1001)21H:01010100INR0,PORT0PC口输入22H:01000000keyboard汇编助记符注释(M地址:机器指令)HLT按键要保持到此断点后才能松开!23H:00000001XORR0,R1无键按下,R0是10011111,R0=R1有键按下,R0低四位1110/1101/1011/011124H:10110001JZ33H行输出1001无键按下,跳转
L2:25H:0001100026H:00110011SUBIR2,3FH判断:R2是否0011111127H:1100100028H:00111111JZ2FHR2是00111111,即行输出0011有键按下29H:000110002AH:00101111SETR2,20HR2否,行输出0011无键按下且1001有键按下R2赋值XXXX0000(XXXX是行编码)2BH:001110002CH:00100000JMP3DH判断结束,跳转
L3:
2DH:000100002EH:00111101keyboard汇编助记符注释(M地址:机器指令)SETR2,40H行输出0011有键按下且1001有键按下R2赋值XXXX0000(XXXX是行编码)2FH:0011100030H:01000000JMP3DH判断结束,跳转
L3:
31H:0001000032H:00111101SUBIR2,3FHL2:R2是否0011111133H:1100100034H:00111111JZ3BHR2是0011111,即行输出0011有键按下35H:0001100036H:00111011SETR2,10HR2否,行输出0011无键按下且1001无键按下R2赋值XXXX0000(XXXX是行编码)37H:0011100038H:00010000JMP3DH判断结束,跳转
L3:
39H:000100003AH:00111101keyboard汇编助记符注释(M地址:机器指令)SETR2,80H行输出0011有键按下且1001无键按下R2赋值XXXX0000(XXXX是行编码)3BH:001110003CH:10000000HLTL3:3DH:00000001ORR2,R3R2=XXXXyyyy(高四位行编码低四位列编码)3EH:11111011SETR3,82H选PB口:A1A0=013FH:0011110040H:10000010OUTAR3,PORT041H:01011110OUTR2,PORT0PB口输出最终结果42H:01011000HLT43H:00000001keyboard思考题:●请把本实验的微程序版“CPU+8255”电路改成硬布线版和流水线版“CPU+8255”电路,并且运行本实验步骤所示的8255_Cycle_LED和keyboard程序。请问上述程序在硬布线或流水线版本中需要修改么?若需要,请修改并测试。(一)IO端口扩展(8255)实验附录:CPU指令集(OP码表)OP码(I7I6I5I4)指令助记符OP码(I7I6I5I4)指令助记符0111IRET1111OR/ORI0110MOV1110AND/ANDI0101OUT/OUTA1101ADD/ADDI0100IN1100SUB/SUBI0011SET1011XOR/XORI0010SOP(INC/DEC/NOT/THR)1010SHT(RLC/LLC/RRC/LRC)0001JMP/JMPR/Jx/JxR1001STO/PUSH0000NOP/HLT1000LAD/POP一、系统指令:汇编语言功能I7I6I5I4I3I2I1I0NOP;无操作(延时4个T)00000/0x/0HLT;停机(断点)00000/0x/1IRET;中断返回BP_PCPC;BP_PSWPSW01110/0x/x汇编语言注释I7I6I5I4I3I2I1I0MOVRA,RB;(RB)RA0110RARBSETRA,IMM;IMMRA0011RAx/xIMM二、寄存器及I/O操作指令:汇编语言功能I7I6I5I4I3I2I1I0INRA,PORTx;(PORTx)RA0100RAPORTxOUTRA,PORTx;(RA)PORTx0101RA0/PORTxOUTARA,PORTx;(RA)PORTx0101RA1/PORTx汇编语言功能I7I6I5I4I3I2I1I0LADRA,[ADDR];[ADDR]RA1000RA0/0ADDRPOPRA,[RB];[RB]RA1000RARBSTORA,[ADDR];(RA)[ADDR]1001RA0/0ADDRPUSHRA,[RB];(RA)[RB]1001RARB三、存储器及堆栈操作指令:汇编语言功能I7I6I5I4I3I2I1I0JMPADDR;ADDRPC00010/00/0ADDRJMPRRB;(RB)PC00010/0RBJCADDR;IFCF=1,ADDRPC00010/10/0ADDRJCRRB;IFCF=1,(RB)PC00010/1RBJZADDR;IFZF=1,ADDRPC00011/00/0ADDRJZRRB;IFZF=1,(RB)PC00011/0RBJSADDR;IFSF=1,ADDRPC00011/10/0ADDRJSRRB;IFSF=1,(RB)PC00011/1RB四、跳转系列指令:五、算术
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《英国小说家罗琳》课件
- 2016年全国科普日网络微信知识竞赛试题301(附答案)
- 20.电工基础期末试卷参考答案
- 土地(山地)临时占用协议
- 《化学资料小常识》课件
- 焊接裂纹分类与危害
- 专业知识与教研实践
- 建筑行业助理的职责概述
- 老年活动中心前台服务工作总结
- 艺术与心理健康的关联研究计划
- 教育技术研究员合同模板
- 【MOOC期末】《电子技术实习SPOC》(北京科技大学)期末慕课答案
- 新媒体技术基础知识单选题100道及答案解析
- 2025蛇年带横批春联对联200副带横批
- 互联网+创新商业模式考核试卷
- 福建省福州市2023-2024学年高一1月期末生物试题(解析版)
- 四川省南充市2023-2024学年高一上学期期末考试 政治 含解析
- 江苏省扬州市梅岭中学2023-2024学年七年级上学期期末地理试题(含答案)
- 克罗恩病病例分析
- 《冠心病》课件(完整版)
- DB43T 1694-2019 集体建设用地定级与基准地价评估技术规范
评论
0/150
提交评论