8253定时器计数器实验
- 格式:doc
- 大小:933.00 KB
- 文档页数:5
定时器计数器实验1.简单计数器:用实验系统的频率发生器作为输入信号,作为定时器T0输入,实现秒脉冲发生器,秒脉冲信号接8259A INT0。
用发光二极管二进制方式显示秒计数。
此实验利用8253的一路计时器,将定时频率接到CLK上,使该路工作在方式2下,即将其作为频率发生器,GATE端置为高电平,OUT端接到8259A的INT0端,即当OUT给出一个上升沿跳变时,程序调用中断服务程序,在中断服务程序中,向输出接口273进行写入并输出,每次进中断输出值加一,给适当的输入脉冲,即可实现秒脉冲发生器。
程序代码如下:ICW1 equ 00010011b ; 写8259A控制字(单片8259, 上升沿中断, 要写ICW4)ICW2 equ 00100000b ; 中断号为20HICW4 equ 00000001b ; 工作在8086/88 方式OCW1 equ 11111110b ; 只响应INT0 中断CS8259A equ 09000h ; 8259地址CS8259B equ 09001hCONTROL equ 08003h ;8253控制字COUNT0 equ 08000h ;1路计数器方式字COUNT1 equ 08001h ;2路计数器方式字COUNT2 equ 08002h ;3路方式字(此程序中未用)CS273 equ 0A000hdata segmentCNT db 0data endscode segmentassume cs:code, ds: dataIEnter proc nearpush axpush dxstimov dx, CS273inc CNTmov al, CNTout dx, al ; 输出计数值mov dx, CS8259Amov al, 20h ; 中断服务程序结束指令out dx, alnoppop dxpop axiretIEnter endpIInit procmov dx, CS8259Amov al, ICW1out dx, almov dx, CS8259Bmov al, ICW2out dx, almov al, ICW4out dx, almov al, OCW1out dx, alretIInit endp ;8259A的初始化子程序start proc nearmov al, 34h ; 通道0,方式2mov dx, CONTROLout dx, al ;写入程序控制字mov al, 0out dx, al ; 高八位mov al, 00000000B ; 锁存计数器值mov dx, CONTROLout dx, almov dx,COUNT0 ;写入0通道方式字mov ax,1000out dx,almov al,ahout dx,almov ax, 0mov ds, axmov bx, 4*ICW2 ; 中断号mov ax, codeshl ax, 4 ; x 16add ax, offset IEnter ; 中断入口地址(段地址为0)mov [bx], axmov ax, 0inc bxinc bxmov [bx], ax ; 代码段地址为0call IInitmov ax, datamov ds, axmov CNT, 0 ; 计数值初始为0mov al, CNTmov dx, CS273out dx, alstiLP: ; 等待中断,并计数。
可编程定时器/计数器(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定时/计数器实验一.实验目的了解8253的硬件连接方法,掌握8253的各种方式的编程及其原理。
二.实验要求编写程序,将8253的计数器0设置为方式3(方波),计数器1设置为方式2(分频),计数器2设置为方式2(分频);计数器0的输出作为计数器1的输入,计数器1的输出作为计数器2的输入;计数器2的输出接在一个LED上,运行后可观察到该LED在不停地闪烁。
1. 编程时用程序框图中的三个计数初值,计算OUT2的输出频率,用手表观察LED,进行核对。
2. 修改程序中的三个计数初值,使OUT2的输出频率为1Hz,用手表观察LED,进行核对。
3. 上面计数方式选用的是16进制,现若改用BCD码,试修改程序中的三个计数初值,使LED的闪亮频率仍为1Hz。
三.实验电路及连线GATE0~GATE2连至电源+5V,从波特率开关边的f插孔用线连至CLK0,OUT0用线连至CLK1,OUT1用线连至CLK2,OUT2用线连至一个发光管(DL1),8253片选孔CS 用线连至译码处228~22FH插孔。
四.实验说明8253工作频率为0~2MHZ,所以输入的时钟频率必须在2MHZ之下。
实验板上的晶振为4.9152MHZ,需经74LS393(16分频),由Q3输出307200HZ到CLK0(将波特率开关拨至9600)。
五.实验内容(一)程序:DA TA SEGMENTDA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: PUSH DSMOV AX,0HPUSH AXMOV AX,DATAMOV DS,AXCLI ;关中断MOV DX,22BH ;定时器0工作在方式3MOV AL,00110111BOUT DX,ALMOV DX,228HMOV AL,00HOUT DX,ALMOV AL,02HOUT DX,ALMOV DX,22BH ;定时器1工作在方式2MOV AL,01110101BOUT DX,ALMOV DX,229HMOV AL,18HOUT DX,ALMOV AL,00HOUT DX,ALMOV DX,22BH ;定时器2工作在方式2MOV AL,10110101BOUT DX,ALMOV DX,22AHMOV AL,0AHOUT DX,ALMOV AL,00HOUT DX,ALSTIJMP $CODE ENDSEND START输出频率:f=307200HZ/(200H*18H*0AH)=2HZ修改后程序:DA TA SEGMENTDA TA ENDSCODE SEGMENTSTART: PUSH DSMOV AX,0HPUSH AXMOV AX,DATAMOV DS,AXCLI ;关中断MOV DX,22BH ;定时器0工作在方式3 MOV AL,00110111BOUT DX,ALMOV DX,228HMOV AL,00HOUT DX,ALMOV AL,02HOUT DX,ALMOV DX,22BH ;定时器1工作在方式2 MOV AL,01110101BOUT DX,ALMOV DX,229HMOV AL,30H ;初值30HOUT DX,ALMOV AL,00HOUT DX,ALMOV DX,22BH ;定时器2工作在方式2 MOV AL,10110101BOUT DX,ALMOV DX,22AHMOV AL,0AHOUT DX,ALMOV AL,00HOUT DX,ALSTIJMP $CODE ENDSEND START输出频率1HZ(二)OUT1----LED1:点亮0.5s,熄灭0.5sOUT2----LED2:点亮1s,熄灭3s程序:DA TA SEGMENTDA TA ENDSCODE SEGMENTSTART: PUSH DSMOV AX,0HPUSH AXMOV AX,DATAMOV DS,AXCLI ;关中断MOV DX,22BH ;定时器0工作在方式3 MOV AL,00110111B ;OUT DX,ALMOV DX,228HMOV AL,00HOUT DX,ALMOV AL,02HOUT DX,ALMOV DX,22BH ;定时器1工作在方式2 MOV AL,01110111BOUT DX,ALMOV DX,229HMOV AL,35H ;35H 58hOUT DX,ALMOV AL,15H ;15H 02hOUT DX,ALMOV DX,22BH ;定时器2工作在方式2 MOV AL,10110100BOUT DX,ALMOV DX,22AHMOV AL,04H ;04hOUT DX,ALMOV AL,00HOUT DX,ALSTIJMP $CODE ENDSEND START。
实验三8253A定时/计数器实验一、实验目的1、学习8253A可编程定时/计数器与8088CPU的接口方法;2、了解8253A的工作方式;3、掌握8253A在各种方式下的编程方法。
二、预备知识8253/8254是可编程的定时器芯片。
它们都是包含三个独立的16位通道。
每个通道可作定时器也可作计数器使用,可通过软件编程选定6种工作方式之任一种。
它们都用N沟道MOS工艺制成,只需要一组+5V电源。
三、实验原理说明及连线本实验主要用到的模块:系统模块、8253模块、中断模块等。
8253和系统相连的信号线都已经连好,只需要连接信号到8253模块通道2的OUT2、CLK2和GATE2即可。
通道1的CLK1已经接了一个250KHz的信号,可以通过对通道1编程直接控制。
8253的地址参见第五章。
实验连线:1、实验1的连线方法:8253模块的CLK2接信号源的500KHz ,OUT2接中断模块的IR6;2、实验2的连线方法:8253模块的CLK2接信号源的500KHz。
四、实验内容1、实验1将计数器2设置为方式0,计数初值为N,编程使计数值为0时在屏幕上显示字符R。
2、实验2将计数器2设置为方式3,计数初值为1000,输入接500KHz信号,用示波器观察输出电平的变化。
五、程序框图实验1的程序流程图见图3-6-1。
1、确认连接好线路;2、装载运行程序(实验内容1调用:ZY3A.EXE,实验内容2调用:ZY3B.EXE)。
七、仪器配置ZY15MicInt12BB微机原理及接口实验箱一台示波器一台八、实验现象实验1,当计数到时,屏幕上将会显示字符R;实验2,用示波器观察将会看到连续的波形,频率为500Hz。
九、思考题答案8253共有几种工作方式,方式二和方式三有什么区别?答案:8253的工作方式字由8253的工作方式命令字的D3、D2、D1三位来确定,共有六种工作方式,方式二和方式三的区别主要是方式二的输出是脉冲,方式三的输出是方波。
接口技术实验报告
实验三:可编程定时/计数器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定时/计数器的应用、编程方法。
二、实验设备:MUT—Ⅲ型实验箱、8086CPU模块、示波器。
三、实验内容:用定时/计数器8253的计数器0、计数器1级联实现1秒的定时。
使OUT1端所接发光二极管每隔1S闪烁一次,模拟电子秒表或信号报警器。
两个计数器皆工作于方式3(输出方波),CLK0端接频率为750KHz的时钟。
四、实验电路:本实验用到两部分电路:时钟脉冲发生器(脉冲产生电路)(见附录)、8253定时器/计数器(1片)。
电路原理图如图1所示。
图1:8253定时/计数器实验电路五、实验步骤:(1)实验连线:CS0连CS8253,8253CLK0连时钟脉冲发生电路的CLK3,OUT0连8253CLK1,OUT1连LED1。
如图2所示。
注意:GATE信号线、数据线、地址线、读写控制信号线均已接好。
图2:线路连接示意图(2)输入以下程序,编译、链接后,全速运行,观察实验结果。
;8253初始化参考程序CODE SEGMENTASSUME CS:CODEORG 0100HSTART:MOV DX,04A6H ;控制寄存器地址MOV AL,00110110B ;计数器0控制字:方式3,二进制计数OUT DX,ALMOV DX,04A0H ;计数器0的口地址MOV AL,0EEH ;写计数初值低8位OUT DX,ALMOV AL,02H ;写计数初值高8位OUT DX,ALMOV DX,04A6H ;控制寄存器地址MOV AL,01110110B ;计数器1控制字:方式3,二进制计数OUT DX,ALMOV DX,04A2H ;计数器1的口地址MOV AL,0E8H ;计数初值低8位OUT DX,ALMOV AL,03H ;计数值高8位OUT DX,ALNEXT: NOPJMP NEXT ;CPU在此循环执行空操作,说明8253独立工作。
实验四8253定时/计数器应用1.实验目的掌握8253命令字的设置及初始化和8253的工作方式及应用编程2.实验内容8253是INTEL公司生产的通用外围接口芯片之一,它有3个独立的16位计数器,计数频率范围为0-2MHZ。
它所有的计数方式和操作方式都可通过编程控制。
其功能是延时终端、可编程频率发生器、事件计数器、倍频器、实时时钟、数字单稳和复杂的电机控制器。
3.实训步骤实现方式0的电路图。
设8253端口地址为:40H-43H要求:设定8253的计数器2工作方式为0 ,用于事件计数,当计数值为5时,发出中断请求信号,8088响应中断在监视设备上显示M。
本实训利用KK1作为CLK输入,故初值设为5时,需按动KK1键6次,可显示一个M.实验七 8253定时/计数器应用实验一.实验目的1.熟悉8253在系统中的典型接法。
2.掌握8253的工作方式及应用编程。
二.实验设备TDN86/88教学实验系统一台三.实验内容(一)系统中的8253芯片图7-1 8253的内部结构及引脚1. 8253可编程定时/计数器介绍8253可编程定时/计数器是Intel公司生产的通用外围芯片之一。
它有3个独立的十六位计数器,计数频率范围为0-2MHz。
它所有的计数方式和操作方式都通过编程的控制。
8253的功能是:(1)延时中断(2)可编程频率发生器(3)事件计数器(4)倍频器(5)实时时钟(6)数字单稳(7)复杂的电机控制器8253的工作方式:(1)方式0:计数结束中断(2)方式1:可编程频率发生器(3)方式2:频率发生器(4)方式3:方波频率发生器(5)方式4:软件触发的选通信号(6)方式5:硬件触发的选通信号8253的内部结构及引脚如图7-1所示,8253的控制字格式如图7-2所示。
图7-2 8253的控制字8253的初始化编程如下图:2. 系统中的8253芯片系统中装有一片8253芯片,其线路如图7-3所示。
DW 64 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODESTART: IN AL,21HAND AL,7FHOUT 21H,ALMOV AL,____HOUT 43H,AL ;8253控制口地址A1: MOV AL,____HOUT 42H,ALHLTSTIJMP A1HLTSTIJMP A1MOV AX,014DHINT 10H ;显示’M’MOV AX,0120HINT 10H ;显示空格MOV AL,20HOUT 20H,ALIRETCODE ENDSEND START实验步骤(1)按图接线。
集美大学计算机工程学院实验报告课程名称微机系统与接口技术实验名称实验三8253可编程计数器/定时器实验实验类型设计型姓名学号日期地点室成绩教师1. 实验目的及内容1.1实验目的1)了解8253的内部结构、工作原理;了解8253与8088的接口逻辑; 2)熟悉8253的控制寄存器和初始化编程方法,熟悉8253的6种工作模式。
1.2实验内容1)设计8253与8086CPU 的硬件连接图,分配8253的基地址为0F000H 。
2)设计8253与外界输入时钟频率2MHZ 和电源的硬件连接,使8253产生周期为1秒的方波。
用此方波控制LED 灯,使其发出闪烁信号。
2. 实验环境星研电子软件,STAR 系列实验仪一套、PC 机一台、导线若干3. 实验方法8259A 的中断引脚IRi 与单脉冲连接,实现拨动单脉冲开关触发8259A 中断,8086计数中断次数并显示于G5区的断码管LED 上,此实验使用8259A 的IR2中断,正脉冲触发中断,脉冲频率为2MHz.4. 实验步骤4.1电路设计D0D1D2D4D5D6D7WR RD D3D08OUT010D17GATE011D26CLK09D35D44D53D62OUT113D71GATE114CLK115CS 21RD 22WR 23OUT217A019GATE216A120CLK2188253U35A0A1GATE0CLK0OUT1GATE1OUT2GATE2CLK2CSVCC 2M(B2)Ctrl(D1)VCCCS5(0B000H)A0A1A8253_1 EQU 0F002HA8253_2 EQU 0F001HA8253_3 EQU 0F003H.DATA.STACK.CODESTART: MOV AX,@DATAMOV DS,AXMOV ES,AXmov dx,A8253_3mov al,00110101bout dx,almov dx,A8253_0mov al,00Hout dx,almov al,20Hout dx,almov dx,A8253_3mov al,01110111bout dx,almov dx,A8253_1mov al,00Hout dx,almov al,10Hout dx,alEND START4.4运行调试程序1)按要求设计的电路正确连接线路,检查完毕后打开电源。
实验十四8253 可编程计数器/定时器实验要求一、实验目的1、掌握8253的主要性能及其初始化编程。
2、学会根据实验要求设计8253的接口电路。
二、实验技术准备8253主要功能有:(1)一片上有三个独立的16位计数器通道。
(2)每个计数器都可以按照二进制或十进制计数。
(3)每个计数器的计数速率可达2MHz。
(4)每个通道有6种工作方式,可由程序设置和改变。
8253内部结构8253管脚图注:实验箱上使用的是8254芯片,8254芯片是8253芯片的增强型,管脚完全相同。
实验箱上的8254芯片电源和数据线均已连接好,实验时连接好读写控制模块信号芯片即可工作。
8253的端口选择表8253控制字格式计数值N与输出波形关系门控输入信号的作用8253有六种不同的工作方式:方式0——计数结束产生中断方式方式1——可编程单次脉冲方式方式2——分频工作方式方式3——方波方式方式4——软件触发选通方式方式5——硬件触发选通方式我们要求通过对方式0、方式1的实验,来了解和掌握8253主要性能及其初始化编程。
1、方式0 计数器结束中断方式当选定8253工作于方式0,并对选定的计数器写入控制字时,该计数器的输出端OUT立即变为低电平。
要使计数器能够进行计数,门控信号GATE必须为高。
若CPU利用输出指令向计数器写入计数值时(N=5),写WRn的上升沿把计数值写入计数寄存器。
在WRn上升沿后的下一个时钟脉冲CLK的下降沿时,才把计数值N写入计数寄存器执行单元CE。
在CLK 到来时开始减1计数。
总共要经过N+1个CLK脉冲后计数器减为0,这时OUT引脚由低电平变为高电平。
利用由低电平变为高电平正跳变信号向CPU发出中断请求。
方式0波形图2、方式1 可编程单稳态输出方式当CPU用控制字设定计数器工作于方式1时,计数器的输出OUT立即变为高电平,在CPU装入计数值N后,必须等到GATE由低电平到高电平的跳变,产生一个上升沿后,才能在下一个时钟脉冲CLK的下降沿将N 值装入计数器执行单元,同时输出端OUT由高电平向低电平跳变,以后每来一个时钟脉冲,计数器就开始减1操作,当计数器的值减为0时,OUT 产生由低到高的正跳变。
微机原理实验报告实验五 8253计数器/定时器接口实验1.实验目的1)学会通过PC总线、驱动器、译码器等在PC机外部扩充为新的芯片;2)了解8253计数器/定时器的工作原理;3)掌握8253初始化的程序设计;4)掌握8253方式0的计数方式的使用方法和方式3方波产生的方法。
2.实验内容将实验装置上的1片8253定时器/计数器接入系统,具体做两个内容的实验。
1)实验一:将8253的计数器0设置为工作于方式0,设定一个计数初值,用手动逐个输入单脉冲,观察OUT0的电平变化。
硬件连接:断开电源,按图2-1将8253接入系统。
具体包括:(1)将8253的CS接I/O地址输出端280H-287H;(2)将8253的计数器0的CLK0与单脉冲信号相连,以用来对单脉冲进行计数;(3)将8253的GATE0用专用导线接向+5V,以允许计数器0工作;(4)将8253的OUT0接到LED发光二极管,以显示8253计数器0的输出OUT0的状态。
图2-1 8253实验一的连线图2)实验二:将8253的计数器0、1均设置为工作于方式3(方波),按图2-2重新接线。
要求是当CLK0接1MHz时,OUT1输出1Hz的方波,OUT的输出由LED 显示出来。
将计数器0与计数器1串联使用,计数器0的输出脉冲OUT0作为计数器1的时钟输入CLK1。
图2-2 8253实验二的连线图3.程序及框图1)程序框图图4-1给出了8253实验一的流程图。
图4-1 程序流程图图4-2给出了8253实验二的流程图。
2)程序代码实验一程序代码:CTRL EQU 283HTIME0 EQU 280HTIME1 EQU 281HDATA SEGMENTMESS DB 'ENTER ANY KEY RETURN TO DOS!',0DH,0AH,'$' DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DX,AXMOV DX,OFFSET MESSMOV AH,09HINT 21HMOV DX,CTRLMOV AL,30HOUT DX,ALMOV DX,TIME0MOV AX,03HOUT DX,ALXCHG AH,ALOUT DX,ALCOUNT:MOV AH,06HMOV DL,0FFHINT 21HJZ COUNTMOV AX,4C00HINT 21HCODE ENDSEND START实验二程序代码:CTRL EQU 283HTIME0 EQU 280HTIME1 EQU 281HDATA SEGMENTMESS DB 'ENTER ANY KEY RETURN TO DOS!',0DH,0AH,'$' DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DX,AXMOV DX,OFFSET MESSMOV AH,09HINT 21HMOV DX,CTRLMOV AL,36HOUT DX,ALMOV AL,76H OUT DX,ALMOV DX,TIME0 MOV AX,1000OUT DX,ALXCHG AH,ALOUT DX,ALMOV DX,TIME1 MOV AX,1000OUT DX,ALXCHG AH,ALOUT DX,ALCOUNT:MOV AH,06H MOV DL,0FFHINT 21HJZ COUNTMOV AX,4C00HINT 21HCODE ENDSEND START4.实验数据、现象及结果分析5. 实验思考题1)实验一中的定时器0的输出OUT0的电平是如何变化的,为什么?解:假设对定时器0赋初值为3,则控制字发送后,OUT0变为低电平,当手动输入3个单脉冲后,OUT0变为高电平。
微机原理实验报告实验题目:可编程定时器/计数器8253一、实验目的1、学习8253可编程定时器/计数器定时方法2、学习8253多级串联实现大时间常数定时方法二、实验内容编一个1秒定时子程序,并提示有键盘读入要计时的时间,并把数值显示在屏幕上三、实验器材微机原理实验箱1个电脑(带TPC-USB软件)1台插线若干四、实现过程1、流程图2、程序源代码;*****************************************IOY0 EQU 280H;*****************************************MY8253_COUNT0 EQU IOY0+00HMY8253_COUNT1 EQU IOY0+01HMY8253_COUNT2 EQU IOY0+02HMY8253_MODE EQU IOY0+03H;*****************************************MY8255IOY0 EQU 2A0H;*****************************************MY8255_A EQU MY8255IOY0+00HMY8255_B EQU MY8255IOY0+01HMY8255_C EQU MY8255IOY0+02HMY8255_MODE EQU MY8255IOY0+03HSTACK1 SEGMENT STACKDW 256 DUP(?)STACK1 ENDSDATA SEGMENTCOUNTER2 DB 0MESG1 DB 'Please input your number:',0DH,0AH,'$' ;提示语一,请输入数字MESG2 DB 'It is counting:',0DH,0AH,'$';提示语二,正在计数MESG3 DB 'Wrong input,please input again:',0DH,0AH,'$';提示语三,输入错误,请重新输入DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV DX,OFFSET MESG1 ;输出提示语MOV AH,9INT 21HDEAL: MOV AH,1 ;读入一个数字INT 21HCMP AL,'0'JL EXITCMP AL,'9'JG EXITMOV BL,ALSUB BL,30H ;把输入的ASCII码转化成数字ADD COUNTER2,BL ;COUNTER2+=INPUTMOV CH,00HMOV CL,COUNTER2MOV DL,0DH ;回车换行MOV AH,02INT 21HMOV DL,0AHMOV AH,02INT 21HONE_SECOND:MOV AL,CL ;输出当前计数值CXADD AL,30HMOV DL,ALMOV AH,02INT 21HMOV DL,0DH ;回车换行MOV AH,02INT 21HMOV DL,0AHMOV AH,02INT 21HMOV DX,MY8253_MODE ;计数器0,方式3,十进制计数MOV AL,37HOUT DX,ALMOV DX,MY8253_COUNT0 ;装入初值MOV AL,00H ;1000分频OUT DX,ALMOV AL,10HOUT DX,ALMOV DX,MY8253_MODE ;计数器1,方式0,十进制计数MOV AL,71HOUT DX,ALMOV DX,MY8253_COUNT1 ;装入初值MOV AL,00H ;1000分频MOV AL,10HOUT DX,ALMOV DX,MY8255_MODEMOV AL,89HOUT DX,ALMOV DX,MY8255_CL1: IN AL,DX ;判断PC7口是否为高,即计数一秒是否已到TEST AL,80HJZ L1DEC CXJNZ ONE_SECONDQUIT:MOV AX,4C00HINT 21HEXIT: MOV DX,OFFSET MESG3 ;输入范围错误,提示重新输入MOV AH,9INT 21HJMP DEALCODE ENDSEND START3、实验结果图五、实验改进1、说明本实验中课本上只给出了0~9秒的计数,而实际运用的时候我们经常会需要用到任意值的定时,因此我们做了改进,计时可以输入任意数,若要输出到屏幕则能计数0~992、流程图注:改进的地方是分十位和个位进行存储和输出显示六、小结1、通过本次试验,我进一步了解了8253的定时和计数功能,以及如何通过串联定时器的方式实现大时间常数的定时。
实验报告实验名称可编程定时器/计数器(8253)姓名学号班级教师日期一、实验内容与要求1.1 实验内容计数器方式2实验:将8253芯片的计数器0的工作方式设置为方式2,读/写格式设置为01,写入时只写入计数器初值低8位,高8位置0,采用二进制格式计数。
计数器初值为N(N>=0FH),用手动开关逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用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 实验原理TPC-USB平台上有一块8253定时/计数器芯片,PC可以通过8253芯片进行计数和定时。
(1)8253定时/计数器芯片的内部结构:8253定时/计数器芯片的内部结构如图1所示。
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的每个计数器必须在写入控制字和计数初值后才启动工作,一般的初始化编程分为两步:先写入控制字、再写入计数初值。
理工学院实验报告(1)、连接实验电路连线:8253 CS ------ 端口地址 300CS PACK IMS ----- 393 1A393 1QD ------ 8253 CLK18253 OUT1 ---- 8253 CLK28253 OUT2 ---- 发光二极管 L15 8253 GATE1 -- (A10)+5V8253 GATE2 -- (A10)+5V结果如下图所示:(2)、实验程序如下所示:CS8253 EQU 0303HCOUNT0 EQU 0300HCOUNT1 EQU 0301HCOUNT2 EQU 0302HCODE SEGMENTASSUME CS:CODESTART PROC NEARMOV DX,CS8253MOV AL,01110110BOUT DX,ALMOV DX,COUNT1MOV AX,307OUT DX,ALMOV AL,AHOUT DX,ALMOV DX,CS8253MOV AL,10110110BOUT DX,ALMOV DX,COUNT2MOV AX,1000OUT DX,ALMOV AL,AHOUT DX,ALJMP $START ENDPCODE ENDS(3)、经编译、无语法错误后装载到实验系统,全速运行程序,观察发光二极管L15,应有周期为1s的点亮、熄灭。
结果如下图所示:一秒后又熄灭,如此往复。
(4)、做完实验后,应按暂停命令中止程序的运行。
二、8253计数器实验验证8253的工作方式3,CLK1每输入5个单脉冲信号,改变一次OUT1状态。
实验电路:DATA BUS D7~D0D08OUT010D17GATE011D26CLK09D35D44D53D62OUT113D71GATE114CLK115CS21RD22WR23OUT217A019GATE216A120CLK2188253/CS300CSIORIOWA0A1VCC1.8432MHzOUT0GATE1CLK1OUT1OUT2CLK2GATE2+5VSP单次正脉冲L15发光二极管显示图4-6-2 8253计数器实验电路图实验步骤:1)按图4-6-2连接实验电路,参考程序:8253-2.ASM;2)编写实验程序,经编译、无语法错误后装载到实验系统;3)全速运行程序,每按5次单脉冲按钮,改变1次发光二极管L15的状态;4)实验完毕后,应使用暂停命令中止程序的运行。