实验4 定时器实验

合集下载

数字信号处理EXPIV型教学实验系统实验四常规实验exp4_常规

数字信号处理EXPIV型教学实验系统实验四常规实验exp4_常规

第四章常规实验指导实验一常用指令实验一、实验目的1、了解DSP开发系统的组成和结构;2、熟悉DSP开发系统的连接;3、熟悉CCS的开发界面;4、熟悉C54X系列的寻址系统;5、熟悉常用C54X系列指令的用法。

二、实验设备计算机,CCS 2.0版软件,DSP仿真器,实验箱。

三、实验步骤与内容1、系统连接进行DSP实验之前,先必须连接好仿真器、实验箱及计算机,连接方法如下所示:2、上电复位在硬件安装完成后,确认安装正确、各实验部件及电源连接正常后,接通仿真器电源,启动计算机,此时,仿真器上的“红色小灯”应点亮,否则DSP开发系统有问题。

3、运行CCS程序待计算机启动成功后,实验箱后面220V输入电源开关置“ON”,实验箱上电,启动CCS,此时仿真器上的“绿色小灯”应点亮,并且CCS正常启动,表明系统连接正常;否则仿真器的连接、JTAG接口或CCS相关设置存在问题,掉电,检查仿真器的连接、JTAG 接口连接,或检查CCS相关设置是否正确。

注:如在此出现问题,可能是系统没有正常复位或连接错误,应重新检查系统硬件并复位;也可能是软件安装或设置有问题,应尝试调整软件系统设置,具体仿真器和仿真软件CCS的应用方法参见第三章。

●成功运行程序后,首先应熟悉CCS的用户界面●学会CCS环境下程序编写、调试、编译、装载,学习如何使用观察窗口等。

4、修改样例程序,尝试DSP其他的指令。

注:实验系统连接及CCS相关设置是以后所有实验的基础,在以下实验中这部分内容将不再复述。

5、填写实验报告。

6、样例程序实验操作说明仿真口选择开关K9拨到右侧,即仿真器选择连接右边的CPU:CPU2;启动CCS 2.0,在Project Open菜单打开exp01_cpu2目录下面的工程文件“exp01.pjt”注意:实验程序所在的目录不能包含中文,目录不能过深,如果想重新编译程序,去掉所有文件的只读属性。

用下拉菜单中Project/Open,打开“exp01.pjt”,双击“Source”,可查看源程序在File Load Program菜单下加载exp01_cpu2\debug目录下的exp01.out文件:加载完毕,单击“Run”运行程序;实验结果:可见指示灯D1定频率闪烁;单击“Halt”暂停程序运行,则指示灯停止闪烁,如再单击“Run”,则指示灯D1又开始闪烁;注:指示灯D1在CPLD单元的右上方关闭所有窗口,本实验完毕。

定时器计数器实验

定时器计数器实验
三、实验任务
本实验所用DAIS系列MCS—51单片机仿真实验系统的设单片机的晶振为11.0592MZ。完成对接在P1、P3端口的发光二极管闪亮控制程序的设计和调试。具体要求:
1.选择定时器T0为工作方式1,定时溢出时间为50ms,使P1口的8个发光二极管循环闪亮。
2.选择定时器T0和T1为工作方式0,T0定时溢出时间为50ms,使P3.0口的发光二极管每隔0.1S交替闪亮。T1定时溢出时间为25ms,使P3.1口的发光二极管每隔0.05S交替闪亮。
3.将TO定时器设定为工作方式2,使P1.0口的1个发光二极管每隔50ms交替闪亮。
四、实验预习要求
1.根据硬件电路原理图,分析LED发光二极管点亮的条件,画出实际接线图。
2.阅读教材中有关定时/计数器的内容,熟悉定时/计数器的基本结构和工作过程;计算50ms定时/计数器时间常数;根据实验任务设计出相应的调试程序。
MOV A.P1 ; 将端口P1中值读入A中
RL A ; A中二进制数循环左移
MOV P1,A ; 控制P1端口小灯状态
AJMP LOOP ;转LOOP再循环等待50ms
END ; 结束
五、实验设备 ’
计算机(已安装MCS—51单片机仿真软件),MCS—51单片机仿真实验系统。
六、思考题
定时器工作于方式l、方式2时,其一次溢出的最大定时时间是多少(设单片机的晶振为11.0592MHz)?
七、实验报告要求
1.整理好实验任务1~3中经MCS—51单片机仿真实验系统正确运行的程序。
MOV TH0,#06H ; 赋250 s初值
MOV R0,#200 ;预置定时控制值(250 s×200=50ms)

杭电微机原理定时器计数器实验报告

杭电微机原理定时器计数器实验报告

微型计算机原理与接口技术实验报告班级:学号:姓名:指导老师:朱亚萍实验名称:定时器/ 计数器8259单级中断控制器实验实验六定时器/计数器一、实验目的1. 学会8253芯片和微机接口的原理和方法;2. 掌握8253定时器/计数器的工作方式和编程原理。

二、实验内容用8253的0通道工作在方式3,产生方波。

三、实验接线图图6-1四、编程指南1. 8253芯片介绍:8253是一种可编程定时/计数器,有三个十六位计数器,其计数频率范围为0-2MHz,用+5V单电源供电。

8253的功能用途:⑴延时中断⑵可编程频率发生器⑶事件计数器⑷二进制倍频器⑸实时时钟⑹数字单稳态输出⑺复杂的电机控制器2. 8253的六种工作方式:⑴方式0:计数结束中断⑵方式l:可编程频率发生⑶方式2:频率发生器⑷方式3:方波频率发生器⑸方式4:软件触发的选通信号⑹方式5:硬件触发的选通信号五、实验程序框图图6-2六、实验步骤1. 断电连接导线, 按图6-1连好实验线路:⑴8253的GATE0接+5V;⑵8253的CLK0插孔接分频器74LS393(左下方)的T2插孔,分频器的频率源为8.0MHZ,T→8.0MHZ。

2. 在PC机和实验系统联机状态下,新建实验程序,编辑完成后进行保存(保存后缀为.asm文件);3. 编译下载;4. 全速运行,运行程序。

七、实验程序CODE SEGMENTASSUME CS:CODETIME PROC FARSTART:MOV DX,43HMOV AL,37HOUT DX,ALMOV DX,40H;控制口地址;设置通道0,先读写低字节后读写高;字节,方式3,BCD计数;通道0口地址MOV AL,00HOUT DX,ALMOV AL,90HOUT DX,ALJMP $TIME ENDPCODE ENDSEND START;先读写低字节;后读写高字节;结束程序八、实验结果将OUT0接二极管,相应的发光二极管会以一定周期闪烁。

定时器实验的心得体会

定时器实验的心得体会

定时器实验的心得体会在学习电子技术的过程中,进行定时器实验是一项非常重要且有趣的实践活动。

通过这次实验,我不仅对定时器的工作原理有了更深入的理解,还提高了自己的动手能力和解决问题的能力。

实验开始前,我对定时器的概念仅仅停留在理论层面,知道它是一种能够按照设定的时间间隔产生定时信号的器件,但对于如何实际应用和调试却一无所知。

怀着既期待又紧张的心情,我走进了实验室。

实验所使用的器材包括电路板、定时器芯片、电阻、电容、示波器等。

看着这些陌生而又熟悉的器件,我心里暗暗给自己打气,一定要顺利完成实验。

首先,根据实验指导书,我开始连接电路。

这可不是一件简单的事情,每一根导线都要连接到正确的位置,否则整个电路就无法正常工作。

在连接的过程中,我小心翼翼,生怕出现差错。

然而,尽管我已经十分谨慎,还是出现了几次连接错误,导致电路短路或者无法工作。

每当遇到这种情况,我都会静下心来,仔细检查每一个连接点,找出问题所在并进行修正。

电路连接完成后,接下来就是对定时器进行参数设置。

通过调节电阻和电容的值,可以改变定时器的定时时间。

这需要我们对相关的计算公式有清晰的理解,并且能够根据实验要求准确计算出所需的电阻和电容值。

在这个过程中,我深刻体会到了理论知识与实际操作相结合的重要性。

如果只是死记硬背公式,而不懂得如何运用,那么在实验中就会遇到很多困难。

设置好参数后,我迫不及待地打开电源,想要看看定时器是否能够正常工作。

然而,结果却并不如我所愿,示波器上显示的波形并不是预期的定时信号。

这让我感到有些沮丧,但我并没有放弃。

我开始仔细检查电路连接和参数设置,一遍又一遍地核对,最终发现是一个电阻的阻值选错了。

更换了正确的电阻后,再次打开电源,示波器上终于显示出了完美的定时信号,那一刻,我心中充满了成就感。

在整个实验过程中,我遇到的最大困难就是对定时时间的精确控制。

由于电阻和电容的精度问题,实际的定时时间与理论计算值总是存在一定的偏差。

为了减小这种偏差,我尝试了多种不同的电阻和电容组合,并且不断地调整参数,经过多次尝试和改进,终于能够将定时时间控制在误差允许的范围内。

实验4 cpuTimer与PIE操作实验

实验4 cpuTimer与PIE操作实验

实验4 cpuTimer与PIE操作实验1.实验目的学会如何通过程序语言配置cpuTimer,以及通过PIE实现中断管理。

2.实验主要内容在CCS软件中,用C语言编写程序进行cpuTimer及PIE的配置工作,通过多个cpuTimer实现不同周期的定时器中断,并能通过程序关闭某一特定定时器而不影响其他定时器中断。

3.实验基本原理F2833x系列DSP包含3个CPU定时器,分别是CPU 定时器0、1、2。

定时器0、1可以被用户使用,定时器2保留给实时操作系统(DSP-BIOS)。

若未用到实时操作系统,用户也可以使用定时器2。

定时器工作原理:32位的计数器(TIMH:TIM)从周期寄存器(PRDH:PRD)中装载数据,每经过(TDDRH:TDDR+1)个SYSCLKOUT周期,(TIMH:TIM)减1,当计数器等于0时将产生一次中断请求信号。

4.实验过程和关键程序解读(1)打开cpuTimer实验的工程(2)直接运行,观察到LED3以比较奇特的规律在闪烁,变量检测框内可看到各cpuTimer的InterruptCount分别以1s,2s,3s的周期自加。

(3)阅读代码,可以看到主程序中初始化了3个cpuTimer中断周期分别为1s,2s,3s,计算如下:Cputimer2:f = 150M/(150*3M)=1/3Hz T=1/f=3sCputimer1:f = 150M/(150*2M)=1/2Hz T=1/f=2sCputimer0:f = 150M/(150*1M)=1Hz T=1/f=1s(4)分析初始化过程i.初始化PIEii.置IER和IFR为0,关闭清除所有CpuTimer中断其中IER为CPU中断使能寄存器,特定位可以控制特定中断的使能或关闭。

IFR为CPU中断标志寄存器,用来识别和清除挂起的中断标志位。

iii.初始化PIE中断向量表其中中断向量表为结构体,存有各个外部中断与内部中断的中断服务函数地址。

实验四 8253定时计数器应用

实验四 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)按图接线。

实验4 用气垫导轨测量速度和加速度

实验4 用气垫导轨测量速度和加速度

实验4 用气垫导轨测量速度和加速度
本实验采用悬挂式气垫导轨,结合光电编码器和计时器来测量目标物体的速度和加速度。

本实验旨在通过实验了解悬挂式气垫导轨的工作原理和使用方法,掌握用光电编码器和计时器来测量运动物体速度和加速度的方法,并了解在实际应用中如何使用气垫导轨来进行精确测量。

设备和器材:
1. 实验室专用悬挂式气垫导轨
2. 光电编码器及其驱动器
3. 计时器/定时器
4. 电源
5. PC机及软件
实验步骤:
1. 将气垫导轨架设在平整的桌子上,并接通电源。

2. 将光电编码器和计时器连接到PC机。

3. 将要测量的物体放在气垫导轨上,并按下启动按钮将其推动。

4. 实验开始后,计时器开始计时,光电编码器开始记录物体的运动轨迹。

5. 在物体运动时,将其运动轨迹的数据记录下来,包括物体在每个时间点的位置和运动速度。

6. 根据物体的运动轨迹数据,计算出其加速度。

实验结果:
在本实验中,通过使用气垫导轨、光电编码器和计时器等设备,测量了目标物体的速度和加速度,并获得了如下数据:
物体运动时间:50s
物体运动距离:100m
平均速度:2m/s
实验误差:
在本实验中,误差来源主要包括人为误差和仪器误差。

人为误差主要包括操作不当、手动记录数据时的偏差等,而仪器误差主要由于物体轨迹的实际测量值与光电编码器所记录的轨迹值之间的偏差导致。

为了最大限度地减小误差,我们在实验过程中应注意操作规范,尽可能减小仪器的误差。

结论:。

北京信息科技大学单片机原理与应用实验4实验报告

北京信息科技大学单片机原理与应用实验4实验报告

实验报告课程名称单片机原理与应用实验项目串行通信指导教师学院信息与通信工程 _ 专业电子信息工程班级/学号学生姓名实验日期成绩______________________一、实验目的1、掌握串行口编程控制方法;2、掌握串口调试和仿真器的烧写方法;3、综合应用定时器、串行接口及中断等。

二、实验内容1、编写一个程序, 利用单片机的串行口向PC机循环发送0x55。

三、编写一个程序, 每当串行口接收到PC机发送的0x55(ASCII码为字母U)时, 返回一个0x41(ASCII码为字母A)。

在PC机一端, 以接收窗口收到0x41为完成(可以循环此过程)。

四、PC机向单片机发送0—9(无需编程, 在DPFlash的串口调试软件下配置即可), 单片机在接收到数据后送数码管显示;同时, 单片机每隔0.5S向PC机发送a—z的ASCII码(0x61~0x7a, 每秒发2个), 在PC机的串口调试软件中显示结果。

五、实验步骤1、新建工程, 编写程序, 实现通过串行口向PC机发送0x55(可采用串口模式1, 波特率2400), 注意工程的环境变量设置, Target窗口下code和xdata memory设置为空, 无须加入startup.A51, Output窗口下选中CreateHex选项, 编译生成HEX文件。

2、阅读网上的实验指导书及下面的说明, 掌握DPFlash软件的使用, 掌握仿真器的两种工作方式使用。

仿真器拨到load方式, 打开DPFlash软件,文件菜单中选择装载, 加入编译生成的*.HEX文件, 点击编程按扭, 使用默认配置即可, 烧入仿真器的Flash中。

3、关闭电源, 将仿真器拨到run方式, 并将连接在仿真器上的PC串口通信电缆拔下, 然后与实验仪上的单片机串口相连。

开机复位后将自动运行单片机程序, 在PC机的DPflash软件中的串口调试器下观察结果。

编写程序实现单片机接收到PC机发来的0x55后回送0x41,在串口调试软件的处理字符串中发送0x55,可以选中下栏的自动发送单选框来实现每隔1S发送一次, 观察结果。

实验四 数码管显示控制

实验四 数码管显示控制

实验四数码管显示控制一、实验目的1、熟悉Keil uVision2软件的使用;2、掌握LED数码管显示接口技术;3、理解单片机定时器、中断技术。

二、实验设备及仪器Keil μVision2软件;单片机开发板;PC机一台三、实验原理及内容1、开发板上使用的LED 数码管是四位八段共阴数码管(将公共端COM接地GND),其内部结构原理图,如图4.1所示。

图4.1共阴四位八段LED数码管的原理图图4.1表明共阴四位八段数码管的“位选端”低电平有效,“段选端”高电平有效,即当数码管的位为低电平,且数码管的段为高电平时,相应的段才会被点亮。

实验开发板中LED数码管模块的电路原理图,如图4.2所示。

SP1a~hP0.4~P0.7SP2P0.0~P0.3图4.2 LED数码管模块电路原理图图中,当P1.0“段控制”有效时,P0.0~P0.7分别对应到数码管的a~h段。

当P1.1“位控制”有效时,P0.0~P0.7分别对应到DIG1~DIG8。

训练内容一:轮流点亮数码管来检测数码管是否正常。

参考程序:ORG 00HAJMP MAINMAIN:SETB P1.2;LED流水灯模块锁存器的控制位MOV P0,#0FFH;关闭LED灯CLR P1.2SETB P1.3 ;点阵模块的行控制锁存器MOV P0,#0 ;关闭点阵行CLR P1.3MOV A,#11111110B;数码管“位选信号”初值,低电平有效LOOP:SETB P1.1;数码管位控制锁存器有效MOV P0,ACLR P1.1RL A ;形成新的“位选信号”,为选择下一位数码管做准备SETB P1.0;数码管段控制锁存器有效MOV P0,#0FFH ;数码管的所有段点亮,显示“8”CLR P1.0CALL DELAYSJMP LOOPDELAY:MOV R5,#0;延时子程序D1: MOV R6,#0D2:NOPDJNZ R6,D2DJNZ R5,D1RETEND训练内容二:静态显示,0~9计数。

51单片机定时器实验内容

51单片机定时器实验内容

51单片机定时器实验内容
51单片机定时器实验的内容可以根据不同的需求和目的进行调整,以下是
一些可能的实验内容:
1. 定时器初始化实验:实验目标是了解如何初始化51单片机的定时器,包括设置定时器的工作模式、计数值、初始值等。

实验中可以编写代码,让定时器在初始化后自动开始计时,并在达到指定时间后产生中断或输出信号。

2. 定时器中断实验:实验目标是了解如何使用51单片机的定时器中断功能,实现定时器在达到指定时间后自动触发中断,并在中断服务程序中执行特定的操作。

实验中可以编写代码,让定时器在达到指定时间后自动进入中断服务程序,并在其中执行特定的操作,如点亮LED灯等。

3. 定时器PWM输出实验:实验目标是了解如何使用51单片机的定时器PWM输出功能,实现定时器输出PWM波形。

实验中可以编写代码,让定时器输出不同占空比的PWM波形,并通过调整占空比来控制LED灯的亮
度等。

4. 定时器与外部事件同步实验:实验目标是了解如何使用51单片机的定时器与外部事件同步,实现定时器在外部事件发生时自动开始计时或停止计时。

实验中可以编写代码,让定时器在外部事件发生时自动开始计时或停止计时,并在达到指定时间后执行特定的操作。

以上是一些常见的51单片机定时器实验内容,通过这些实验可以深入了解51单片机的定时器工作原理和用法,并提高编程技能和硬件控制能力。

arms32410东莞理工1系统时钟 2 PWM定时器 3 WATCHDOG定时器 4.MPLL和定时器操作实验

arms32410东莞理工1系统时钟  2 PWM定时器  3 WATCHDOG定时器   4.MPLL和定时器操作实验

1系统时钟 2 PWM定时器 3 WATCHDOG定时器 4.MPLL和定时器操作实验► S3C2440的时钟源一般来说,微控器MCU的主时钟源主要是外部晶振或外部时钟,而用的最多的是外部晶振。

在正确情况下,系统内所使用的时钟都是外部时钟源经过一定的处理得到的。

由于外部时钟源的频率一般不能满足系统所需要的高频条件,所以往往需要PLL(锁相环)进行倍频处理。

在s3c2440中,有2个不同的PLL,一个是MPLL,另一个是UPLL。

UPLL是给USB提供48MHz。

在这里,我们主要介绍MPLL。

外部时钟源经过MPLL处理后能够得到三个不同的系统时钟:FCLK、HCLK和PCLK。

♥FCLK是主频时钟,用于ARM920T内核;♥HCLK用于AHB总线设备,如ARM920T,内存控制,中断控制,LCD控制,DMA以及USB 主模块;♥PCLK用于APB总线设备,如外围设备的看门狗,IIS,I2C,PWM,MMC接口,ADC,UART,GPIO,RTC以及SPI。

开发板上电时,FCLK等于外部输入的时钟(即振晶频率),若要提高系统时钟,需要软件来启动PLL,而PLL包括UPLL和MPLL,UPLL专用于USB设备,MPLL用于设置FCLK、HCLK 和PCLK如何通过控制MPLL来设置FCLK、HCLK和PCLK呢?主要设置好3个主要寄存器的值就能搞定,他们分别是:LOCKTIME寄存器、MPLLCON寄存器、CLKDIVN寄存器和CAMDIVN 寄存器(1)LOCKTIME寄存器:用于设置MPLL启动后稳定前所需等待的时间(Lock time),一般使用默认值就行。

(2)MPLLCON寄存器:用于设置FCLK与Fin的倍数位[19:12]的值称为MDIV,位[9:4]的值称为PDIV,位[1:0]的值称为SDIVMPLL(FCLK)=(m*Fin)/(p*2^s)其中:m=MDIV+8,p=PDIV+2,s=SDIV,Fin 即默认输入的时钟频率12MHz(外部输入的时钟)(3)CLKDIVN寄存器、CAMDIVN寄存器:用于设置FCLK、HCLK和PCLK三者的比例HDIVN=CLKDIVN[2:1]PDIVN=CLKDIVN[0]HCLK4_HALF=CAMDIVN[9]HCLK3_HALF=CAMDIVN[8]最后,我们用最清晰的线路来绘制一下时钟的产生过程:外部时钟源→通过寄存器MPLLCON得到FCLK→再通过寄存器CLKDIVN得到HCLK和PCLK。

通用定时器-PWM实验

通用定时器-PWM实验

通用定时器-PWM实验二、预备知识通用定时器分为四个部分:1、选择时钟2、时基电路3、输入捕获4、输出比较定时器PWM输出主要涉及到定时器框图右下方部分,即输出比较部分时基时钟来源于内部默认时钟。

脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。

PWM工作过程:每个定时器有四个通道,每一个通道都有一个捕获比较寄存器,将寄存器值和计数器值比较,通过比较结果输出高低电平,实现PWM信号。

PWM输出库函数1、定时器通道初始化-TIM_OC1Init使用PWM需要配置,配置参数对应框图位置如下:1)TIMx_CCMR1寄存器的OC1M[2:0]位,设置输出模式控制器2)TIMx_CCER寄存器的CC1P位,设置输入/捕获通道1输出极性3)TIMx_CCER:CC1E位控制输出使能电路,信号由此输出到对应引脚初始化定时器输出比较通道:void TIM_OC1Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);TIM_OCInitTypeDef结构体:typedef struct{uint16_t TIM_OCMode; // PWM模式1或者模式2uint16_t TIM_OutputState; // 输出使能OR失能uint16_t TIM_OutputNState; // PWM输出不需要uint16_t TIM_Pulse; // 比较值,写CCRx,可以有次函数uint16_t TIM_OCPolarity; // 比较输出极性uint16_t TIM_OCNPolarity; // PWM输出不需要uint16_t TIM_OCIdleState; // PWM输出不需要uint16_t TIM_OCNIdleState; // PWM输出不需要} TIM_OCInitTypeDef;2、设置比较值函数-TIM_SetCompare1作用:外部改变TIM_Pulse值,即改变CCR的值void TIM_SetCompare1(TIM_TypeDef* TIMx, uint16_t Compare1);3、使能输出比较预装载-TIM_OC1PreloadConfig作用:TIM_CCMRx寄存器OCxPE位使能相应的预装在寄存器void TIM_OC1PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);4、使能自动重装载的预装载寄存器允许位-TIM_ARRPreloadConfig作用:操作TIMx_CR1寄存器ARPE位,使能自动重装载的预装载寄存器void TIM_ARRPreloadConfig(TIM_TypeDef* TIMx, FunctionalState NewState);5、修改通道极性作用:操作TIMx_CCER的CC1P位,修改通道极性void TIM_OC1NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity);三、实验步骤:PWM输出步骤:1)使能定时器3和相关IO时钟(LED-PB5)使能定时器3时钟:RCC_APB1PeriphClockCmd();使能GPIOB时钟:RCC_APB2PeriphClockCmd();2)初始化IO口为复用功能输出GPIO_Init();GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;3)PB5输出PWM(定时器3通道2),需要部分冲突映射RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//开启AFIO时钟设置GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE);//部分重映射4)初始化定时器(重装载值ARR,与分频系数PSC等)TIM_TimeBaseInit();//决定PWM周期5)初始化输出比较参数:TIM_OC2Init();//通道2输出比较初始化6)使能预装载寄存器TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);//定时器3 通道2 7)使能定时器TIM_Cmd();8)不断改变比较值CCRx,达到不同的占空比效果TIM_SetCompare2(); //通道2,改变比较值CCRxTIMER输出PWM实现步骤:1)设置RCC时钟;2)设置GPIO时钟;3)设置TIMx定时器的相关寄存器;4)设置TIMx定时器的PWM相关寄存器。

定时器计数器实验

定时器计数器实验

一、AT89C51实验目的:
1.有两个定时/计数器,本试验中,将T1作为定时器用,定时50ms,T0作为计数器用,被计数的外部输入脉冲信号从单片机的P3.4接入,最大计数值为0ffffh。

单片机将在每50ms内对脉冲计数并送数码管实时显示,并利用T1定时从P3.7口输出周期为200ms占空比50%的方波。

2.用PROTEUS设计、仿真基于AT89C51单片机的脉冲计数与定时。

3.学会使用VSM虚拟示波器和计数/定时器
二、PROTEUS电路设计
本设计的电路原理图如图所示,这个设计都在ISIS平台中进行。

1.从PROTEUS库中选取元器件
①at89c51.bus:单片机
②7SEG-BCD-GRN:七段带译码BCD绿色数码管,
③button:按键
2.虚拟测试仪器
①vsm虚拟计数/定时器
单击工具栏,再在对象选择器中选中COUNTER TIMER(计数/计时器),打开其属性编辑况,单击运行模式下的下拉菜单如图,可以选择计数、频率、计时模式。

当前设置为计数模式。

②vsm虚拟示波器
单击工具栏,再在对象选择器中选中OSCILLOSCOPE,将P3.7与C信道连接。

三、原程序设计、生成目标代码文件
1.流程图
主程序流程
2.程序代码设计
四、proteus仿真
五、思考题
修改程序实现1S内对脉冲计数并送四位数码管实时显示,最大计数值为0ffffh,将COUNTER TIMER 属性设为频率,利用工具栏中的激励源DCLOCK作为脉冲输入源与p3.4口相连。

实验4:定时与中断系统实验

实验4:定时与中断系统实验

实验四:定时与中断系统实验一、实训目的1.利用单片机的定时与中断方式,实现对信号灯的复杂控制。

2.通过定时器程序调试,学会定时器方式1的使用。

3.通过中断程序调试,熟悉中断的基本概念。

二、实验仪器、材料1.微型计算机(PⅣ以上)2.编程、汇编与模拟平台软件Keil uVision33.电子技术专业仿真软件protues运行平台4.单片机实训开发电路板三、实验内容和步骤1.定时器查询方式1)要求:信号灯循环显示,时间间隔为1秒。

2)方法:用定时器方式1编制1秒的延时程序,实现信号灯的控制。

系统采用12M晶振,采用定时器T1方式1定时50ms,用R3做50ms计数单元,其源程序可设计如下:ORG 0000HCONT:MOV R2,#07HMOV A,#0FEHNEXT:MOV P2,AACALL DELAYRL ADJNZ R2,NEXTMOV R2,#07HNEXT1:MOV P2,ARR AACALL DELAYDJNZ R2,NEXT1SJMP CONTDELAY:MOV R3,#14H ;置50ms计数循环初值MOV TMOD,#10H ;设定时器1为方式1MOV TH1,#3CH ;置定时器初值MOV TL1,#0B0HSETB TR1 ;启动T1LP1:JBC TF1,LP2 ;查询计数溢出SJMP LP1 ;未到50ms继续计数LP2:MOV TH1,#3CH ;重新置定时器初值MOV TL1,#0B0HDJNZ R3,LP1 ;未到1s继续循环RET ;返回主程序END2.定时器中断方式1)要求:信号灯循环显示,时间间隔为1秒。

2)方法:用定时器中断方式编制1秒的延时程序,实现信号灯的控制。

采用定时器T1中断定时50ms,用R3做50ms计数单元,在此基础上再用08H位作1s 计数溢出标志,主程序从0100H开始,中断服务程序名为CONT。

可设计源程序如下:ORG 0000H ;程序入口AJMP 0100H ;指向主程序ORG 001BH ;定时器T1中断入口AJMP CONT ;指向中断服务程序ORG 0100HMAIN:MOV TMOD,#10H ;置T1为工作方式1MOV TH1,#3CH ;置50ms定时初值MOV TL1,#0B0HSETB EA ;CPU开中断SETB ET1 ;定时器T1开中断SETB TR1 ;启动T1CLR 08H ;清1s计满标志位MOV R3,#14H ;置50ms循环初值DISP:MOV R2,#07HMOV A,#0FEHNEXT:MOV P2,AJNB 08H,$ ;查询1s时间到否CLR 08H ;清标志位RL ADJNZ R2,NEXTMOV R2,#07HNEXT1:MOV P2,AJNB 08H,$CLR 08HRR ADJNZ R2,NEXT1SJMP DISPCONT:MOV TH1,#3CH ;重置50ms定时初值MOV TL1,#0B0HDJNZ R3,EXIT ;判1s定时到否MOV R3,#14H ;重置50ms循环初值SETB 08H ;标志位置1EXIT:RETIEND四、实训总结与分析1.定时器查询方式和前面的实验相比,硬件电路一致,效果一样,但二者软件的编制方法不同。

实验四定时器计数器8253应用实验报告

实验四定时器计数器8253应用实验报告

南昌理工学院实验报告二O一二年月日课程名称:微机原理与接口技术实验名称:定时、计数器8253A应用班级:姓名:同组人:指导教师评定:签名:【一、实验名称】定时、计数器8253A应用【二、实验目的】学习8253A可编程定时、计数器与8088CPU的接口方法;了解8253A的工作方式;掌握8253A在各种方式下的编程方法。

【三、实验内容和原理】1、实验原理8253A的A0、A1接系统地址总线A0、A1,故8253A有四个端口地址。

8253A的片选地址为40H~4FH。

因此,本实验仪中的8253A四个端口地址为40H、41H、42H、43H,分别对应通道0、通道1、通道2和控制字。

采用8253A通道0,工作在方式3,输入时钟CLK0为1MHZ的方波,并要求用接在GATE0引脚上的导线是接地或甩空来观察GATE对计数器的控制作用,用示波器观察输出波形。

2、实验线路连接(1)8253A的GATE0接+5V。

(2)8253A的CLK0插孔接分频器74LS393的T4插孔,分频器的频率源为4MHZ。

【四、实验条件】微型计算机一台,工具箱,示波器【五、实验过程】运行实验程序:单机时,实验程序起始地址为F000:9180。

在系统显示监控提示符“P."时:输入F000按F1键输入9180按EXEC键。

将CLK0接T6,OUTO插孔连接一个发光的二极管。

附:实验参考程序:ORG 08C0H ;?L8253: MOV DPTR,#0C003HMOV A,#36HMOVX @DPTR,AMOV DPTR,#0C000HMOV A,#00HMOVX @DPTR,AMOV A,#10HMOVX @DPTR,ASJMP $END【六、实验结果】当CLK0接T6时,发现发光的二极管的亮度是在改变的。

当CLK0接T7时,发现发光的二极管的亮度的变化没有CLK0接T6时快。

当CLK0接T4时,肉眼无法发现发光的二极管灯的亮度有改变。

定时器及中断实验报告

定时器及中断实验报告

定时器及中断实验报告定时器及中断实验报告引言近年来,随着科技的不断发展,计算机技术在各个领域得到了广泛应用。

定时器和中断是计算机系统中非常重要的组成部分,能够帮助我们实现各种功能和任务。

本文将介绍定时器和中断的原理和应用,并结合实验结果进行分析和讨论。

一、定时器的原理和应用定时器是计算机系统中的一种硬件设备,用于计量时间间隔并触发相应的操作。

它通常由一个时钟源和一个计数器组成。

时钟源产生固定的脉冲信号,计数器根据时钟源的信号进行计数,当计数值达到设定的阈值时,定时器会触发一个中断信号,通知处理器执行相应的操作。

定时器在计算机系统中有广泛的应用。

例如,操作系统可以利用定时器来实现任务调度,确保各个任务按照一定的时间片轮转执行。

此外,定时器还可以用于测量时间间隔,计算程序运行时间,以及实现各种定时任务等。

二、中断的原理和应用中断是计算机系统中的一种机制,用于打破程序的顺序性,以响应外部事件或异常情况。

当发生中断事件时,处理器会立即中断当前的执行任务,保存当前的上下文信息,并跳转到中断处理程序来处理中断事件。

处理完成后,再返回到原来的执行任务。

中断可以分为硬件中断和软件中断。

硬件中断由硬件设备触发,例如定时器到达设定阈值、外部设备请求等。

而软件中断则是由程序主动触发,例如调用系统函数、执行软件异常等。

中断在计算机系统中的应用非常广泛。

它可以用于处理外部设备的输入输出,例如键盘、鼠标、打印机等。

同时,中断还可以用于处理各种异常情况,例如除零错误、越界访问等。

通过中断机制,计算机系统能够实现更高效、更灵活的任务处理和异常处理。

三、实验设置和结果分析为了更好地理解定时器和中断的原理和应用,我们进行了一系列的实验。

实验使用的是一款基于8051单片机的开发板,通过编写相应的汇编程序来实现定时器和中断的功能。

首先,我们设置了一个定时器,将时钟源设置为1MHz,计数器的初始值为0,阈值为1000。

然后,我们在中断处理程序中编写了一段代码,用于在定时器触发中断时进行相应的操作。

实验四 AT89C51单片机定时器

实验四  AT89C51单片机定时器

实验四 AT89C51单片机定时器/计数器实验实例二----航标灯控制器一、实验目的1.掌握AT89C51单片机定时器/计数器工作方式的设定;2.掌握AT89C51单片机定时器/计数器程序的编写方法;3.熟知单片机在航标灯控制器中的应用;4.进一步练习单片机仿真器的使用.二、实验设备1.PC机(WINDOWS操作系统);2.HF-MC01实验实训开发综合装置3、伟福6000软件模拟器。

4. 伟福硬件仿真器三、实验内容1.认识整个航标灯控制系统的组成及组成系统的器件;2.编程程序:具体要求是:AT89C51的P0口作为输出(P0.0--P0.7),连接8路发光二极管L0--L7;编写软件使L0--L7亮50ms, 灭1s;周而复始。

4.仿真运行四、实验方法步骤1.电路设计系统原理图参见图4-1.整个系统由24个器件组成,单片机的型号为ATMEL公司生产的AT89C51,其片内集成有FLASE型程序存储器,完全兼容51系列单片机;系统使用12M晶振;复位电路采用常规的上电.手动复位电路.由于只使用片内程序存储器,/EA接+5V;P0口作为输出(P0.0--P0.7),连接8路发光二极管L0--L7,低电平驱动.2.运行WAVE方法可参见实验一内容3.仿真器设置方法可参见实验一内容4.编写程序自己按本实验要求编写程序,并完成程序的录入(SY4.ASM)。

(注意:录入源程序必须使用西文输入法, 保存文件时必须加上扩展名“.ASM”,并记录保存的文件夹路径。

)5.对录入的源程序SY4.ASM进行编译编译步骤为:点击“项目———全部编译”若编译完成,在左下角的“信息窗口”将显示生成两个文件SY4.HEX和SY4.BIN。

若源程序在格式上有错误,则在“信息窗口”中出现错误提示,请检查源程序,修改后再进行编译,直至编译成功。

6. 硬件仿真运行接线方法(1).将仿真器的仿真插头插入A单元的AT89C51插座;(2).将仿真器通过串行电缆与计算机相连;(3).将A单元的+5V.GND分别与Z单元的+5V.GND相连;(4).将仿真器电源接入并打开.7.硬件仿真运行点击“仿真器——仿真器设置”仿真器设置:①点击“仿真器——仿真器设置——语言”,选择“伟福汇编器”“混合十、十六进制”;②点击仿真器设置下的“仿真器”,选择 S51/S、 POD8X5X、8751(或AT89C51);将“使用伟福软件模拟器”选项上的“√”去掉;③并将“通信设置”下的“使用伟福软件模拟器”选项上的“√”去掉,在通讯设置中选择正确的串行端口;④按“好”确认如果仿真器和仿真头设置正确,并且硬件连接没有错误,就会出现“硬件仿真”的对话框,并显示仿真器、仿真头的型号及仿真器的序列号。

定时器实验原理

定时器实验原理

定时器实验原理
定时器实验原理是利用定时器电路来实现时间的测量和控制。

定时器电路是一种可以产生固定时间间隔脉冲信号的电子电路。

定时器实验通常使用集成电路,其中最常用的是555定时器。

555定时器是一种多功能集成电路,包含有多种工作模式可供
选择,其中之一就是定时器模式。

在定时器实验中,通过调整电路中的电阻和电容值,可以设定定时器输出脉冲的时间间隔。

当电路通电时,电容开始充电,当电容电压达到一定阈值时,定时器输出一个脉冲信号,并将电容放电,重新开始充电。

这样周期性地产生脉冲信号,实现了时间的测量和控制。

定时器实验可以用于各种电子电路中,比如电子钟、定时器闹钟、定时开关等。

它们通过测量和控制时间间隔,实现了预定的时间功能。

定时器实验的原理简单易懂,但在实际应用中需要注意电路的稳定性和精确性。

此外,定时器实验还需要合理选择电容和电阻的数值来满足实际需求,同时还需考虑电流和电压等参数的限制。

总的来说,定时器实验原理就是利用定时器电路产生固定时间间隔的脉冲信号,通过调整电路元件的数值和工作模式,实现时间的测量和控制。

定时器实验报告

定时器实验报告
MOV TMOD,#0001H
MOV TH0,#0001
MOV TL0,#0001
SETB TR0
SETB ET0
SETB EA
MOV R2,#10
SJMP $
T0ISR:
CLR TR0
MOV TH0,#0001
MOV TL0,#0001
SETB TR0
DJNZ R2,T0E
CPL P1.0
MOV R2,#10
山西工程技术学院
实验报告
课程名称:单片机基础实验
实验项目:定时器实验
实验地点:实训2#楼GE实验室
专业班级:14电本二班学号:*********
*******
实验成绩:
2017年5月2日
一、实验目的
掌握单片机定时器、计数器定时模式的使用及编程。
二、实验内容
利用片内定时器/计数器来定时,定时时间间隔为1秒。单片机的P1.0脚接1个发光二极管,控制发光二极管闪烁,时间间隔1秒。当按下某一I/O口线上的按键操作是,发光二极管按设定的时间1秒定时闪烁。
T0E:
RETI
END
实验结果:
三、实验心得
在实验程序的编写过程中,我和合作的同学错将跳转指令LJMP写成了JMP,导致无法显示实验结果,并且反复检查后仍未发现错误,最后经老师指出,同时改正了多处语法的不规范。这次实验让我加深的汇编语言的语法,熟悉了如何使用编程控制定时,来实现二极管的间隔闪烁。
首先根据外部中断实验的原理图在protues软件上找到相应器件并连接好线路;然后在软件上编写外部中断的源程序;再把hex文件加载到89C51单片机上,调试仿真,直到达到实验要求为止。
电路图:
实验程序:
ORG 0000H
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验四定时器实验
班级:姓名:学号:
一、实验目的:
1、掌握定时器初始化的步骤;
2、掌握定时器控制寄存器(TCR)的含义和使用;
3、掌握定时器工作原理,学习定时器中断的设计方法,掌握1S间隔的定时器的处理。

4、熟悉ARM的中断原理,并产生中断。

二、实验设备:
1.硬件PC机
2.软件ADS1.2、PROTUES
三、实验内容及原理:
实验内容:本实验要求编写一个简单的定时器中断程序,设置一定的周期控制(1S)与某一个引脚(P0.0)相连的LED指示灯。

当定时器中断产生时可以观察到LED周期性闪烁。

实验原理:定时器控制(中断方式)。

采用11.0592MHz晶振,使用PLL部件,cclk=Fosc*4=11.0592MHz*4=442368MHz,外围时钟使用复位默认的Fpclk=fcclk/4=44.2368MHz/4=11.0592MHz,定时器0进行100分频(即PR=99,MR0=110592),实现1S定时控制LED点亮或熄灭。

另外,使用VIC的向量IRQ功能。

首先设置定时器为向量IRQ中断,分配优先级并使能向量,然后设置相关向量地址寄存器VICVectAddr0及中断使能,在中断服务程序里完成LED的亮灭,在处理完毕后写向量地址寄存器为0,通知VIC中断处理结束。

四、实验步骤
1、在PROTUES里搭建好硬件电路平台,处理器采用LPC2106,如下图所示。

2、打开ADS1.2的CodeWarrior 编译环境,新建一个工程(ARM Executable Image )工程,工程名为Time0。

在新建一个文件Time0.c ,添加到工程里。

3、在工程空白处右击,添加工程所需的文件(config.h, target.h, LPC2106.h, Startup.s, IRQ.s, target.c)。

如下图所示。

4、编写Time0.c,实现定时器1s 定时,LED 灯闪烁。

5、配置DebugRel Seteings , 打开Target Settings ,设置如下图所示。

Command Line 下修改入口地址:-entry 0x00000000.设置效果如下图所示。

Time0.hex.如下图所示。

8、配置完成后,点击OK.
9、在PROTUES里下载Time0.hex(路径为:E:\time0\time0_Data\DebugRel\Time0.hex)
10、运行观察LED灯闪烁的效果。

五、实验参考程序
IRQ_Time0中断服务子程序
Main()主程序流程
六、实验结果
定时器控制(中断方式)实验结果:每隔1秒LED取反一次。

七、实验结论
学习定时器中断的设计方法,掌握长时间间隔的定时器的处理。

在一定程度上掌握了VIC 的基本操作,当设置IRQ/FIQ 中断,若是IRQ 中断则可以设置为向量中断并分配中断优先级,否则为向量IRQ 。

然后可以设置中断允许,以及向量中断对应地址或非向量中断默认地址。

当有中断后,若是IRQ 中断,则可以读取向量地址寄存器,然后跳转到相应代码。

当要退出中断时,对向量地址寄存器写0,通知VIC中断结束。

当发生中断时,处理器将会切断处理器模式,同时相关的寄存器也将会映射。

/************************************************************************** * 文件名:TimerOut.C
* 功能:使用定时器0实现1秒定时,控制LED闪烁。

(中断方式)
* 说明:将跳线器JP9短接,JP4断开。

**************************************************************************/ #include "config.h"
#define LEDFLASH 0x00000001 /* P0.0引脚控制LED,高电平点亮*/
/************************************************************************** * 名称:IRQ_Time0()
* 功能:定时器0中断服务程序,取反LEDFLASH控制口。

* 入口参数:无
* 出口参数:无
**************************************************************************/ void __irq IRQ_Time0(void)
{
while((T0IR&0x01)==0); //匹配中断,等待定时时间到
if((IOSET&LEDFLASH)==0)
IOSET=LEDFLASH; //控制LED点亮
else
IOCLR=LEDFLASH; //控制LED熄灭
T0IR=0x01; //清除中断标志
VICVectAddr = 0x00; // 通知VIC中断处理结束}
/************************************************************************** * 名称:Time0Init()
* 功能:初始化定时器0
* 入口参数:无
* 出口参数:无
**************************************************************************/ void Time0Init(void)
{ /* Fcclk = Fosc*4 = 11.0592MHz*4 = 44.2368MHz
Fpclk = Fcclk/4 = 44.2368MHz/4 = 11.0592MHz */
T0PR = 99; // 设置定时器0分频为100分频,得110592Hz
T0MCR = 0x03; // 匹配通道0匹配中断并复位T0TC
T0MR0 = 110592/4; // 比较值(1S定时值)
T0TCR = 0x03; // 启动并复位T0TC
T0TCR = 0x01;
/* 设置定时器0中断IRQ */
VICIntSelect = 0x00; // 所有中断通道设置为IRQ中断
VICVectCntl0 = 0x24; // 定时器0中断通道分配最高优先级(向量控制器0)
VICVectAddr0 = (uint32)IRQ_Time0; // 设置中断服务程序地址向量
VICIntEnable = 0x00000010; // 使能定时器0中断}
/************************************************************************** * 名称:main()
* 功能:初始化I/O及定时器,然后等待中断。

* 说明:在STARTUP.S文件中使能IRQ中断(清零CPSR中的I位)。

**************************************************************************/ int main(void)
{
PINSEL0 = 0x00000000; // 设置管脚连接GPIO
IODIR = LEDFLASH; // 设置I/O为输出
IOSET = LEDFLASH;
Time0Init(); // 初始化定时器0及使能中断
while(1); // 等待定时器0中断
return(0);
}
八、心得体会
初步学习了ADS 1.2 这个软件应用。

相关文档
最新文档