微机原理与接口实验 43 串口通信-8251 赖晓铮_第1页
微机原理与接口实验 43 串口通信-8251 赖晓铮_第2页
微机原理与接口实验 43 串口通信-8251 赖晓铮_第3页
微机原理与接口实验 43 串口通信-8251 赖晓铮_第4页
微机原理与接口实验 43 串口通信-8251 赖晓铮_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微机原理与接口实验系列一、IO端口扩展(8255)二、定时器/计数器(8253)三、串口通信(8251)四、模数转换(ADC0809)五、数模转换(DAC0832)六、液晶屏显示(LCD1602)七、中断控制器(8259)赖晓铮博士华南理工大学laixz@QQ:68046508(三)

串口通信(8251)实验实验内容:●构建一个“CPU+8253+8251”的微型计算机系统,其中8253定时器为8251芯片提供工作时钟。编写机器语言程序,令CPU通过8251芯片实现与外设(虚拟端口)的串行通信。实验目的:●了解串行通信的基本原理,比较串行通信与并行通信的异同及各自的优势。●掌握串行接口芯片8251的编程方法,通过8251芯片实现CPU与外设的串行通信。微程序版“CPU+8251”电路图初始化过程时钟信号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指令的后续下一条指令的取指周期。8251应用电路图可编程串行接口芯片8251A结构图

#CS#RD#WRC/#D功能0010CPU从8251A读数据0100CPU向8251A写数据0011CPU向8251A读状态0101CPU向8251A写控制字1XXX禁止访问,总线D7~D0接口呈现高阻态8251A读/写控制逻辑8251A同步通信格式8251A异步通信格式8251A芯片

工作流程图8251A芯片

状态字格式8251A芯片

方式控制字格式8251A芯片

操作控制字格式实验步骤:1)8251A数据发送测试程序UART_TX.asm存放在实验4.3项目的子文件夹test里,其功能实现了CPU从8251A芯片的串行通信接口自动发送一段ASCII码字符序列“HELLO!”,并且在外接的虚拟串口终端屏幕上显示。具体代码如后页所示。2)编译、烧写、自动运行上述UART_TX源程序,在程序自动运行过程中,观察虚拟串口终端屏幕的显示。(编译和烧写asm文件的方法参见“2.6存储器实验:ROM批量导入数据”)

3)自行设计所要发送的字符序列,修改并自动执行UART_TX源程序。在运行过程中观察虚拟串口终端屏幕的显示。4)若需要把本实验改成8251A数据接收测试实验,请问硬件电路和程序怎么修改?

汇编助记符注释(M地址:机器指令)JMP08H00H:0001000001H:0000100048H“H”02H:0100100045H“E”03H:010001014CH“L”04H:010011004CH“L”05H:010011004FH“O”06H:0100111121H“!”07H:00100001SETR3,01HR3用来检测8253状态字08H:0011110009H:00000001SETR2,02HR2用以记录发送字符地址发送字符地址初始化[02H]0AH:001110000BH:00000010UART_TX汇编助记符注释(M地址:机器指令)SETR0,06HR0用作待发送字符的计数器总共6个数据0CH:001100000DH:00000110SETR1,A6H;8253计数器设置R1用于外设端口读写8253地址[1010xxxxH],控制口A1A0=110EH:001101000FH:10100110OUTAR1,PORT0选择8253的控制寄存器10H:01010110SETR1,16H控制字:选计数器0/只读写低8位数据/方式3(方波)/二进制11H:0011010012H:00010110OUTR1,PORT0输入8253控制字后OUT端应该拉高13H:01010100SETR1,A0H0通道计数寄存器地址打入R18253地址[1010xxxxH]控制口A1A0=0014H:0011010015H:10100000OUTAR1,PORT0选择8253的0通道计数寄存器16H:01010110UART_TX汇编助记符注释(M地址:机器指令)SETR1,0DH计数初始值N=13,CLK=125KHZ,计数时长8us*13=104us,输出9600HZ方波17H:0011010018H:00001101OUTR1,PORT0输入初始值N,做N个CLK周期循环方波19H:01010100HLT8253芯片配置结束,观测示波器界面波形1AH:00000001SETR1,F8H;8251串口设置8251芯片复位8251地址[1111xxxxH]RESET=11BH:001101001CH:11111000OUTAR1,PORT0选择8251的端口1DH:01010110SETR1,F2H8251地址[1111xxxxH]控制字1EH:001101001FH:11110010OUTAR1,PORT0选择8251控制字状态工作20H:01010110SETR1,4DH方式控制字:1个停止位/无校验/数据8位/异步x121H:0011010022H:01001101UART_TX汇编助记符注释(M地址:机器指令)OUTR1,PORT0输入8251方式控制字23H:01010100SETR1,15H;若循环发送下一个字符,则跳转到此处操作控制字:清出错标志/接收允许/发送允许24H:0011010025H:00010101OUTR1,PORT0输入8251操作控制字26H:01010100SETR1,F0H

8251地址[1111xxxxH]数据27H:0011010028H:11110000OUTAR1,PORT0选择8251数据状态工作29H:01010110POPR1,[R2]把待发送数据从堆栈弹出,赋值R12AH:10000110INCR2堆栈指针+12BH:00101000OUTR1,PORT0输入8251数据2CH:01010100SETR1,F2H

8251地址[1111xxxxH]控制字2DH:001101002EH:11110010UART_TX汇编助记符注释(M地址:机器指令)OUTAR1,PORT0选择8251控制字状态工作2FH:01010110INR1,PORT0读取8251状态字30H:01000100ANDR1,R3检测状态字最后一位,“1”则发送成功,“0”则失败31H:11100111JZ30H发射尚未成功,继续读取8251状态字循环检测32H:0001100033H:00110000DECR0待发送字符计数器递减

“-1”34H:00100001NOP断点:单个字符发送完成后观察串口输出35H:00000000JZ3AH待发送字符计数器为0,结束发送36H:0001100037H:00111010JMP24H状态字检测发送成功,继续发送下一个字符38H:0001000039H:00100100HLT3AH:00000001UART_TX思考题:●请把本实验的微程序版“CPU+8253+8251”电路改成硬布线版和流水线版“CPU+8253+8251”电路,并且运行本实验步骤所示的8251发送数据测试程序。请问上述程序在硬布线或流水线版本中需要修改么?若需要,请修改并测试。(三)串口通信(8251)实验附录: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四、跳转系列指令:五、算术逻辑运算指令:汇编语言功能I7I6I5I4I3I2

I1I0RLCRA;(RA)右逻辑移位1010RA0/0LLCRA;(RA)左逻辑移位1010RA1/0RRCRA;(RA)右循环移位1010RA0/1LRCRA;(RA)左循环移位1010RA1/1汇编语言功能I7I6I5I4I3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论