8253定时器、计数器仿真实验报告
- 格式:docx
- 大小:347.66 KB
- 文档页数:6
实验三8253定时器/计数器实验一、实验目的1.学会8253芯片与微机接口的原理和方法。
2.掌握8253定时器/计数器的工作原理和编程方法。
二、实验内容编写程序,将8253的计数器0设置为方式2(频率发生器),计数器1设置为方式3(方波频率发生器),计数器0的输出作为计数器1的输入,计数器1的输出接在一个LED上,运行后可观察到该LED在不停地闪烁。
1.编程时用程序框图中的二个计数初值,计算OUT1的输出频率,用表观察LED,进行核对。
2.修改程序中的二个计数初值,使OUT1的输出频率为1Hz,用手表观察LED,进行核对。
3.上面计数方式选用的是 16 进制,现若改用 BCD 码,试修改程序中的二个计数初值,使LED的闪亮频率仍为1Hz。
三、实验区域电路连接图CS3→0040H;JX8→JX0;IOWR→IOWR;IORD→IORD;A0→A0;A1→A1;GATE0→+5V;GATE1→+5V;OUT0→CLK1;OUT1→L1;CLK0→0.5MHz;(单脉冲与时钟单元)四、程序框图8253方式控制字五、编程程序code segmentassumecs:codeorg 1000hstart:mov dx,43h /控制字地址/ mov al,00110100boutdx,almov dx,40h /计时器0地址/mov al,0F4houtdx,almov al,01h /计数器0写入初值01F4H/outdx,almov dx,43hmov al,01110110boutdx,almov dx,41h /计时器1地址/mov al,0E8houtdx,almov al,3h /计数器1写入初值03E8H/out dx,al /分两次赋值,先低八位0E8H,后高八位03H/jmp $ /8253自行控制led灯/code endsend start六、实验步骤1. 按连线图连接好,检查无误后打开实验箱电源。
可编程定时器/计数器(8253)一、实验目的 1)学会8253芯片和微机接口原理和方法。
芯片和微机接口原理和方法。
2)掌握8253定时器定时器//计数器的基本工作原理、工作方式和编程原理。
二、实验内容按图6虚线连接电路,将计数器0设置为方式0,计数器初值为N (N ≤0FH 0FH)),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0变高电平)。
图 6按图7连接电路,连接电路,将计数器将计数器0、计数器1分别设置为方式3,计数初值设为10001000,用逻辑笔观察,用逻辑笔观察OUT1输出电平的变化(频率1HZ 1HZ))。
图 7三、编程提示1 1、、8253控制寄存器地址控制寄存器地址283H计数器0地址地址 280H 计数器1地址地址 281HCLK0连接时钟连接时钟 1MHZ2 2、参考流程图(见图、参考流程图(见图8、9): 开 始读计数器值显示计数值有键按下吗?开 始送计数器初值N Y结 束结 束设计数器0为工作方式0向计数器0送初值1000先送低字节后送高字节向计数器1送初值1000先送低字节后送高字节设计数器0为工作方式3设计数器1为工作方式3图 8 图图 9四、实验代码1、图6电路的实验代码电路的实验代码CODE SEGMENT ;CODE SEGMENT ;段定义开始(段定义开始(段定义开始(CODE CODE 段)段)ASSUME CS:CODE ; ASSUME CS:CODE ;规定规定CODE 为代码段为代码段START:MOV START:MOV AL,10H ;AL,10H ;AL,10H ;设置控制字设置控制字0001000000010000(计数器(计数器0,方式0,写两个字节,二进制计数)二进制计数)MOV DX,283H ; MOV DX,283H ;把控制寄存器地址放在把控制寄存器地址放在DX 寄存器中寄存器中OUT DX,AL ; OUT DX,AL ;将将AL 的值送入DX 端口端口MOV DX,280H ; MOV DX,280H ;把计数器把计数器0地址放在DX 寄存器中寄存器中MOV AL,0FH ; MOV AL,0FH ;将将0FH 存入AL 寄存器寄存器OUT DX,AL ; OUT DX,AL ;将此时将此时AL 的值送入DX 端口端口LP1: IN AL,DX ;LP1: IN AL,DX ;从从DX 端口读入8位,放在AL 寄存器中寄存器中CALL DISP ; CALL DISP ;调用调用DISP PUSH DX ; PUSH DX ;将将DX 内容保存到堆栈段内容保存到堆栈段MOV AH,06H ; MOV AH,06H ;将将06H 存入AH AH,为了下句调用,为了下句调用21中断中断MOV DL,0FFH ; MOV DL,0FFH ;将将0FFH 存入DLINT 21H ; INT 21H ;调用调用21中断中断POP DX ; POP DX ;将将DX 的内容推出栈段的内容推出栈段JZ LP1 ; JZ LP1 ;如果如果DX 的内容是0,就跳转到LP1MOV AH,4CH ; MOV AH,4CH ;将将4CH 存入AH AH,为了下句调用,为了下句调用21中断中断INT 21H ; INT 21H ;调用调用21中断中断DISP PROC NEAR ;DISP PROC NEAR ;定义一个名为定义一个名为DISP 的子程序的子程序PUSH DX ; PUSH DX ;把把DX 的内容保存到堆栈段中的内容保存到堆栈段中AND AL,0FH ;AL,0FH ;将将AL 寄存器的内容与0FH 进行“与”运算,再把结果存入AL 中MOV DL,AL ; MOV DL,AL ;将将AL 的值送入DL 寄存器寄存器CMP DL,9 ; CMP DL,9 ;比较比较DL 中的值与9的大小的大小JLE NUM ; JLE NUM ;如果如果DL 的值小于或等于9时,则跳转到NUM ADD DL,7 ; ADD DL,7 ;将将DL 的值与7进行相加后,再送入DL 中NUM: ADD DL,30H ;NUM: ADD DL,30H ;将将DL 的值与30H 进行相加后,再送入DL 中 MOV AH,02H ; MOV AH,02H ;将将02H 存入AHINT 21H ; INT 21H ;调用调用DOS21中断中断MOV DL,0DH ; MOV DL,0DH ;结合“结合“结合“MOV AH,02H MOV AH,02H MOV AH,02H”就是说输出”就是说输出0DHINT 21H ; INT 21H ;调用中断指令调用中断指令调用中断指令MOV DL,0AH ; MOV DL,0AH ;结合“结合“结合“MOV AH,02H MOV AH,02H MOV AH,02H”就是说输出”就是说输出0AHINT 21H ; INT 21H ;调用调用DOS21中断中断POP DX ; POP DX ;将将DX 的内容推出栈段的内容推出栈段RET ; RET ;子程序在功能完成后返回调用程序继续执行子程序在功能完成后返回调用程序继续执行 DISP ENDP ; DISP ENDP ;子程序结束子程序结束子程序结束CODE ENDS ; CODE ENDS ;代码段结束代码段结束代码段结束END START ; END START ;程序结束程序结束程序结束2、图7电路的实验代码电路的实验代码CODE SEGMENT ;CODE SEGMENT ;段定义开始(段定义开始(段定义开始(CODE CODE 段)段)ASSUME CS:CODE ; ASSUME CS:CODE ;规定规定CODE 为代码段为代码段START:MOV DX,283H ;START:MOV DX,283H ;把控制寄存器地址放在把控制寄存器地址放在DX 寄存器中寄存器中MOV AL,36H ; MOV AL,36H ;设置控制字设置控制字0011011000110110(计数器(计数器0,方式3,写两个字节,二进制计数)二进制计数)OUT DX,AL ; OUT DX,AL ;将将AL 的值送入DX 端口端口MOV AX,1000H ; MOV AX,1000H ;该语句是立即寻址方式,就是把该语句是立即寻址方式,就是把1000H 这个数赋给AX MOV DX,280H ; MOV DX,280H ;把计数器把计数器0地址放在DX 寄存器中寄存器中OUT DX,AL ; OUT DX,AL ;将将AL 的值送入DX 端口端口MOV AL,AH ; MOV AL,AH ;将将AX 的高8位存入AL 寄存器中寄存器中OUT DX,AL ; OUT DX,AL ;将此时将此时AL 的值送入DX 端口端口MOV DX,283H ; MOV DX,283H ;把端口地址放在把端口地址放在DX 寄存器中寄存器中MOV AL,76H ; MOV AL,76H ;设置控制字设置控制字0111011001110110(计数器(计数器1,方式3,写两个字节,二进制计数)二进制计数) OUT DX,AL ; OUT DX,AL ;将将AL 的值送入DX 端口端口MOV AX,1000H ; MOV AX,1000H ;把把1000H 赋给AXMOV DX,281H ; MOV DX,281H ;把端口地址放在把端口地址放在DX 寄存器中寄存器中OUT DX,AL ; OUT DX,AL ;将将AX 的低8位送入DX 端口端口MOV AL,AH ; MOV AL,AH ;将将AX 的高8位存入AL 寄存器中寄存器中OUT DX,AL ; OUT DX,AL ;将将AL 的值送入DX 端口端口MOV AH,4CH ; MOV AH,4CH ;将将4CH 存入AHINT 21H ; INT 21H ;调用调用DOS21中断中断CODE ENDS ;CODE ENDS ;代码段结束代码段结束代码段结束END START ; END START ;程序结束程序结束程序结束五、实验总结通过实验,学会通过实验,学会8253芯片和微机接口原理和方法,掌握8253定时器定时器//计数。
接口技术实验报告
实验三:可编程定时/计数器8253
一、实验目的
1、学会8253芯片和微机接口的原理和方法。
2、掌握8253定时器/计数器的工作方式和编程原理。
二、实验设备
微机原理实验箱、计算机一套。
三、实验内容
8253计数器0,1工作于方波方式,产生方波。
四、实验原理
本实验用到三部分电路:脉冲发生电路、分频电路以及8253定时器/计数器电路。
脉冲发生电路:实验台上提供8MHZ的脉冲源,见下图,实验台上标有8MHZ的插
孔,即为脉冲的输出端。
脉冲发生电路
分频电路:该电路由一片74LS393组成,见下图。
T0-T7为分频输出插孔。
该计数器在加电时由RESET信号清零。
当脉冲输入为8.0MHZ时,T0-T7输出脉冲频率依次为4.0MHZ,2.0MHZ,1.0MHZ,500KHZ,250KHZ,125KHZ,62500HZ,31250HZ。
分频电路
8253定时器/计数器电路:该电路由1片8253组成,8253的片选、数据口、地址、读、写线均已接好,时钟输入分别为CLK0、CLK1。
定时器输出、GATE控制孔对应如下:OUT0、GATE0、OUT1、GATE1。
原理图如下:
注:GATE信号无输入时为高电平
8253定时器/计数器电路
四、实验连线
1、实验连线:
T接8.0MHZ;CLK0插孔接分频器74LS393(左下方)的T2插孔; OUT0接CLK 1;OUT1接发光二极管;
各通道门控信号GATE +5V
2、编程调试程序。
3、全速运行,观察实验结果。
实验题目8253定时/计数器实验一、实验目的与要求:1。
学会8253芯片和微机接口原理和方法。
2. 掌握8253定时器/计数器的工作方式和编程原理。
二、实验内容:1、实验原理本实验原理图如图1所示,8253A的A0、A1接系统地址总线A0、A1,故8253A 有四个端口地址,如端口地址表1所示.8253A的片选地址为48H~ 4FH。
因此,本实验仪中的8253A四个端口地址为48H、49H、4AH、4BH,分别对应通道0、通道1、通道2和控制字.采用8253A通道0,工作在方式3(方波发生器方式),输入时钟CLK0 为1MHZ, 输出OUTO 要求为1KHZ的方波,并要求用接在GATE0引脚上的导线是接地(”0"电平)或甩空(”1"电平)来观察GATE对计数器的控制作用,用示波器观察输出波形。
2、实验线路连接(1) 8253A芯片的CLK0引出插孔连分频输出插孔1MHZ。
(2) 8253A的GATE0接+5V.3、实验步骤(1) 按图1连好实验线路(2)运行实验程序1.按“调试”按钮2。
选“窗口”“进入示波器窗口",然后最小化3。
按“运行按钮”4.将模拟示波器窗口打开,选择“串行口2",再按ctrl+F2 按钮即可看到波形图1显示“8253-1”用示波器测量8253A的OUT2输出插孔,应有频率为1KHZ的方波输出,幅值0~4V三、实验代码:CODE SEGMENTASSUME CS:CODETCONTRO EQU 004BHTCON2 EQU 004AHCONTPORT EQU 00DFHDATAPORT EQU 00DEHDATA1 EQU 0500HSTART: JMP TCONTTCONT:CALL FORMATCALL LEDDISPMOV DX,TCONTROMOV AL,0B6H ;要使用方式2,0B6H要改为0B4HOUT DX,ALMOV DX,TCON2MOV AL,00 ;输入频率(即时间常数)OUT DX,AL ;要修改频率,只需更改送给AL的值(注意先送低8位,MOV AL,10H ;后送高8位)OUT DX,ALHLTLEDDISP:MOV AL,90H ;显示数据方式命令字送8279控制字MOV DX,CONTPORT ;8279命令状态口OUT DX,ALMOV BYTE PTR DS:[0600H],00 ;置显示位数初值为0 LED1: CMP BYTE PTR DS:[0600H],07H ;判断显示位数满8为否?JA LED2 ;满8位转子程序返回MOV BL,DS:[0600H] ;未满8位从数据区取数MOV BH,0HMOV AL,CS:[BX+DATA1]MOV DX,DATAPORT ;8279数据口OUT DX,ALADD BYTE PTR DS:[0600H],01H ;显示位数加1JNZ LED1LED2: RET ;子程序返回FORMAT: MOV BX,0 ;显示8253———1 MOV WORD PTR DS:[BX+0500H],4006HADD BX,2MOV WORD PTR DS:[BX+0500H],4040HADD BX,2MOV WORD PTR DS:[BX+0500H],6D4FHADD BX,2MOV WORD PTR DS:[BX+0500H],7F5BHRETCODE ENDSEND START四、思考题若改用方式2,并改变时间常数,如何编写程序。
8253计数器实验报告8253计数器实验报告引言:实验报告是对实验过程和结果的详细记录和分析,通过实验报告,可以总结出实验的目的、方法、数据和结论,为进一步研究和实践提供参考。
本文将对8253计数器实验进行报告,介绍实验目的、实验步骤、实验结果和结论。
实验目的:本次实验的目的是熟悉8253计数器的工作原理和使用方法,掌握8253计数器的基本功能和应用场景。
实验步骤:1. 准备实验材料:8253计数器、示波器、电源等。
2. 搭建实验电路:根据实验要求,将8253计数器与示波器和电源相连,确保电路连接正确。
3. 设置实验参数:根据实验要求,设置8253计数器的工作模式、计数范围等参数。
4. 运行实验程序:编写实验程序,通过编程控制8253计数器的工作状态,观察实验结果。
5. 记录实验数据:使用示波器等仪器,记录实验过程中的数据和波形图。
6. 分析实验结果:根据实验数据和波形图,分析8253计数器的工作状态和性能。
实验结果:通过实验,我们观察到了8253计数器的不同工作模式下的输出结果。
在定时器模式下,我们设置了不同的计数范围和计数频率,观察到了计数器的计数过程和计数结果。
在计数器模式下,我们设置了不同的计数方向和计数初始值,观察到了计数器的增减过程和最终的计数结果。
结论:通过本次实验,我们对8253计数器的工作原理和使用方法有了更深入的了解。
我们掌握了8253计数器的基本功能和应用场景,能够根据实际需求设置计数器的工作模式和参数。
实验结果表明,8253计数器具有较高的计数精度和稳定性,在计时、计数等领域有广泛的应用前景。
总结:实验报告是对实验过程和结果的详细记录和分析,通过实验报告,可以总结出实验的目的、方法、数据和结论,为进一步研究和实践提供参考。
本次实验报告对8253计数器的实验进行了详细介绍,包括实验目的、实验步骤、实验结果和结论。
通过本次实验,我们对8253计数器有了更深入的了解,掌握了其基本功能和应用场景。
微机接口 8253定时器实验报告浙江工业大学计算机学院实验名称 8253定时器实验姓名学号班级教师日期一、实验内容与要求1.1 实验内容计数器方式2实验:将8253芯片的计数器0的工作方式设置为方式2,计数器初值为N,用手动开关逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用TPC-USB平台上的LED灯观察OUT0电平变化(当输入第N倍数个脉冲后OUT0变低电平,LED灯由亮变灭,其余脉冲OUT0都是高电平,LED灯都处于亮状态)。
计数器方式3实验:将计数器0、计数器1的工作方式分别设置为方式3,计数初值设为1000,并同时用TPC-USB平台上的LED灯观察OUT1电平变化(频率1Hz)。
1.2 实验要求(1) 具有一定的汇编编程的基础,能编写一些基本语句来实现实验。
实验前根据实验流程图,写出对应代码;(2) 要了解8253定时/计数器芯片内部结构和外部引脚,了解芯片的硬件连接方法、时序关系、各种模式的编程及应用,能熟练地对其进行编程;(3) 熟悉实验平台TPC-USB了解各个接口的名称与功能,进行实验时能快速并正确地连接好实验电路;(4) 计数器方式2实验:连接PC与TPC-USB平台,用微机实验软件运行程序,用手动开关逐个输入单脉冲,在屏幕上能一次显示计数值,当输入第N倍数个脉冲后OUT0变低电平,TPC-USB平台上的LED灯由亮变灭,其余脉冲OUT0都是高电平,LED 灯都处于亮状态;(5) 计数器方式3实验:连接PC与TPC-USB平台,用微机实验软件运行程序,TPC-USB平台上的LED灯能周期性地亮灭,频率为1Hz。
二、实验原理与硬件连线2.1 实验原理1、8253定时/计数器芯片的内部结构:1数据总线缓D7-D0冲器CLK0计数器0GATE0OUT0A0读/写控制A1逻辑1CLKRDWR计数器1GATE1OUT1CS控制字CLK2寄存器计数器2GATE2OUT2图1 8253内部结构图(1)数据总线缓冲器:三态双向8位寄存器,与系统数据总线相连,可寄存以下3种数据: , CPU向8253/8254写入的工作方式命令字;, CPU向计数寄存器写入的计数初值;, 从计数器读出的当前计数值。
同组同学学号:同组同学姓名:实验日期:2012 年 3月 26日交报告日期:2012 年 5月 30日实验(No. 1_1 )题目:定时器与计数器实验(8253)-- 8253定时器实验实验目的及要求:实验目的:1、学习8253可编程定时器/计数器定时方法。
2、学习8253多级串联实现大时间常数的定时方法。
3、学习8088/86控制8253可编程定时器的方法。
实验要求:用8253对标准脉冲信号进行计数,就可以实现定时功能。
用板上的1MHz做为标准信号,将8253可编程计数器/定时器的时间常数设在1000000次,就可以在定时器的管脚上输出1秒钟高/1秒钟低的脉冲信号。
因为8253每个计数器只有十六位,要用两个计数器才能实现一百万次的计数,实现每一秒钟输出状态发生一次反转。
实验电路及连线:连线连接孔1 连接孔21 8253_CS CS42 8253_OUT0L03 8253_GATE0VCC4 8253_CLK08253_OUT15 8253_GATE1VCC6 8253_CLK1F/4(1M)7 4MHz Fin实验说明:1、本实验工作方式0,计数值减完后输出一个脉冲宽度的高电平。
而本实验在计数值减完后,管脚状态产生变化(从高到低或从低到高)。
直到下一次计数值减完。
这样输出的波形为方波。
2、由于定时常数过大,就要用多级串联方式。
本实验采用两级计数器。
定时常数分别为100和10000。
将计数器的输出接到计数器0输入。
计数器0 的输出接到LED0。
实验框图:主程序框图源程序及分析:CONTROL equ 0c003h ;设置命令寄存器COUNT0 equ 0c000h ;设置计数器0COUNT1 equ 0c001h ;设置计数器1COUNT2 equ 0c002h ;设置计数器2code segmentassume cs:codestart proc near;第一次定时器设定:mov al, 36h; ; 计数器0,16位,方式3,二进制(00110110B=36h) mov dx, CONTROLout dx, almov ax, 1000mov dx, COUNT0out dx, al ; 计数器低字节mov al, ahout dx, al ; 计数器高字节;第二次定时器设定mov al,01110110B; ; 计数器1,16位,方式3,二进制mov dx, CONTROLout dx, almov ax, 1000mov dx, COUNT1out dx, al ; 计数器低字节mov al, ahout dx, al ; 计数器高字节jmp $start endpcode endsend start实验(No. 1-2 )题目:定时器与计数器实验(8253)-- 8253计数器实验实验目的及要求:实验目的:1、学习8088/86与8253的连接方法。
实验6 8253定时/计数器实验1、实验目的根据空间配置的原理,掌握获得PCI设备配置的方法,并获得当前PCI卡的IO空间。
理解PCI如何映射IO空间。
了解8253定时器的硬件连接方法及时序关系。
掌握8253的各种模式的编程及其原理,用示波器观察各信号之间的时序关系。
2、实验要求对8253进行编程,使其OUT0上输出一定的频率,将其一定频率输出到喇叭上,演奏出不同的音节。
计算机的数字键(1-7)作为电子音调的音调选择。
3、实验电路及连线8253中GATE0接+5V。
CLK0接153.6KHZ插孔,OUT0接SD。
CS接200~207孔。
4、实验说明对于音乐来讲,从DO到XI每个音阶都有固定的频率。
当8253将这些频率输出到喇叭上,即可听见音阶了。
各音节的频率值:音的节拍由延时子程序来实现。
延时子程序实现基本延时时间,节拍值只能是它的整数倍。
做此实验,程序运行时,依次揿入键盘,扬声器会发出1234567i。
5、实验程序框图注:程序初始化前,必须获取将PCI设备配置空间,通过配置空间来得到物理地址。
在框图中不再列出。
源代码T8253.asm。
6、实验程序DA TA SEGMENTMESS DB '1: 8253A TIMER0 IN MODE3! COUNT=80H',0AH,0DH DB ' 8253A TIMER1 IN MODE2! COUNT=08H',0AH,0DHDB ' 8253A TIMER2 IN MODE2! COUNT=02H',0DH,0AHDB '0: EXIT',0DH,0AH,'$'TIM_CTL DW 03HTIMER0 DW 00HTIMER1 DW 01HTIMER2 DW 02HMODE03 EQU 00010110BMODE12 EQU 01010100BMODE22 EQU 10010100BDIS1 DB 'PCI ADDRESS 0 $';DIS5 DB 'BIOS NOT SUPPER!$'DIS6 DB 'READ PCI BOARD FAIL!$';-------PCI Configuration Space Registers-------------------------------PCI_CS_VENDOR_ID EQU 0PCI_CS_DEVICE_ID EQU 2PCI_CS_COMMAND EQU 4PCI_CS_STATUS EQU 6PCI_CS_REVISION EQU 8PCI_CS_CLASS_CODE EQU 9PCI_CS_CACHE_LINE_SIZE EQU 0CHPCI_CS_MASTER_LATENCY EQU 0DHPCI_CS_HEADER_TYPE EQU 0EHPCI_CS_BIST EQU 0FHPCI_CS_BASE_ADDRESS_0 EQU 10HPCI_CS_BASE_ADDRESS_1 EQU 14HPCI_CS_BASE_ADDRESS_2 EQU 18HPCI_CS_BASE_ADDRESS_3 EQU 1CHPCI_CS_BASE_ADDRESS_4 EQU 20HPCI_CS_BASE_ADDRESS_5 EQU 24HPCI_CS_EXPANSION EQU 30HPCI_CS_INTERRUPT_LINE EQU 3CHPCI_CS_INTERRUPT_PIN EQU 3DHPCI_CS_MIN_GNT EQU 3EHPCI_CS_MAX_LAT EQU 3FHADDRESS_IO_0 DW ?ADDRESS_IO_1 DW ?;---------------------END-------------------------DA TA ENDSSSREG SEGMENT STACKSTA DW 50H DUP(?)TOP EQU LENGTH STASSREG ENDSCODE SEGMENTMAIN PROC FARASSUME CS:CODE,DS:DATA,SS:SSREG START: MOV AX,DATAMOV DS,AXMOV AX,SSREGMOV SS,AXMOV SP,TOPMOV AH,0B1HMOV AL,1HINT 1AHCMP AH,0JZ AA1MOV DX,OFFSET DIS5MOV AH,9INT 21HJMP QUITAA1: MOV AH,0B1HMOV AL,02HMOV CX,9050HMOV DX,10B5HMOV SI,0INT 1AHJNC AAMOV DX,OFFSET DIS6MOV AH,9INT 21HJMP QUITAA: MOV AH,0B1HMOV AL,09HMOV DI,PCI_CS_BASE_ADDRESS_1INT 1AHCMP AH,0JZ BB1MOV DX,OFFSET DIS1MOV AH,9INT 21HJMP QUITBB1: AND CX,0FFFCHMOV AX,CXMOV ADDRESS_IO_0,AXMOV AH,0B1HMOV AL,09HMOV DI,PCI_CS_BASE_ADDRESS_3INT 1AHCMP AH,0JZ CCMOV DX,OFFSET DIS1MOV AH,9INT 21HJMP QUITCC: AND CX,0FFFCHMOV AX,CXMOV ADDRESS_IO_1,AXADD TIM_CTL,AXADD TIMER0,AXADD TIMER1,AXADD TIMER2,AXAGAIN: MOV DX,OFFSET MESSMOV AH,09INT 21HMOV AH,8INT 21HCMP AL,'1'JZ BEGINCMP AL,'0'JNZ AGAINQUIT: MOV AX,4C00HINT 21HBEGIN: CLI ;关中断MOV DX,TIM_CTL ;定时器0工作在方式3MOV AL,MODE03OUT DX,ALMOV CX,1000LOOP $MOV DX,TIMER0MOV AL,80HOUT DX,ALMOV CX,1000LOOP $MOV DX,TIM_CTL ;定时器1工作在方式2MOV AL,MODE12OUT DX,ALMOV CX,1000LOOP $MOV DX,TIMER1MOV AL,8HOUT DX,ALMOV CX,1000LOOP $MOV DX,TIM_CTL ;定时器2工作在方式2MOV AL,MODE22OUT DX,ALMOV CX,1000LOOP $MOV DX,TIMER2MOV AL,02HOUT DX,ALMOV CX,1000LOOP $STIJMP AGAINMAIN ENDPCODE ENDSEND START。
微机原理实验报告实验名称 8253可编程定时/计数器实验一、实验目的1、掌握8253芯片结构及工作方式;2、熟悉8253可编程定时/计数器的编程。
二、实验设备1、Lab6000p实验教学系统;2、IBM-PC机三、系统中的8253模块Lab6000p实验箱中的8253模块连线如图所示:图1 8253模块的连线AD0~AD7、A0、A1、/WR、/RD已分别连至系统总线DB0~DB7、AB0、AB1、/IOW、/IOR;三个通道的OUT、GATE、CLK以及CS引出留给用户连接。
三、实验内容和实验步骤1、8253计数实验1)实验要求5个脉冲后LED0亮。
2)电路连接图2 电路连线3)程序代码见附录程序3.14)实验步骤1、在Lab6000p实验箱上完成连接电路;2、开启计算机电源,开启Lab6000p实验箱电源;3、启动W A VE6000软件;4、确认W A VE6000与Lab6000p连接;5、输入源代码;6、编译源代码(F9);7、连续运行程序(Ctrl+F9),按动单脉冲按键观察LED显示情况。
2、定时实验1)实验要求在LED上实现1秒钟亮/1秒钟灭。
2)电路连接将OUT0的输出接至OUT1的输入,其余连线和实验1中相同。
3)实验代码见程序附录3.24)实验步骤1、在Lab6000p实验箱上完成连接电路;2、开启计算机电源,开启Lab6000p实验箱电源;3、启动W A VE6000软件;4、确认W A VE6000与Lab6000p连接;5、输入源代码;6、编译源代码(F9);7、连续运行程序(Ctrl+F9),按动单脉冲按键观察LED显示情况。
四、实验结果1、8253计数实验在5个脉冲后,LED0灯亮。
2、定时实验在LED上实现1秒钟亮/1秒钟灭。
五、问题思考1、若CS连至地址译码/CS3,程序该如何修改。
答:只需将相应的端口地址修改即可,CS3对应的基地址应为0b00h。
2、为什么定时/计数器初值赋4,5个脉冲后LED才亮。
实验8 8253定时/计数器实验一、实验目的1.了解8253与8086的硬件连接方法。
2.掌握8253的各种方式的编程及其原理。
3.学会Emu8086和Proteus的联合用调。
二、实验要求安装有Emu8086仿真软件和PROTEUS仿真软件的电脑一台。
三、预习内容1、8253定时计数器的内部结构和主要性能。
2、8253芯片的各个引脚及其含义如下图3.1所示。
图3.1 8253A定时计数器D7~D0:双向,8位三态数据线,用以传送数据(计数器的计数值)和控制字CLK0~CLK2:计数器0、1、2的时钟输入,CE对此脉冲计数OUT0~OUT2:计数器0、1、2的输出。
GA TE0~GATE2:计数器0、1、2的门控输入/CS:输入,片选信号。
/RD:输入,读信号。
/WR:输出、写信号。
A0,A1:输入,两位地址选择。
8253的内部寄存器地址如下表表3.1所示:/CS A1 A0 选中0 0 0 计数器00 0 1 计数器10 1 0 计数器20 1 1 控制寄存器表3.1 8253定时计数器的寄存器3、定时、计数器8253的命令字的初始化。
4、8253的六种工作方式具体参考课本(278页至282页)。
5、汇编软件Emu8086和Proteus软件的联合使用方法步骤。
在Proteus软件绘制系统原理图,然后需要对Proteus进行程序导入设置才能进行方真调试。
具体步骤如下:(1)点击Proteus软件菜单中的source的下拉选项中的Dfine Code Generation Tools...如下图3.2所示。
图3.2(2)a在弹出的对话框中单击new按钮如下图3.3所示。
图3.3(3)弹出如下对话框,找到本机中emu8086安装后生成的emu8086文件夹,打开,选择可执行程序emu8086.exe,点击“打开”按钮,如下图3.4所示。
图3.4(4)回到设置对话框后,将源文件和目标文件分别设为ASM和EXE,单击“OK”,如下图3.5所示图3.5(5)单击菜单选项source的下拉选项Add/Remove Source Files...如下图3.6所示。
8253定时器实验报告8253定时器实验报告引言:8253定时器是一种广泛应用于计时和计数领域的集成电路。
本实验旨在通过实际操作,深入了解8253定时器的工作原理和应用。
一、实验目的本实验的主要目的是:1. 理解8253定时器的基本原理和工作方式;2. 掌握8253定时器的使用方法;3. 学会通过8253定时器实现各种定时和计数功能。
二、实验器材和原理本实验所需的主要器材有:1. 一台计算机;2. 一块开发板;3. 一根连接线。
8253定时器是一种具有三个独立计数通道的定时/计数芯片。
它可以通过编程控制来实现各种定时和计数功能。
8253定时器的输入时钟信号可以来自计算机的外部时钟源或者计算机内部时钟源。
三、实验步骤1. 将开发板连接到计算机上,并确保连接正确稳定。
2. 打开计算机,并进入开发板的编程环境。
3. 编写程序,初始化8253定时器,并设置计时/计数模式。
4. 定义所需的计时/计数时间间隔。
5. 启动8253定时器,并开始计时/计数。
6. 根据需要,定时器到达预定时间后,触发相应的中断或输出信号。
7. 结束实验,关闭计算机和开发板。
四、实验结果通过本次实验,我们成功地实现了以下功能:1. 利用8253定时器实现了精确的定时功能,可以精确到毫秒级别;2. 利用8253定时器实现了计数功能,可以用于计算某个事件的发生次数;3. 利用8253定时器的中断功能,可以及时响应某个事件的发生。
五、实验总结本次实验通过实际操作,使我们更深入地了解了8253定时器的工作原理和应用。
通过编程控制8253定时器,我们可以实现各种定时和计数功能,为实际应用提供了很大的便利。
然而,在实验过程中也遇到了一些困难和问题。
比如,在设置计时/计数模式时,需要仔细阅读8253定时器的手册,理解各个寄存器的作用和设置方法。
此外,还需要注意编程时的精度和误差,以确保实验结果的准确性和可靠性。
通过本次实验,我们不仅加深了对8253定时器的理论认识,还提高了自己的实际操作能力。
8253定时器实验实验七可编程定时/计数器与中断控制一、实验目的1.掌握微机中断处理系统的基本原理、学习中断服务程序的编写方法。
2.掌握8253/8254定时/计数器的基本原理和编程方法。
二、实验原理本实验采用Intel8253作为计数器芯片,8254芯片是8253的兼容替代产品,计数速率等性能优于8253。
1.可编程定时/计数器8253功能简介8253含有三个独立的16位计数器,每个计数器连接外设的信号分别是:CLK ——输入的脉冲信号或外部事件,计数器对此脉冲进行减1计数;GATE ——启动/禁止计数的控制信号;OUT ——输出信号。
每个计数器可有六种工作方式,均可由程序设置和改变,8253的几种工作方式及特点如表7.1所示。
若一个计数器被设定为方式0,计数初值n,在控制信号GATE为高时即可对输入的脉冲作减1计数,OUT维持低电平;计数到0时,则由OUT端输出一个高电平信号。
若一个计数器被设定为方式2,输入为周期性脉冲信号,且计数初值可自动重新装入并连续计数,输出信号就成为周期信号,周期为T OUT = n×T IN(或频率?OUT = ?IN / n),即可作为分频器应用。
表7.1 8253的6种工作方式工作方式功能描述GATE=0启动方式初值设置说明方式0计数到0输出高电平停止计数软件一次有效(n+1)T CLK 负脉冲方式1硬件可重触发单稳态--- 硬件自动装入nT CLK负脉冲方式2分频器停止计数软/硬件自动装入T OUT=n×T CLK方式3方波发生器停止计数软/硬件自动装入分频,占空比≈50﹪方式4软件触发选通停止计数软件一次有效计数到0负T CLK方式5 硬件触发选通--- 硬件自动装入波形同方式4注:软件启动是指当GATE=1时写入方式字和初值即启动;硬件启动是指写入方式字和初值后要由GATE上升沿启动。
2.8253编程简要说明8253的每个计数器必须在写入控制字和计数初值后才启动工作,一般的初始化编程分为两步:先写入控制字、再写入计数初值。
实验五8253 定时器/计数器实验
一、实验目的
1、学习8253可编程定时/计数器与8088CPU的接口方法
2、熟悉8253的工作方式
3、熟悉8253在各种工作方式下的编程方法
二、实验内容
1、将计数器1设置为方式0,计数初值为25000,编程使计数值为0时在屏幕上显示字符R,并完成对程序的注释。
三、实验连线:
本实验主要用到的模块:系统模块、8253模块、中断模块等。
8253和系统相连的信号线都已经连好,计数器1的CLK1已经内接了一个250KHz 的信号,可以通过对通道1编程直接控制,将计数器1的OUT1接到8259A中断模块的IR6。
8253的端口地址为40H、41H、42H、43H。
四、实验步骤
1、将实验的线路连接好后,列出程序清单,并进行注释。
2、运行上位机软件,装载并运行程序,观察实验现象。
五、思考
1、8253共有几种工作方式,方式二和方式三有什么区别?
2、将计数器1改为方式2工作,则上面的程序要如何修改?将修改后程序上机调试并观察现象。
3、若要使实验箱的液晶屏上每隔1秒左右显示一个“R”,则连线要做何变动?程序要如何修改?重新连线后将修改完毕的程序上机调试并观察现象。
四、实验步骤1、验证性实验(使用8253产生1S的时钟)具体要求:采用计数器0和计数器1完成对2MHz输入方波信号的两级分频(将计数器0的输出作为计数器1的输入),定时常数均为1000,得到一个周期为2秒钟的方波,用此方波控制蜂鸣器发出报警信号。
实验步骤:参见《微机原理及接口技术实验指导书》P.39“演示实验”的相关内容。
.MODEL TINYCOM_ADDR EQU 0B003HT0_ADDR EQU 0B000HT1_ADDR EQU 0B001H.STACK 100.CODESTART: MOV DX,COM_ADDRMOV AL,35HOUT DX,ALMOV DX,T0_ADDRMOV AL,00HOUT DX,ALMOV AL,10HOUT DX,ALMOV DX,COM_ADDRMOV AL,77HOUT DX,ALMOV DX,T1_ADDRMOV AL,00HOUT DX,ALMOV AL,10HOUT DX,ALJMP $END START图1 8253实验原理图2、拓展性实验(LED指示灯的计次闪烁)具体要求:将8253的CLK0接到脉冲发生开关S4端,OUT0接到一发光二极管。
将8253的计数器0初始化为方式0,并设置计数初值6。
拨动脉冲发生开关并计数,观察LED的变化与拨动开关次数的关系。
实验步骤:参见《微机原理及接口技术实验指导书》P.39“编程实验”的相关内容。
.MODEL TINYCOM_ADDR EQU 0B003HT0_ADDR EQU 0B000H.STACK 100.CODESTART: MOV DX,COM_ADDRMOV AL,11HOUT DX,ALMOV DX,T0_ADDRMOV AL,06HOUT DX,ALEND START。
实验名称8253定时器/计数器仿真实验学生姓名学生学号专业班级指导老师2014-12-31实验五8253定时器/计数器仿真实验一、实验目的1.针对特定的芯片,学会用Proteus ISIS设计仿真电路图;2.掌握8253工作原理,对8253进行仿真;3.了解电路一般仿真方法。
二、实验内容1.配置Proteus仿真环境;2.根据电路图,用合适的代码对其进行仿真。
三、实验步骤1.安装Proteus和masm32编译器;2.在Proteus里配置masm32编译器。
配置过程如下:图 1 添加/移除代码生成工具(1)a)把masm32.bat 复制到c:\masm32\bin 里面(c:\masm32 为你自己安装masm32的路径);b)启动Proteus ISIS 后,选择菜单源代码——>设定代码生成工具。
打开如图1所示;c)点击“新建”,然后选择c:\masm32\bin\masm32.bat文件,就出现图2;图 2 添加/移除代码生成工具(2)d)图中红圈位置分别填上ASM 和EXE。
然后点确定。
使用masm32 编译器就配置好了。
3.在画好电路图后,选择菜单源代码——>添加/删除源文件。
出现图3;图 3 添加/移除源代码(3)4.代码生成工具选择masm32,然后点新建,创建自己的源代码。
比如8253.asm,点确定;5.接下来点击源代码——>1.8253.asm,编辑自己的代码。
完成后保存;6.点击源代码——>全部编译。
出现图4表示编译成功,表示程序可以执行。
图 4 代码成功编译7.点击Proteus中的调试菜单的相应功能,完成仿真。
四、实验结果1.仿真电路图如图5所示;图 5 8253仿真电路图2.8253定时器/计数器仿真波形图如图6所示;图 6 定时器输出3.实验代码如下所示:CODE SEGMENT ;H8253.ASMASSUME CS:CODESTART: JMP TCONTTCONTRO EQU 0A006HTCON0 EQU 0A000HTCON1 EQU 0A002HTCON2 EQU 0A004HTCONT: MOV DX,TCONTROMOV AL,16H ;计数器0,只写计算值低8位,方式3,二进制计数OUT DX,ALMOV DX,TCON0MOV AX,1000 ;时钟为1MHZ ,计数时间=1us*20 =20 us 输出频率50KHZOUT DX,AXJMP $CODE ENDSEND START五、实验总结本次实验,没有用到实验箱,避免了找一台好机器的烦恼。
proteus实验例子8253计时器篇一:实验八可编程定时计数器8253的Proteus仿真实验实验八可编程定时/计数器8253的Proteus仿真实验一、实验要求利用 8086 外接8253 可编程定时/计数器,可以实现方波的产生。
二、实验目的1、学习8086 与8253 的连接方法。
2、学习8253 的控制方法。
3、掌握8253 定时器/计数器的工作方式和编程原理三、实验电路及连线1、Proteus 实验电路2、硬件验证实验硬件连接表四、实验说明1、8253 芯片介绍8253 是一种可编程定时/计数器,有三个十六位计数器,其计数频率范围为0-2MHz,用+5V 单电源供电。
2、8253的功能用途:(1)延时中断(2)可编程频率发生器(3)事件计数器(4)二进制倍频器(5)实时时钟(6)数字单稳(7)复杂的电机控制器3、8253 的六种工作方式:(1)方式0:计数结束中断(2)方式l:可编程频率发生(3)方式2:频率发生器(4)方式3:方波频率发生器(5)方式4:软件触发的选通信号(6)方式5:硬件触发的选通信号五、实验程序流程图六、实验步骤1、Proteus 仿真a.在 Proteus 中打开设计文档“8253_STM.DSN”;b.建立实验程序并编译,仿真;c.如不能正常工作,打开调试窗口进行调试。
参考程序:CODE SEGMENT;H8253.ASMASSUME CS:CODESTART:JMP TCONTTCONTROEQU0A06HTCON0 EQU0A00HTCON1 EQU0A02HTCON2 EQU0A04HTCONT:MOV DX,TCONTROMOV AL,16H ;计数器0,只写计算值低8 位,方式3,二进制计数 OUT DX,ALMOV DX,TCON0MOV AX,20 ;时钟为1MHZ,计数时间=1us*20=20us,输出频率50KHZ OUT DX,ALJMP $CODE ENDSEND START2、实验板验证a.通过USB 线连接实验箱b.按连接表连接电路c.运行PROTEUS 仿真,检查验证结果篇二:基于Proteus的单片机计时器设计基于Proteus的单片机计时器设计和丽花:《电子世界》20XX年第15期【摘要】计时器广泛应用于日常生活和自动化工业控制中。
实验六定时器 / 计数器一、实验目的 :⒈学会8253芯片和微机接口的原理和方法。
⒉掌握8253定时器/计数器的工作方式和编程原理。
二、实验内容 :用8253的0通道工作在方式3,产生方波。
三、实验接线图 :四、编程指南:⒈8253芯片介绍8253是一种可编程定时/计数器,有三个十六位计数器,其计数频率范围为0-2MHz,用+5V单电源供电。
8253的功能用途:⑴延时中断⑸实时时钟⑵可编程频率发生器⑹数字单稳⑶事件计数器⑺复杂的电机控制器⑷二进制倍频器8253的六种工作方式:⑴方式0:计数结束中断⑷方式3:方波频率发生器⑵方式l:可编程频率发生⑸方式4:软件触发的选通信号⑶方式2:频率发生器⑹方式5:硬件触发的选通信号五、实验程序框图:六、实验步骤:⒈按图连好实验线路:⑴8253的GATE0接+5V。
⑵8253的CLK0插孔接分频器74LS393(左下方)的T2插孔,分频器的频率源为8.0MHZ,(3) T→8.0MHZ。
⒉运行实验程序:在系统处于提示符“P.”状态下,按SCAL键,输入1290,按EXEC键。
⒊用示波器测量8253的OUT0输出插孔有方波产生。
七、实验结果:八、实验程序清单:CODE SEGMENT ;H8253.ASMASSUME CS:CODEORG 1290HSTART:JMP TCONTTCONTRO EQU 0043H ;控制口地址TCON0 EQU 0040H ;定时器0地址TCONT: MOV DX,TCONTRO ;取控制口地址MOV AL,36H ;设控制字OUT DX,AL ;输出控制字MOV DX,TCON0 ;取定时器0地址MOV AL,00HOUT DX,AL ;初值0送定时器0MOV AL,04HOUT DX,AL ;初值04送定时器0MOV DX,TCONTRO ;取控制口地址MOV AL,36H ;取控制字OUT DX,AL ;输出控制字MOV DX,TCON0 ;取定时器0地址MOV AL,00HOUT DX,AL ;初值0送定时器0MOV AL,02HOUT DX,AL ;初值02送定时器0JMP $ ;CPUT踏步,定时器自动工作CODE ENDSEND START说明:系统提供用户使用的空间为00000H-0FFFFH,用于存放、调试实验程序。
实验名称8253定时器/计数器仿真实验学生姓名
学生学号
专业班级
指导老师
2014-12-31
实验五8253定时器/计数器仿真实验
一、实验目的
1.针对特定的芯片,学会用Proteus ISIS设计仿真电路图;
2.掌握8253工作原理,对8253进行仿真;
3.了解电路一般仿真方法。
二、实验内容
1.配置Proteus仿真环境;
2.根据电路图,用合适的代码对其进行仿真。
三、实验步骤
1.安装Proteus和masm32编译器;
2.在Proteus里配置masm32编译器。
配置过程如下:
图 1 添加/移除代码生成工具(1)
a)把masm32.bat 复制到c:\masm32\bin 里面(c:\masm32 为你自己安
装masm32的路径);
b)启动Proteus ISIS 后,选择菜单源代码——>设定代码生成工具。
打开如图1所示;
c)点击“新建”,然后选择c:\masm32\bin\masm32.bat文件,就出现图
2;
图 2 添加/移除代码生成工具(2)
d)图中红圈位置分别填上ASM 和EXE。
然后点确定。
使用masm32 编
译器就配置好了。
3.在画好电路图后,选择菜单源代码——>添加/删除源文件。
出现图3;
图 3 添加/移除源代码(3)
4.代码生成工具选择masm32,然后点新建,创建自己的源代码。
比如
8253.asm,点确定;
5.接下来点击源代码——>1.8253.asm,编辑自己的代码。
完成后保存;
6.点击源代码——>全部编译。
出现图4表示编译成功,表示程序可以执
行。
图 4 代码成功编译
7.点击Proteus中的调试菜单的相应功能,完成仿真。
四、实验结果
1.仿真电路图如图5所示;
图 5 8253仿真电路图
2.8253定时器/计数器仿真波形图如图6所示;
图 6 定时器输出
3.实验代码如下所示:
CODE SEGMENT ;H8253.ASM
ASSUME CS:CODE
START: JMP TCONT
TCONTRO EQU 0A006H
TCON0 EQU 0A000H
TCON1 EQU 0A002H
TCON2 EQU 0A004H
TCONT: MOV DX,TCONTRO
MOV AL,16H ;计数器0,只写计算值低8位,方式3,二进制计数
OUT DX,AL
MOV DX,TCON0
MOV AX,1000 ;时钟为1MHZ ,计数时间=1us*20 =20 us 输出频率50KHZ
OUT DX,AX
JMP $
CODE ENDS
END START
五、实验总结
本次实验,没有用到实验箱,避免了找一台好机器的烦恼。
说实在的,感觉用软件仿真比用实验箱效果好。
因为,实验箱的硬件已经固定,不可以任意改动,而软件仿真,可以构造任意硬件电路,来进行仿真,更有助于我们学习掌握更多的知识。