您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 微机原理与接口实验42定时器_计数器-8253赖晓铮
微机原理与接口实验系列一、IO端口扩展(8255)二、定时器/计数器(8253)三、串口通信(8251)四、模数转换(ADC0809)五、数模转换(DAC0832)六、液晶屏显示(LCD1602)七、中断控制器(8259)赖晓铮博士华南理工大学laixz@scut.edu.cnQQ:68046508(二)定时器/计数器(8253)实验实验内容:●构建一个“CPU+8253”的微型计算机系统,通过8253芯片使CPU处于定时工作状态,或对外部过程进行计数。编写机器语言程序,实现8253芯片的六种工作方式。实验目的:●理解可编程定时器/计数器芯片8253的基本工作原理。●掌握8253芯片实现定时/计数功能的工作方式及编程方法。微程序版“CPU+8253”电路图初始化过程1)时钟信号CLK接手动开关MANUAL,启动仿真,使能复位信号#RESET=0;2)手动按钮MANUAL开关“010”,然后令信号#RESET=1.注:初始化完成后,若时钟信号CLK继续接开关MANUAL,则CPU进入手动模式,手动MANUAL开关,生成时钟信号CLK,程序单步执行;若时钟信号CLK接信号源AUTO-CLK(主频10Hz),则CPU进入自动模式,程序自动运行,直到HLT指令的“断点”处暂停。重启过程(跳出“断点”)1)时钟信号CLK接开关MANUAL,手动令复位信号端#RESET的状态“101”变化,即重启完成,跳出“断点”继续执行。注:跳出“断点”后,CPU进入HLT指令的后续下一条指令的取指周期。8253A应用电路图(工作方式3)定时器/计数器芯片8253A结构图#CS#RD#WRA1A0寄存器选择和操作00100读0通道锁存器00101读1通道锁存器00110读2通道锁存器01000写0通道计数寄存器01001写1通道计数寄存器01010写2通道计数寄存器01011写控制字寄存器1XXXX禁止访问,总线D7~D0接口呈现高阻态8253A控制端口功能图工作方式门控信号OUT端输出波形计数过程启动方式写入新计数初值方式0高N+1个CLK周期负脉冲软件触发立即有效方式1上升沿N个CLK周期负脉冲硬件门控触发硬件触发有效方式2高1个CLK周期负脉冲自动重复下一次计数有效方式3高方波/矩形波自动重复下一次计数有效方式4高1个CLK周期负脉冲软件触发立即有效方式5上升沿1个CLK周期负脉冲硬件门控触发硬件触发有效8253A工作方式列表8253A控制字结构图8253A工作方式0(计数结束中断)时序图8253A工作方式1(可编程单脉冲发生器)时序图8253A工作方式2(分频器)时序图8253A工作方式3(方波发生器)时序图8253A工作方式4(软件触发选通)时序图8253A工作方式5(硬件触发选通)时序图实验步骤:1)8253A的六种工作方式测试程序00_test~05_test存放在实验4.2项目的子文件夹test里。例如方式3测试程序03_test,其功能是在8253A芯片的OUT0输出端产生周期性的方波,周期宽度是N个CLK周期(N是程序设定的计数初始值)。具体代码如后页所示。2)编译、烧写、自动运行上述程序03_test.asm,观察虚拟示波器显示的A端和B端波形。(编译和烧写asm文件的方法参见“2.6存储器实验:ROM批量导入数据”)3)00test.asm是8253A工作方式0测试程序,与方式3不同的是,方式0产生的是一次性的上升沿跳变。编译、烧写、自动运行00test源程序,观察虚拟示波器显示的波形。4)编译、烧写和自动运行01test、04test和05test源程序,观察上述程序运行中的虚拟示波器显示波形,对比8253A的工作方式1和方式0、以及工作方式4和方式5的运行结果。汇编助记符注释(M地址:机器指令)SETR1,A6H8253控制寄存器地址[1010xxxx]写入R1A1A0=1100H:0011010001H:10100110OUTAR1,PORT0选择8253的控制寄存器02H:01010110SETR1,16H控制字:选计数器0/只读写低8位数据/方式3/二进制03H:0011010004H:00010110OUTR1,PORT0输入控制字05H:01010100SETR1,A0H把0通道计数寄存器地址打入R1A1A0=0006H:0011010007H:10100000OUTAR1,PORT0选择8253的0通道计数寄存器08H:01010110SETR1,04H计数初始值N09H:001101000AH:00000100OUTR1,PORT0输入后,开始以N个CLK周期做循环方波0BH:0101010003_test汇编助记符注释(M地址:机器指令)HLT0CH:00000001SETR1,05H计数初始值N(新)0DH:001101000EH:00000101OUTR1,PORT0输入N后,待当前方波结束,再开始新的方波周期0FH:01010100HLT10H:0000000103_test思考题:●请把本实验的微程序版“CPU+8253”电路改成硬布线版和流水线版“CPU+8253”电路,并且运行本实验步骤所述的六种8253芯片工作方式的测试程序。请问上述程序在硬布线或流水线版本中需要修改么?若需要,请修改并测试。(二)定时器/计数器(8253)实验附录: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四、跳转系列指令:五、算术逻辑运算指令:汇编语言功能I7I6I5I4I3I2I1I0RLCRA;(RA)右逻辑移位1010RA0/0LLCRA;(RA)左逻辑移位1010RA1/0RRCRA;(RA)右循环移位1010RA0/1LRCRA;(RA)左循环移位1010RA1/1汇编语言功能I7I6I5I4I3I2I1I0INCRA;(RA)+1RA0010RA0/0DECRA;(RA)-1RA0010RA0/1NOTRA;#(RA)RA0010RA1/0THRRA;(RA)RA0010RA1/1五、算术逻辑运算指令:汇编语言格式功能I7I6I5I4I3I2I1I0ADDRA,RB;(RA)+(RB)RA1101RARBADDIRA,IMM;(RA)+IMMRA1101RA0/0IMMSUBRA,RB;(RA)-(RB)RA1100RARBSUBIRA,IMM;(RA)-IMMRA1100RA0/0IMMANDRA,RB;(RA)∧(RB)RA1110RARBANDIRA,IMM;(RA)∧IMMRA1110RA0/0IMMORRA.RB;(RA)∨(RB)RA1111RARBORIRA,IMM;(RA)∨IMMRA1111RA0/0IMMXORRA,RB;(RA)⊕(RB)RA1011RARBXORIRA,IMM;(RA)⊕IMMRA1011RA0/0IMM
本文标题:微机原理与接口实验42定时器_计数器-8253赖晓铮
链接地址:https://www.777doc.com/doc-2435597 .html