实验报告五 定时器计数器实验

合集下载

定时器、计数器操作与应用实验报告

定时器、计数器操作与应用实验报告

实验三定时器、计数器操作与应用实验报告、实验目的1、 了解和熟悉FX 系列可编程序控制器的结构和外 部接线方法;2、 了解 和熟 悉 GX Developer Version 7.0 软件的 使用 方法 ;3、 掌握 可编 程序 控制器 梯形 图程 序的 编制 与调 试。

二、实验要求仔 细阅 读实 验指 导书 中关 于编 程软 件的 说明 ,复习 教材 中有 关内 容 , 分 析程 序运 行结 果。

三、实验设备2 、 开关 量输 入 / 输出 实验 箱 3、 计算 机 4、 编程 电缆注 意:1) 开关量输入/输出实验 箱内的钮子开关用来产生模拟的 开关量输入 信 号; 2) 开关量输入/输出实验箱内的LED 用来指示开关 量输出信号; 3) 编程电缆在连接PLC 与计算机时请注意方向。

四、实验内容1 、梯形图1 、 FX 系列可 编程 序控 制器一只一套5、 GX Developer Version 7.0软件一套2、梯形图程序0LD xooo1OUT YOOOX0012LD3OR¥0014AN I X0025OUT Y0016OUT TO K509MPS10AHI TO11OUT Y00212MPP13ASD TO14OUT¥00315LD X00316RST CO18LD X00419OUT CO K522LD CO23OUT Y00424END3、时序图r 时序10 □ ©Si正在进荷囲1SL 金冃勖厂手祜r XI广X3厂X5厂K1Q拧应C40 J2fl MIB -380 .360 '340 -33 MW 脚 M 创Q,220,200,13Q -1«-14D ,1如■!» 如也 40 如厂「五、实验步骤1、程序的编辑、检查和修改;2、程序的变换;3、程序的离线虚拟设备仿真测试;4、程序写入PLC;5、用PLC运行程序;6、比较程序的分析结果与实际运行结果。

计数器实验报告

计数器实验报告

计数器实验报告引言:计数器是数字电路中的重要组件,用于计数、计时和测量等应用。

它可以在各种电子设备中起到决策、控制和计算等作用。

本次实验旨在探究计数器的工作原理并验证其功能。

一、实验目的:本次实验旨在研究计数器的工作原理,了解计数器的结构和使用方法,以及探究不同类型计数器的特点和应用。

二、实验器材和原理:1. 实验器材:- 7400系列逻辑门芯片(74LS00、74LS02等)- 74LS163 4位二进制同步计数器芯片- 连线板及连接线- 示波器- 电源2. 实验原理:计数器是由触发器和逻辑门组成的电路,根据输入脉冲的时序和频率来实现计数功能。

常见的计数器有同步计数器和异步计数器。

同步计数器:所有触发器在同一脉冲上同时工作,具有高速、同步性好等特点。

4位同步二进制计数器(74LS163)是本次实验主要研究的对象。

三、实验步骤和结果:1. 连接电路:将四个J-K触发器连接成同步二进制计数器电路。

采用74LS163芯片,选用外部时钟输入。

根据芯片引脚连接示意图连接芯片和示波器。

2. 设置电路状态:给予计数器电路适当的输入电平,根据实验的需求和目的,调整电路状态,例如设置计数范围、初始值等。

3. 测量输出波形:利用示波器观察和记录计数器的输出波形。

分析波形特点,如波形幅值、周期、高低电平时间等。

实验结果表明,计数器能够按照预期的次序进行计数,并在达到最大值后回到初始值重新计数。

输出波形清晰、稳定,符合设计要求。

四、实验讨论:1. 计数器的应用:计数器广泛应用于各种计数、计时和测量场合,例如时钟、频率计、定时器、计数器、计数调制解调器等。

计数器还可用于控制和决策等功能,比如在数字电子秤中用于计算重量。

2. 计数器的类型:除了同步计数器,异步计数器也是常见的计数器类型。

异步计数器与同步计数器相比,其工作原理和时序不同,有着不同的特点和优劣势。

3. 计数器的扩展:计数器可以通过级联扩展实现更大位数的计数。

实验报告五定时器计数器实验

实验报告五定时器计数器实验

实验报告五定时器计数器实验信息工程学院实验报告课程名称:微机原理与接口技术Array实验项目名称:定时器/计数器实验实验时间:班级:姓名:学号:一、实验目的1. 掌握8254 的工作方式及应用编程。

2. 掌握8254 典型应用电路的接法。

二、实验设备PC 机一台、TD-PITD+实验系统一套。

三、实验原理8254 是Intel 公司生产的可编程间隔定时器。

是8253 的改进型,比8253 具有更优良的性能。

8254 具有以下基本功能:(1)有 3 个独立的16 位计数器。

(2)每个计数器可按二进制或十进制(BCD)计数。

(3)每个计数器可编程工作于 6 种不同工作方式。

(4)8254 每个计数器允许的最高计数频率为10MHz(8253 为2MHz)。

(5)8254 有读回命令(8253 没有),除了可以读出当前计数单元的内容外,还可以读出状态寄存器的内容。

(6)计数脉冲可以是有规律的时钟信号,也可以是随机信号。

计数初值公式为:n=f CLKi ÷f OUTi、其中f CLKi 是输入时钟脉冲的频率,f OUTi 是输出波形的频率。

图5-1 是8254 的内部结构框图和引脚图,它是由与CPU 的接口、内部控制电路和三个计数器组成。

8254 的工作方式如下述:(1)方式0:计数到0 结束输出正跃变信号方式。

(2)方式1:硬件可重触发单稳方式。

(3)方式2:频率发生器方式。

(4)方式3:方波发生器。

(5)方式4:软件触发选通方式。

(6)方式5:硬件触发选通方式。

图5-1 8254 的内部接口和引脚8254 的控制字有两个:一个用来设置计数器的工作方式,称为方式控制字;另一个用来设置读回命令,称为读回控制字。

这两个控制字共用一个地址,由标识位来区分。

控制字格式如表5-1~5-3 所示。

表5-1 8254 的方式控制字格式表5-2 8254 读出控制字格式表5-3 8254 状态字格式8254 实验单元电路图如下图所示:图5-2 8254 实验电路原理图四、实验内容与步骤1. 计数应用实验编写程序,将8254 的计数器0 设置为方式3,计数值为十进制数4,用单次脉冲KK1+作为CLK0 时钟,OUT0 连接INTR1,每当KK1+按动5 次后产生中断请求,在屏幕上显示字符“5”。

定时器计数器实验报告

定时器计数器实验报告

定时器计数器实验报告简介:定时器是一种用来产生、计数和处理时间信号的计时装置。

在数字电路中,定时器主要分为内部定时器和外部定时器两类,内部定时器是在单片机内部实现的,外部定时器则是通过外部电路实现的。

计数器则是一种用来计数的电子元件,根据不同的使用场合和要求,计数器可以分为多种类型。

在嵌入式系统中,定时器计数器应用广泛,例如在时钟、延时、计数等方面都有很大的作用。

实验目的:1. 学习定时器和计数器的基本原理及应用。

2. 熟悉定时器和计数器在单片机中的编程方法。

3. 掌握通过定时器和计数器实现延时和计数功能的方法。

实验器材:1. STM32F103C8T6开发板2. ST-LINK V2下载器3. 电脑实验内容:一、实验1:使用定时器和计数器实现延时功能1. 在Keil C中新建一个工程,并编写以下程序代码:```#include "stm32f10x.h"void TIM2_Int_Init(u16 arr,u16 psc){TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;NVIC_InitTypeDef NVIC_InitStructure ;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);TIM_TimeBaseStructure.TIM_Period = arr;TIM_TimeBaseStructure.TIM_Prescaler=psc;TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode _Up;TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE );NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure);TIM_Cmd(TIM2, ENABLE);}void TIM2_IRQHandler(void){if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) {TIM_ClearFlag(TIM2, TIM_FLAG_Update);GPIO_WriteBit(GPIOB,GPIO_Pin_12,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_12)));}}int main(void){GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB,&GPIO_InitStructure);TIM2_Int_Init(9999,7199);while (1);}```2. 将STM32开发板连接到电脑,并下载程序到开发板中。

定时器的实验报告

定时器的实验报告

一、实验目的1. 理解定时器的基本原理和工作方式。

2. 掌握定时器的配置和使用方法。

3. 通过编程实现定时器的定时功能。

4. 学习定时器中断的应用。

二、实验环境1. 实验设备:单片机实验板、电源、连接线等。

2. 实验软件:Keil uVision 4、IAR EWARM等C语言开发环境。

三、实验原理定时器是一种用于实现时间延迟的硬件模块,它能够在预定的时间内产生中断或完成特定的操作。

定时器通常由计数器、控制寄存器、时钟源等组成。

定时器的工作原理是利用时钟源产生的时钟信号对计数器进行计数,当计数器达到预设值时,触发中断或完成特定操作。

四、实验内容1. 定时器基本配置(1)设置定时器模式:根据实验需求,选择定时器的工作模式(如模式0、模式1等)。

(2)设置定时器时钟源:选择定时器时钟源(如系统时钟、外部时钟等)。

(3)设置定时器计数初值:根据实验需求,设置定时器计数初值。

2. 定时器定时功能实现(1)编写程序初始化定时器:配置定时器模式、时钟源、计数初值等。

(2)编写定时器中断服务程序:在中断服务程序中实现定时功能,如控制LED闪烁、读取传感器数据等。

3. 定时器中断应用(1)配置定时器中断:设置定时器中断优先级、中断使能等。

(2)编写定时器中断服务程序:在中断服务程序中实现所需功能,如采集数据、发送数据等。

五、实验步骤1. 编写程序初始化定时器:设置定时器模式、时钟源、计数初值等。

2. 编写定时器中断服务程序:实现定时功能,如控制LED闪烁。

3. 编写定时器中断配置程序:设置定时器中断优先级、中断使能等。

4. 编译、下载程序:将编写好的程序编译生成HEX文件,通过编程器下载到实验板上。

5. 运行实验:观察实验现象,如LED闪烁频率、数据采集等。

六、实验结果与分析1. 定时器定时功能实现实验结果显示,定时器能够按照设定的定时时间产生中断,中断服务程序能够正确执行。

例如,LED闪烁频率与定时时间一致。

单片机定时器-计数器实验总结

单片机定时器-计数器实验总结

单片机定时器-计数器实验总结单片机定时器/计数器实验总结篇一:单片机实验之定时器计数器应用实验一一、实验目的1、掌握定时器/计数器定时功能的使用方法。

2、掌握定时器/计数器的中断、查询使用方法。

3、掌握Prteus软件与Keil软件的使用方法。

4、掌握单片机系统的硬件和软件设计方法。

二、设计要求1、用Prteus软件画出电路原理图,单片机的定时器/计数器以查询方式工作,在P1.0口线上产生周期为200μS的连续方波,在P1.0口线上接示波器观察波形。

2、用Prteus软件画出电路原理图,单片机的定时器/计数器以中断方式工作,在P1.1口线上产生周期为240μS的连续方波,在P1.1口线上接示波器观察波形。

三、电路原理图六、实验总结通过这次实验,对定时器/计数器的查询工作方式有了比较深刻的理解,并能熟练运用。

掌握定时器/计数器的中断、查询使用方法。

对于思考题能够运用三种不同思路进行编程。

七、思考题1、在P1.0口线上产生周期为500微秒,占空比为2:5的连续矩形波。

答:程序见程序清单。

四、实验程序流程框图和程序清单1、以查询方式工作,在P1.0 RG 0000H START: LJMP MAIN RG 0100H MAIN: MV IE, #00H MV TMD, #02H MV TH0, #9CH MV TL0, #9CH SETB TR0 LP: JNB TF0, LP CLR TF0 CPL P1.0 AJMP LP END2、以中断方式工作,在P1.1 RG 0000H START: LJMP MAIN RG 000BH LJMP TTC0 RG 0100H MAIN: MV TMD, #02H MV TH0, #88H MV TL0, #88H SETB EA SETB ET0 SETB TR0 HERE: LJMP HERE RG 0200H TTC0: CPL P1.1 RETI END3、在P1.0口线上产生周期为500微秒,占空比为2:5的连续矩形波 RG 0000H START: LJMP MAIN RG 0100H MAIN: MV IE, #00H MV TMD, #20H MV TH1, #38H MV TL1, #38H MV TH0, #0F6H MV TL0, #14H LP1: SETB TR1 LP2: JNB TF1, LP2 CLR TF1 CLR TR1 CPL P1.0 SETB TR0 LP3: JNB TF0, LP3 MV TH0, #0F6H MV TL0, #14H CLR TF0 CLR TR0 CPL P1.0 LJMP LP1 END RG 0000H START: LJMP MAIN RG 0100H MAIN: MV IE, #00H MV TMD, #20H MV TH1, #38H MV TL1, #38H MV TH0, #0F0H MV TL0, #0CH SETB TR0 LP1: SETB TR1 LP2: JNB TF1, LP2 CLR TF1 CLR TR1 CPL P1.0 SETB TR0 LP3: JNB TF0, LP3 CLR TF0 MV TH0, #0F0H MV TL0, #0CH CPL P1.0 LJMP LP1 END RG 0000H START: LJMP MAIN RG 0100H MAIN: MV IE, #00H MV TMD, #00H LP1: MV TH1, #0F9H MV TL1, #18H SETB TR1 LP2: JNB TF1, LP2 CLR TF1 CPL P1.0 MV TH1, #0F6H MV TL1, #14H LP3: JNB TF1, LP3 CLR TF1 CPL P1.0 LJMP LP1 END五、实验结果(波形图)篇二:单片机实验-定时器计数器应用实验一定时器/计数器应用实验一一、实验目的和要求1、掌握定时器/计数器定时功能的使用方法。

51单片机定时器计数器汇编实验报告

51单片机定时器计数器汇编实验报告

批阅长沙理工大学实验报告年级光电班号姓名同组姓名实验日期月日指导教师签字:批阅老师签字:内容一、实验目的四、实验方法及步骤二、实验原理五、实验记录及数据处理三、实验仪器六、误差分析及问题讨论单片机定时器/计数器实验一、实验目的1、掌握51单片机定时器/计数器的基本结构。

2、掌握定时器/计数器的原理及编程方法。

二、实验仪器1、装有keil软件的电脑2、单片机开发板三、实验原理51单片机有2个16位的定时器/计数器,分别是T0和T1,他们有四种工作方式,现以方式1举例。

若定时器/计数器0工作在方式1,计数器由TH0全部8位和TL0全部8位构成。

方式1作计数器用时,计数范围是:1-65536(2^16);作定时器用时,时间计算公式是:T=(2^16-计数初值)×晶振周期×12。

四、实验内容1、计算计数初值单片机晶振频率为6MHz,使用定时器0产生周期为120000μs等宽方波连续脉冲,并由P1.0输出。

设待求计数初值为x,则:(2^16-x)×2×10^-6 = 120000×10^-6解得x=5536。

二进制表示为:00010101 10100000B。

十六进制为:高八位(15H),低八位(A0H)。

2、设置相关控制寄存器TMOD设置为xxxx0001B3、程序设计ORG 0000HAJMP MAINORG 30HMAIN: MOV P1,#0FFH ;关闭所有灯ANL TMOD,#0F0H ;置定时器0工作方式1ORL TMOD,#01H ;不影响T1的工作MOV TH0,#15H ;设置计数初始值MOV TL0,#0A0HSETB EA ;CPU开中断SETB ET0 ;定时器0开中断SETB TR0 ;定时器开始运行LOOP: JBC TF0,INTP ;如果TF0=1,则清TF0并转到INTPAJMP LOOP ;然跳转到LOOP处运行INTP: MOV TH0,#15H ;重新设置计数初值MOV TL0,#0A0HCPL P1.0 ;输出取反AJMP LOOPEND AJMP LOOPEND4、实验仿真新建工程项目文件中,并为工程选择目标器件为AT公司的AT89S51。

(完整word版)实验5定时器计数器实验报告

(完整word版)实验5定时器计数器实验报告

单片机实验五定时器/计数器设计实验报告一、实验内容1、采用12MHZ时钟频率的单片机,通过一个开关输入,触发定时计数.按下开关10次,计算按键的平均时间,并通过数码管显示出来。

二、实验目的1、了解定时器的各种工作方式。

2、掌握定时器/计数器的使用和编程方法。

三、实验设备win7系统下的proteus7.8和ceil4联调四、实验电路图五、程序代码#include<reg51。

h〉sbit P1_0=P1^0;unsigned char numcode[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88};unsigned char seqcode[4]={0x01,0x02,0x04,0x08};unsigned int num=0;void int1()interrupt 1{num++;TL0=0xb0;TH0=0x3c;}void DelayMS(unsigned int ms){unsigned char i;while(ms——)for(i=0;i<120;i++);}void main(){unsigned char i=0;unsigned char dspcode[4];unsigned long t;P3=numcode[i];ET0=1;EA=1;TH0=0x3c;TL0=0xb0;TMOD=0x01;while(1){if(P1_0==0){TR0=1;i++;P3=numcode[i];while(P1_0==0);TR0=0;if(i==10){t=((TH0〈〈8)+TL0)/1000;t=(t+50*num)/10;dspcode[0]=numcode[(t/1000)%10]^0x80;dspcode[1]=numcode[(t/100)%10];dspcode[2]=numcode[(t/10)%10];dspcode[3]=numcode[t%10];break;}}}while(1){for(i=0;i<4;i++){P2=seqcode[i];P0=dspcode[i];DelayMS(5);}}}六、实验结果七、实验小结通过实验,我了解了定时器的各种工作方式和定时器/计数器的使用和编程方法,为进一步学习打下基础.。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

信息工程学院实验报告课程名称:微机原理与接口技术Array实验项目名称:定时器/计数器实验实验时间:班级:姓名:学号:一、实验目的1. 掌握8254 的工作方式及应用编程。

2. 掌握8254 典型应用电路的接法。

二、实验设备PC 机一台、TD-PITD+实验系统一套。

三、实验原理8254 是Intel 公司生产的可编程间隔定时器。

是8253 的改进型,比8253 具有更优良的性能。

8254 具有以下基本功能:(1)有 3 个独立的16 位计数器。

(2)每个计数器可按二进制或十进制(BCD)计数。

(3)每个计数器可编程工作于 6 种不同工作方式。

(4)8254 每个计数器允许的最高计数频率为10MHz(8253 为2MHz)。

(5)8254 有读回命令(8253 没有),除了可以读出当前计数单元的内容外,还可以读出状态寄存器的内容。

(6)计数脉冲可以是有规律的时钟信号,也可以是随机信号。

计数初值公式为:n=f CLKi ÷f OUTi、其中f CLKi 是输入时钟脉冲的频率,f OUTi 是输出波形的频率。

图5-1 是8254 的内部结构框图和引脚图,它是由与CPU 的接口、内部控制电路和三个计数器组成。

8254 的工作方式如下述:(1)方式0:计数到0 结束输出正跃变信号方式。

(2)方式1:硬件可重触发单稳方式。

(3)方式2:频率发生器方式。

(4)方式3:方波发生器。

(5)方式4:软件触发选通方式。

(6)方式5:硬件触发选通方式。

图5-1 8254 的内部接口和引脚8254 的控制字有两个:一个用来设置计数器的工作方式,称为方式控制字;另一个用来设置读回命令,称为读回控制字。

这两个控制字共用一个地址,由标识位来区分。

控制字格式如表5-1~5-3 所示。

表5-1 8254 的方式控制字格式表5-2 8254 读出控制字格式表5-3 8254 状态字格式8254 实验单元电路图如下图所示:图5-2 8254 实验电路原理图四、实验内容与步骤1. 计数应用实验编写程序,将8254 的计数器0 设置为方式3,计数值为十进制数4,用单次脉冲KK1+作为CLK0 时钟,OUT0 连接INTR1,每当KK1+按动5 次后产生中断请求,在屏幕上显示字符“5”。

实验步骤:(1)实验接线如图5-3 所示。

图5-3 (a) 8254 计数应用实验接线图图5-3(b) 8259计数应用实验实物接线图(2)运行Tdpit 集成操作软件,进入编辑调试集成环境。

(3)根据程序设计使用语言不同,在“语言设置”菜单项中设置所使用的语言。

如图 5-4所示。

该项一经设置,会再下次启动后仍保持不变。

图5-4 设置语言环境(4)开始新建文件进行编程。

点击“文件”菜单项中的“新建”,可以新建一个空白文档。

默认名为Td-pit1。

如图5-5所示。

(5)编写程序,如图5-6 所示,并保存,此时软件会提示输入新的文件名,输入文件名后点击保存。

图5-6 8254计数应用实验程序编辑界面(6)点击,编译文件,若程序编译无误,然后再点击,连接程序。

编译连接成功会在输出信息栏显示输出信息,如图5-7 所示。

图5-7 编译连接输出信息(7)编译连接成功后可以点击,运行程序,按动KK1+产生单次脉冲,观察实验现象。

(8)可改变计数值,验证8254 的计数功能。

2. 计数应用实验编写程序,将8254 的计数器 2 设置为方式3,用信号源 1.8432MHz 作为CLK2 时钟,计数初值为100,相当对CLK2 进行100 分频。

在OUT2 输出频率为18.432KHz 的时钟。

将OUT2 连接到计数器0 的CLK0,设置计数器0 也工作在方式3,计数初值为18432,相当是进行18432 分频。

则在OUT0 得到1Hz 的输出。

实验步骤:(1) 接线图如图5-8 所示,按图接线。

图5-8(a) 8254 定时应用实验接线图图5-8(b) 8254定时应用实验实物接线图(2)运行Tdpit 集成操作软件,根据实验内容,编写实验程序,编译、链接。

图5-9 8254定时应用实验程序编辑界面图5-10编译连接输出信息(3) 单元中GATE0 已经连接了一个上拉电阻,所以GATE0 不用连接。

(4) 运行实验程序,OUT0输出接D0 观察LED灯的闪烁频率是否为1HZ。

(5) 用软件所带示波器进行观测,观测方法:点击快捷工具栏上“”按钮,启动示波器显示窗口,即可观察波形显示。

五、实验结果及分析:1. 计数应用实验(1) 编译连接成功后,使用运行命令运行程序,按动KK1+产生单次脉冲,查看结果。

图5-12 结果显示窗口分析:每当KK1+按动5 次后产生中断请求,则在屏幕上显示字符“5”。

(2)改变计数值,验证8254 的计数功能。

图5-13 改变计数值实验结果分析:将实验程序中的计数初值改为6,并将屏幕显示字符改为“7”。

实验结果为:每当KK1+按动7次后产生中断请求,则在屏幕上显示字符“7”。

2. 定时应用实验(1) 运行实验程序,用软件所带示波器进行观测,观测方法:点击快捷工具栏上“”按钮,启动示波器显示窗口,即可观察波形显示。

示波器显示界面如图5-11所示。

图5-11 示波器显示界面分析:直接将OUT0 输出接D0,则观察到LED灯每秒亮一次,即输出是1HZ的脉冲。

也可用软件所带示波器进行观测,观测的波形如图5-11所示。

六、实验总结:通过本实验,我了解了8254 的工作方式及应用编程,以掌握了8254 典型应用电路的接法。

通过本次实验加深了对理论编程的知识的理解,巩固了我的理论知识。

附录:;T8254-1.asm;查看端口资源分配情况,记录实验系统I/O端口始地址INTR_IV ADD EQU 003CH ;INTR对应的中断矢量地址IOY0 EQU 0D000H ;片选IOY0对应的端口始地址MY8254_COUNT0 EQU IOY0+00H*4 ;8254计数器0端口地址MY8254_COUNT1 EQU IOY0+01H*4 ;8254计数器1端口地址MY8254_COUNT2 EQU IOY0+02H*4 ;8254计数器2端口地址MY8254_MODE EQU IOY0+03H*4 ;8254控制寄存器端口地址STACK1 SEGMENT STACKDW 256 DUP(?)STACK1 ENDSDA TA SEGMENTCS_BAK DW ? ;保存INTR原中断处理程序入口段地址的变量IP_BAK DW ? ;保存INTR原中断处理程序入口偏移地址的变量IM_BAK DB ? ;保存INTR原中断屏蔽字的变量STR1 DB 'COUNT: $' ;显示的字符串DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXCLIMOV AX,0000H ;替换INTR的中断矢量MOV ES,AXMOV DI,INTR_IV ADDMOV AX,ES:[DI]MOV IP_BAK,AX ;保存INTR原中断处理程序入口偏移地址MOV AX,OFFSET MYISRMOV ES:[DI],AX ;设置当前中断处理程序入口偏移地址ADD DI,2MOV AX,ES:[DI]MOV CS_BAK,AX ;保存INTR原中断处理程序入口段地址MOV AX,SEG MYISRMOV ES:[DI],AX ;设置当前中断处理程序入口段地址IN AL,21HMOV IM_BAK,AL ;保存INTR原中断屏蔽字AND AL,7FHOUT 21H,ALSTIMOV DX,OFFSET STR1 ;显示字符串MOV AH,9INT 21HMOV DX,MY8254_MODE ;初始化8254工作方式MOV AL,10H ;计数器0,方式0OUT DX,ALMOV DX,MY8254_COUNT0 ;装入计数初值MOV AL,4OUT DX,ALWAIT1: MOV AH,1 ;判断是否有按键按下INT 16HJZ W AIT1 ;无按键则跳回继续等待,有则退出QUIT: CLIMOV AX,0000H ;恢复INTR原中断矢量MOV ES,AXMOV DI,INTR_IV ADDMOV AX,IP_BAK ;恢复INTR原中断处理程序入口偏移地址MOV ES:[DI],AXADD DI,2MOV AX,CS_BAK ;恢复INTR原中断处理程序入口段地址MOV ES:[DI],AXMOV AL,IM_BAK ;恢复INTR原中断屏蔽寄存器的屏蔽字OUT 21H,ALSTIMOV AX,4C00H ;返回到DOSINT 21HMYISR PROC NEAR ;中断处理程序MYISRPUSH AXMOV AL,35HMOV AH,0EHINT 10HMOV AL,20HINT 10HMOV DX,MY8254_COUNT0 ;重装计数初值MOV AL,4OUT DX,ALOVER: MOV AL,20H ;向PC机内部8259发送中断结束命令OUT 20H,ALPOP AXIRETMYISR ENDPCODE ENDSEND START;--------------------------------------------------------------------------------------------------------------------- ;T8254-2.asm;查看端口资源分配情况,记录实验系统I/O端口始地址IOY0 EQU 0D000H ;片选IOY0对应的端口始地址MY8254_COUNT0 EQU IOY0+00H*4 ;8254计数器0端口地址MY8254_COUNT1 EQU IOY0+01H*4 ;8254计数器1端口地址MY8254_COUNT2 EQU IOY0+02H*4 ;8254计数器2端口地址MY8254_MODE EQU IOY0+03H*4 ;8254控制寄存器端口地址STACK1 SEGMENT STACKDW 256 DUP(?)STACK1 ENDSCODE SEGMENTASSUME CS:CODESTART: MOV DX,MY8254_MODE ;初始化8254工作方式MOV AL,0B6H ;计数器2,方式3OUT DX,ALMOV DX,MY8254_COUNT2 ;装入计数初值MOV AL,64H ;100分频OUT DX,ALMOV AL,00HOUT DX,ALMOV DX,MY8254_MODE ;初始化8254工作方式MOV AL,36H ;计数器0,方式3OUT DX,ALMOV DX,MY8254_COUNT0 ;装入计数初值MOV AL,00H ;18432分频OUT DX,ALMOV AL,48HOUT DX,ALQUIT: MOV AX,4C00H ;结束程序退出INT 21HCODE ENDSEND START。

相关文档
最新文档