实验三 8253定时器实
- 格式:ppt
- 大小:108.00 KB
- 文档页数:8
实验三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、全速运行,观察实验结果。
一、实验目的1、掌握8253的基本工作原理和编程方法。
2、了解微机控制直流继电器的一般方法。
3、进一步熟悉使用8255、8253。
二、实验内容1、按图3-1虚线连接电路,将计数器0设置为方式0,计数器初值为N(N ≤0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0变高电平)。
图3-12、按图3-2连接电路,将out1接LED 灯L0,让灯亮1s,熄灭1s (频率1HZ)。
图3-23、实验电路如图3-3,按虚线连接电路:CLK0接1MHZ ,GATE0,GATE1,接+5V ,OUT0接CLK1,OUT1接PA0,PC0接继电器驱动电路的开关输入端Ik 。
编程使用8253定时,让继电器周而复始的闭合5秒钟(指示灯灯亮),断开5秒钟(指示灯灯灭)。
图3-34. 实验电路如图3-4,8253的CLK0接1MHZ时钟,GATE0接8255的PA1,OUT0和8255的PA0接到与门的两个输入端,K8跳线连接喇叭,编程使计算机的数字键1、2、3、4、5、6、7作为电子琴按键,按下即发出相应的音阶。
图3-4 电子琴电路三、编程提示1、8253控制寄存器地址283H计数器0地址280H计数器1地址281HCLK0连接时钟1MHZ将8253计数器0设置为方式3、计数器1设置为方式0并联使用,CLK0接1MHZ时钟,设置两个计数器的初值(乘积为5000000)启动计数器工作后,经过5秒钟OUT1输出高电平。
通过8255A口查询OUT1的输出电平,用C口PC0输出开关量控制继电器动作。
继电器开关量输入端输入“1”时,继电器常开触点闭合,电路接通,指示灯发亮,输入“0”时断开,指示灯熄灭。
2、利用8255的PA0口来施加控制信号给与门,用来控制扬声器的开关状态。
再利用设置不同的计数值,使8253产生不同频率的波形,使扬声器产生不同频率的音调,达到类似与音阶的高低音变换。
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.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 芯片进行计数和准时。
电子信息学院实验报告书课程名:《微机原理与接口技术》题目:8253定时器/计数器实验实验类别:【设计】班级:电子1312学号:17姓名:张泽虎评语:(1)电路连接调试:□正确□基本正确□不正确(2)实验程序编写:□正确□基本正确□不正确(3)数据测量分析:□准确□基本准确□不准确成绩:□A □B □C □D ,指导教师:批阅时间:2014年11月6日1、实验目的与要求实验目的:(1)学会8253芯片和微机接口的原理和方法;(2)掌握8253定时器/计数器的工作方式和编程原理。
实验要求:用8253的0通道工作在方式3,产生方波。
2、实验内容用定时器/计数器8253实现分频器电路。
3、实验仪器DJ-8086KB(微机原理与接口技术实验箱)、示波器、软件DJ8088K 4、实验接线图5、实验程序框图6、实验程序(实验程序清单作为附件放在最后)7、实验步骤⒈ 按图6-5连好实验线路 ⑴ 8253的GATE0接+5V 。
⑵ 8253的CLK0插孔接分频器74LS393(左下方)的T2插孔,分频 器的频率源为8.0MHZ ,T →8.0MHZ 。
⒉ 运行实验程序在系统提示符“P.”状态下,按SCAL 键,输入1290, 按EXEC 键。
用示波器测量8253的OUT0输出插孔有方波产生。
8、实验数据(画出波形图)9、思考题本题中,用8253的OUT0控制LED 发光二极管闪烁,闪烁频率为50Hz ,如何实现?答:<附件> 实验程序清单CODE SEGMENTASSUME CS:CODE ORG 1290HV u O /ms t /START:MOV AL,00110110B OUT 43H,ALMOV AX,2000OUT 40H,ALMOV AL,AHOUT 40H,AL CODE ENDSEND START。
同组同学学号:同组同学姓名:实验日期: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的连接方法。
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计数器/定时器的应用一、实验目的:学习掌握8253用作定时器的编程原理;二、8253应用小结I8253和I8254都是可编程计数器,它们的引脚兼容,功能与使用方法相同。
I8254是I8253的改进型。
1.微机系统定时器和实验箱定时器(1)微机系统使用的8254,其3个通道均有固定的用途:0号计数器为系统时钟源,每隔55ms向系统主8259IR0提一次中断请求;1号计数器用于动态存储器的定时刷新控制;2号计数器为系统的发声源。
用户在使用微机系统的时候,可以使用0号和2号计数器,但不能改变对1号计数器的初始化。
(2)实验箱上的8253,其数据线D7—D0,地址线A1、A0和控制线RD、WR通过总线驱动卡和微机系统的三总线相连。
除此之外,三个计数器的引出段和片选端都是悬空的,这意味着实验箱上的8253的三个计数器都归用户使用,你可以单独使用其中的一个计数器,也可以串联使用其中的2个或3个计数器。
(3)8253计数器的输入信号,其频率不能超过2MHz,否则长时间使用,芯片过热,容易烧毁。
2.8253初始化使用8253前,要进行初始化编程。
初始化编程的步骤是:①向控制寄存器端口写入控制字对使用的计数器规定其使用方式等。
②向使用的计数器端口写入计数初值。
3.8253控制字D7D6=00:使用0号计数器,D7D6=01:使用1号计数器D7D6=10:使用2号计数器,D7D6=11:无效D5D4=00:锁存当前计数值D5D4=01:只写低8位(高8位为0),读出时只读低8位D5D4=10:只写高8位(低8位为0),读出时只读高8位D5D4=11:先读/写低8位,后读/写高8位计数值D3D2D1=000:选择方式0,D3D2D1=001:选择方式1D3D2D1=X10:选择方式2,D3D2D1=X11:选择方式3D3D2D1=100:选择方式4,D3D2D1=101:选择方式5D0=0:计数初值为二进制,D0=1:计数初值为BCD码数三、实验电路蜂鸣器电路四、实验内容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的每个计数器必须在写入控制字和计数初值后才启动工作,一般的初始化编程分为两步:先写入控制字、再写入计数初值。
微机接口技术实验定时/计数器(8253)1. 实验原理TPC-USB平台上有一块8253定时/计数器芯片,除了片选引脚,其他信号都已接好。
有关结构和编程,请参考本章前几节内容。
2. 实验内容(1)计数器方式0实验将计数器0设置为方式0,计数器初值为N(N≤0FH),用手动开关逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0变高电平)。
步骤如下:1)按图2.1虚线连接电路。
图2.1 TPC-USB平台计数器方式0实验连线图2)根据流程图2.2,编程并运行,观察实验结果。
图2.2 TPC-USB平台计数器方式0实验流程图3)实验代码:CODE SEGMENTASSUME CS:CODESTART:MOV AL,10HMOV DX,283HOUT DX,ALMOV AL,0FHMOV DX,280HOUT DX,ALLL: MOV AL,00HMOV DX,283HOUT DX,ALMOV DX,280HIN AL,DXCMP AL,9JBE L1ADD AL,7L1:ADD AL,30HMOV DL,ALMOV AH,2INT 21HMOV DL,0DHMOV AH,02HINT 21HMOV DL,0AH MOV AH,02H INT 21HMOV AH,6MOV DL,0FFH INT 21H JZ LLMOV AH, 4CH INT 21H CODE ENDS END START(2)计数器方式3实验将计数器0、计数器1分别设置为方式3,计数初值设为1000,用逻辑笔观察OUT1输出电平的变化(频率1Hz)。
步骤如下:1)按图2.3连接电路。
U5 8253+5V+5V图2.3 TPC-USB 平台计数器方式3实验连线2)根据流程图2.4,编程并运行,观察实验结果。
图2.4 TPC-USB平台计数器方式3实验流程图3)实验代码:CODE SEGMENTASSUME CS:CODESTART:MOV AL,37HMOV DX,283HOUT DX,ALMOV AL,00HMOV DX,280HOUT DX,ALMOV AL,10HOUT DX,ALMOV AL,77HMOV DX,283HOUT DX,ALMOV AL,00HMOV DX,281HOUT DX,ALMOV AL,10HOUT DX,ALMOV AH,4CHINT 21HCODE ENDSEND START(3)计数器级联实验将计数器0设置为方式3(方波),计数器1设置为方式2(分频)。
接口技术实验指导书实验三8253定时器/计数器实验一、实验目的和内容1.掌握8253定时器/计数器芯片的工作原理2.完成8253定时器/计数器的编程实验二、实验电路及说明实验电路如图8所示地址为10H8253的三个计数器全部开放,J53上有OUT0、GATE0CLK0、OUT1、GATE1、CLK1、OUT2、GATE2、CLEK2。
它们可与任何I/O相连。
在我公司提供的实验箱上的D部分有各种频率时钟信号。
下面提供一例,供参考,学生可根据要求自行调换频率。
如图8所示三、实验器材奔腾微机一台、SXL-100(PCI)接口实验仪一套、示波器一台四、硬件实验步骤本实验在板上由J与D部分组成,有短路块结合跳线一种方式。
五、程序框图六.程序代码#include <stdio.h>#include <dos.h>#include “PCIcard.h”unsigned long int ic82530=0x20,ic82531=0x21,ic8253type=0x23; unsigned long int ic8255a=0x0,ic8255b=0x1,ic8255type=0x3;int buffer1[10]={0x0c0,0x0f9,0x0a4,0x0b0,0x99,0x92,0x82,0x0f8,0x80,0x98};int dis1[4]={0,0,0,0};void main(void){int err,rt1=0,count1=0,flagm=1,flag1=0;void plus1();void mydisp1();int mypckey();err=findPCIcard();if (err!=0){printf("The PCI card isn't found!!!\n");flagm=0;}err=getPCIbase0();iobase0=iobase0&0xfffc;//从PCI配置空间读入的与地址空间有关的数据其bit 0位为1,printf("IOBase0=%xH\n",iobase0);//表明此空间为IO空间参与PCI总线地址译码err=getPCIbase1();iobase1=iobase1&0xfffc;printf("IOBase1=%xH\n",iobase1);err=getPCImembase1();err=getPCImembase0();membase0=membase0+membase1<<16;//左移16位,将高位地址变换成双字中的高位字printf("MEMBase0=%lxH\n",membase0);err=getPCIIRQ();printf("PCI IRQ = %d\n",err);ic82530=ic82530+iobase1; //获取8253 T0 T1 控制寄存器的地址ic82531=ic82531+iobase1;ic8253type=ic8253type+iobase1;ic8255a=ic8255a+iobase1; //获取8255 A、B口和控制寄存器的地址ic8255b=ic8255b+iobase1;ic8255type=ic8255type+iobase1;printf("Press e to exit:\n"); //显示提示字符outportb(ic8255type,0x80); //初始化8255outportb(ic8255a,0x0ff);outportb(ic8255b,0x0ff);// 将8253的定时器0初始化为工作方式3,//采用二进制先读写低8位,在读写高8位,//写入时间常数,值为0X0FFF//写入时间常数//将8253的定时器1初始化为工作方式3,//采用二进制只读写低8位,写入时间常数,值为8//主循环{outportb(ic8253type,0x4F);rt1=inportb(ic82531);if (rt1==2) //判断是否计数到2{if (flag1==0) //判断是否计过2{flag1=1; //若是则置标志位count1=count1+1; //count1加1if (count1==2) //判断是否计过两次2{count1=0; //若是则清count1plus1(); //调加1子程序}}}elseflag1=0; //若rt1不为2,则清flag1 mydisp1(); //调显示子程序flagm=mypckey(); //调扫描键盘子程序}while (flagm==1);} // main() endint mypckey() //扫描键盘子程序{int pckey1();int flagk,judge;judge=pckey1();if (judge=='e')flagk=0;elseflagk=1;return (flagk);}int pckey1() //调用int 21H中断{union REGS regs;regs.h.ah=0x6;regs.h.dl=0x0ff;int86(0x21,®s,®s);return(regs.h.al);}void plus1() //加1子程序{int i;dis1[0]=dis1[0]+1;for (i=0;i<=2;i++){if (dis1[i]>=10){dis1[i]=dis1[i]-10;dis1[i+1]=dis1[i+1]+1;}}if (dis1[3]>=10)dis1[3]=0;return;}void mydisp1() //显示子程序{void delay1();int i,a1,a2=0x0fe;for (i=0;i<=3;i++){outportb(ic8255a,0x0ff);a1=buffer1[dis1[i]];outportb(ic8255a,a1);outportb(ic8255b,a2);a2=a2<<1;a2=a2|0x1;delay1();}return;}void delay1() //延时子程序{int i,j,a=0;for (i=1;i<=50;i++){for (j=1;j<=1000;j++){a=a+0;}}return;}六、思考题(1)、不更改硬件连接,程序只修改定时器的工作方式,但要完成同样功能,定时器还能初始化为哪几种工作方式?(2)、加长delay1()的延时时间对显示效果有什么影响?为什么?(3)、源程序中空白(6)解释这个函数的作用?在当前程序中有没有必要?为什么?什么情况有必要?(4)Gate0,Gate1为什么要接VCC?悬空会有什么情况发生?为什么?。
实验三 8253计数器/定时器的实验一、实验目的掌握8253定时器的编程原理及应用练习使用Proteus仿真软件二、实验内容利用Proteus仿真实现8253控制LED的闪烁,要求LED点亮0.5秒,熄灭0.5秒。
三、实验步骤1、画硬件连接图(1)启动Proteus,点击开始、程序、Proteus 7 professional、ISIS 7 professional(2)放置元件,点击,再点击,出现依次输入8086 74LS373 4LS138 NAND 8253A LED-RED PULLUP(3)按下图连接电路(4)放置标号,点击,依次放置总线标号,网络标号(如上图)(5)放置电源和终端,点击(6)修改元件属性,双击LED,出现如下对话框,将Model Type 改为Digital2M2、加载软件(1)启动emu8086 4.07,生成.com文件或. Exe文件(2)在emu8086 4.07,输入程序参考程序如下;PORT_0 equ 0e8hPORT_1 equ 0eahPORT_2 equ 0echPORT_CTR equ 0eehmov al, 00110101Bmov dx, PORT_CTRout dx, almov dx, PORT_0mov ax,00hout dx,almov dx, a8253mov ax,10hout dx,almov al, 01110110Bmov dx, PORT_CTRout dx, almov dx, PORT_1mov ax,0e8hout dx,almov ax,03hout dx,al(3)编译程序,点击,生成.com文件或. Exe文件(4)加载程序,双击仿真图中的8086CPU,出现如下对话框,点击加载软件,同时将各参数修改如下图3.仿真,点击,系统开始仿真。
四实验报告要求整理好运行正确的源程序,画出程序流程图,并列出源程序清单,写出实验的心得体会。
DATA SEGMENT_8NOTE EQU0FFFH;定义八分音符的延时时长(计数)_4NOTE=_8NOTE*2;四分音符_4DNOTE=_4NOTE+_8NOTE ;四分附点音符_2NOTE=_4NOTE*2;二分音符_2DNOTE=_2NOTE+_4NOTE ;二分附点音符_1NOTE=_2NOTE*2;全音符PAUS=04FFH;每个音之间的小间隔CLK EQU32000;时钟频率;B3~C5音所对应的计数初值,由时钟频率/音频率得到B3=CLK/247C4=CLK/262D4=CLK/294E4=CLK/330F4=CLK/349G4=CLK/392A4=CLK/440B4=CLK/494C5=CLK/523;低音XI到高音DO的数码管显示码XI_=63HDO=21HRE=0F4HMI=0F1HFA=39HSO=0D9HLA=0DDHXI=61HDO_P=23HEMPT=10H;休止符-;《送别》音高谱MUSIC DB G4,E4,G4,C5 ,A4,C5,G4 ,G4,C4,D4,E4,D4,C4,D4 ,1;1为无声,休止DB G4,E4,G4,C5 ,B4,A4,C5,G4 ,G4 ,D4,E4,F4,B3,C4 ,1COUNT EQU$-MUSIC;《送别》简谱(数字显示)MUSIC_DISP DB SO,MI,SO,DO_P ,LA,DO_P,SO ,SO,DO,RE,MI,RE,DO,RE ,EMPT DB SO,MI,SO,DO_P ,XI,LA,DO_P,SO ,SO,RE,MI,FA ,XI_,DO ,EMPT;《送别》音长谱MUSIC_T DW _4NOTE,_8NOTE,_8NOTE,_2NOTE,_4NOTE,_4NOTE,_2NOTE DW _4NOTE,_8NOTE,_8NOTE,_4NOTE,_8NOTE,_8NOTE,_2DNOTE,_4NOTEDW _4NOTE,_8NOTE,_8NOTE,_4DNOTE,_8NOTE,_4NOTE,_4NOTE,_2NOTEDW _4NOTE,_8NOTE,_8NOTE,_4DNOTE,_8NOTE,_1NOTE,_2NOTEDATA ENDSSTACK SEGMENT STACK 'STACK'DB200DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKDELAY PROC FAR;延时子程序,时长由DS:[BP]的数据(音长谱)决定PUSHFPUSH CXMOV CX,DS:[BP]LOOP1:PUSH CXMOV CX,_4NOTELOOP2:LOOP LOOP2POP CXLOOP LOOP1POP CXPOPFRETFDELAY ENDPDELAY0 PROC FAR;小间断延时子程序PUSHFPUSH CXMOV DX,0EE23H;重置8253,即停止发音MOV AL,00010110BOUT DX,ALMOV CX,PAUSLOOP3:PUSH CXMOV CX,PAUSLOOP4:LOOP LOOP4POP CXLOOP LOOP3POP CXPOPFRETFDELAY0 ENDPPLAY PROC FAR;播放单音子程序MOV DX,0EE20HMOV AL,DS:[SI];输出DS:[SI](音高谱)作为计数初值OUT DX,ALMOV DX,0EE00HMOV AL,DS:[SI+COUNT];输出对应的数字码,在数码管1位上显示OUT DX,ALRETFPLAY ENDPSTART:MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXXOR AX,AXMOV DX,0EE23H;初始化8253MOV AL,00010110B;方式3,二进制计数,分频比小于255OUT DX,ALMOV DX,0EE03H;初始化8255,A,B口均为方式0输出MOV AL,80HOUT DX,ALMOV DX,0EE01H;数码管位选,固定为只有最右边的数码管显示MOV AL,01HOUT DX,ALMOV DX,0EE00H;显示清空MOV AL,00HOUT DX,ALMUS:;Music Start!MOV SI,OFFSET MUSIC ;SI指向音高数据MOV BP,OFFSET MUSIC_T ;BP指向音长数据MOV CX,COUNTRUN:CALL PLAY ;输出计数值播放单音,显示对应的数字CALL DELAY ;延时相应的时长CALL DELAY0 ;小间隔INC SI;SI、BP指向下一个音符ADD BP,2MOV AH,0BH;检测键盘输入INT21HOR AL,AL;按任意键退出JNZ EXITLOOP RUN ;否则继续循环播放JMP MUSEXIT:MOV DX,0EE23H;重置8253MOV AL,00010110BOUT DX,ALMOV AH,4CH;退出INT21HCODE ENDSEND START。
四、实验步骤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。