资源描述:
《可编程定时器计数器(8253)-实验报告.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验名称可编程定时器/计数器(8253)学生姓名学生学号专业班级指导老师2015-1-7实验六可编程定时器/计数器(8253)一、实验目的掌握8253芯片和微机接口原理和方法,掌握8253定时器/计数器的工作方式和编程原理。二、实验内容1.设计8253定时器/技术器仿真电路图;2.根据仿真电路图,编写代码,对8253定时器/计数器进行仿真。三、实验要求1.要求计数器2工作于模式1(暂稳态触发器),计数初值为1250;2.计数器0工作于方式3(方波模式),输出一个1KHz的方波,8253的输入时钟为1MHz,计数初始值格式为BCD。3.8253与系统的连接如Error!Re
2、ferencesourcenotfound.所示。图1计数器8253与8086连接原理图注:实验过程中,发现Error!Referencesourcenotfound.有误。应将8253定时器/计数器右边部分的电阻R2与按钮交换位置。一、实验原理8253具有3个独立的计数通道,采用减1计数方式。在门控信号有效时,每输入1个计数脉冲,通道作1次计数操作。当计数脉冲是已知周期的时钟信号时,计数就成为定时。8253的工作方式3被称作方波发生器。任一通道工作在方式3,只在计数值n为偶数,则可输出重复周期为n、占空比为1:1的方波。进入工作方式3,OUTi输出低电平,装入计数值后,
3、OUTi立即跳变为高电平。如果当GATE为高电平,则立即开始减“1”计数,OUTi保持为高电平,若n为偶数,则当计数值减到n/2时,OUTi跳变为低电平,一直保持到计数值为“0”,系统才自动重新置入计数值n,实现循环计数。这时OUTi端输出的周期为n×CLKi周期,占空比为1:1的方波序列;若n为奇数,则OUTi端输出周期为n×CLKi周期,占空比为((n+1)/2)/((n-1)/2)的近似方波序列。8253定时器/计数器控制字决定这定时器0,1,2的工作模式。一旦CPU对控制字进行写操作,且对相应的定时器有效,则相应定时器改变工作模式,可能准备接收计时初值。控制字的格
4、式如Error!Referencesourcenotfound.所示。图28253控制字格式8253有4个端口,且通过A[1…0]引脚控制着4个端口。访问端口如所示。A1A0访问端口00CNT0端口地址01CNT1端口地址10CNT2端口地址11控制字端口地址表18253端口地址列表一、实验步骤及结果1.确定8253的方式字,以及计数初始值;根据Error!Referencesourcenotfound.和实验要求,计算得出计数器0对应的控制字为27H,计数器0的初值为1000H;计数器2对应的控制字为0B2H,计数器2的初值为1250。2.绘制电路图,电路图绘制结果如E
5、rror!Referencesourcenotfound.所示;图38253仿真电路图3.根据电路图,确定8253的4个端口号的地址;CNT0端口端口地址0A000HCNT1端口端口地址0A002HCNT2端口端口地址0A004H控制字端口端口地址0A006H4.编写代码,代码如下;CODESEGMENTASSUMECS:CODESTART:JMPTCONTTCONTROEQU0A006HTCON0EQU0A000HTCON1EQU0A002HTCON2EQU0A004HTCONT:MOVDX,TCONTROMOVAL,27H;计数器0,只写初值高8位,方式3,BCD码O
6、UTDX,ALMOVDX,TCON0MOVAL,10H;时钟为1MHZ,计数时间=1us*1000,输出频率1KHZOUTDX,AL;注意1000的BCD码为1000H,此处只需写高位MOVDX,TCONTROMOVAL,0B2H;计数器2,先写初值低8位再写高8位,方式1,二进制数OUTDX,ALMOVDX,TCON2MOVAX,1250;写入计数初值1250OUTDX,ALMOVAL,AHOUTDX,ALJMP$CODEENDSENDSTART1.对程序进行编译、链接、仿真,仿真结果如Error!Referencesourcenotfound.、Error!Refer
7、encesourcenotfound.所示。图4方波图(A通道,黄色)图5脉冲图(D通道,绿色)一、实验总结本次实验,重点在于自己找资料,理解透8253的控制方式及工作原理。只要理解了8253的原理,再配上汇编指令,便轻松完成本次实验。到现在,一共做了6次实验。6次实验都是与外设打交道,故常用到的指令就MOV,OUT,IN三条指令,常用到的寄存器就AX,DX,常用到的寻址方式是寄存器间接寻址(DX用在此处)。当访问的端口地址小于255时,则可以采用直接寻址,不用DX间接寻址;当访问的端口地址大于255时,寄存器间接寻址则是必须