资源描述:
《可编程定时器计数器-罗忠霖》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、集美大学计算机工程学院实验报告课程名称微机原理与接口技术实验名称8253可编程计数器/计时器实验实验类型设计型姓名罗忠霖学号2010810072日期2012.11.15地点微机室成绩教师洪玉玲李铁军评语:一、实验目的1)学会8253芯片和微机接口原理和方法。2)掌握8253定时器/计数器的基本工作原理、工作方式和编程原理。二、实验内容按图6虚线连接电路,将计数器0设置为方式0,计数器初值为N(N≤0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0变高电平)。图6按图7连
2、接电路,将计数器0、计数器1分别设置为方式3,计数初值设为1000,用逻辑笔观察OUT1输出电平的变化(频率1HZ)。图7三、编程提示1、8253控制寄存器地址283H计数器0地址280H计数器1地址281HCLK0连接时钟1MHZ2、参考流程图(见图8、9):图8图9四、实验代码1、图6电路的实验代码CODESEGMENT;段定义开始(CODE段)ASSUMECS:CODE;规定CODE为代码段START:MOVAL,10H;设置控制字00010000(计数器0,方式0,写两个字节,二进制计数)MOVDX,283H;把控制寄存器地址放在D
3、X寄存器中OUTDX,AL;将AL的值送入DX端口MOVDX,280H;把计数器0地址放在DX寄存器中MOVAL,0FH;将0FH存入AL寄存器OUTDX,AL;将此时AL的值送入DX端口LP1:INAL,DX;从DX端口读入8位,放在AL寄存器中CALLDISP;调用DISPPUSHDX;将DX内容保存到堆栈段MOVAH,06H;将06H存入AH,为了下句调用21中断MOVDL,0FFH;将0FFH存入DLINT21H;调用21中断POPDX;将DX的内容推出栈段JZLP1;如果DX的内容是0,就跳转到LP1MOVAH,4CH;将4CH存
4、入AH,为了下句调用21中断INT21H;调用21中断DISPPROCNEAR;定义一个名为DISP的子程序PUSHDX;把DX的内容保存到堆栈段中ANDAL,0FH;将AL寄存器的内容与0FH进行“与”运算,再把结果存入AL中MOVDL,AL;将AL的值送入DL寄存器CMPDL,9;比较DL中的值与9的大小JLENUM;如果DL的值小于或等于9时,则跳转到NUMADDDL,7;将DL的值与7进行相加后,再送入DL中NUM:ADDDL,30H;将DL的值与30H进行相加后,再送入DL中MOVAH,02H;将02H存入AHINT21H;调用D
5、OS21中断MOVDL,0DH;结合“MOVAH,02H”就是说输出0DHINT21H;调用中断指令MOVDL,0AH;结合“MOVAH,02H”就是说输出0AHINT21H;调用DOS21中断POPDX;将DX的内容推出栈段RET;子程序在功能完成后返回调用程序继续执行DISPENDP;子程序结束CODEENDS;代码段结束ENDSTART;程序结束2、图7电路的实验代码CODESEGMENT;段定义开始(CODE段)ASSUMECS:CODE;规定CODE为代码段START:MOVDX,283H;把控制寄存器地址放在DX寄存器中MOVA
6、L,36H;设置控制字00110110(计数器0,方式3,写两个字节,二进制计数)OUTDX,AL;将AL的值送入DX端口MOVAX,1000H;该语句是立即寻址方式,就是把1000H这个数赋给AXMOVDX,280H;把计数器0地址放在DX寄存器中OUTDX,AL;将AL的值送入DX端口MOVAL,AH;将AX的高8位存入AL寄存器中OUTDX,AL;将此时AL的值送入DX端口MOVDX,283H;把端口地址放在DX寄存器中MOVAL,76H;设置控制字01110110(计数器1,方式3,写两个字节,二进制计数)OUTDX,AL;将AL的
7、值送入DX端口MOVAX,1000H;把1000H赋给AXMOVDX,281H;把端口地址放在DX寄存器中OUTDX,AL;将AX的低8位送入DX端口MOVAL,AH;将AX的高8位存入AL寄存器中OUTDX,AL;将AL的值送入DX端口MOVAH,4CH;将4CH存入AHINT21H;调用DOS21中断CODEENDS;代码段结束ENDSTART;程序结束五、实验总结通过实验,学会8253芯片和微机接口原理和方法,掌握8253定时器/计数器的基本工作原理、工作方式和编程原理,熟悉汇编代码的编写。实验中,连接电路,利用代码控制实验电路,深对
8、课本理论的理解。