实验三 定时器实验
- 格式:doc
- 大小:269.01 KB
- 文档页数:5
实验三定时器实验报告实验要求:连接电路并编写程序,使单片机定时器在一定工作模式下,完成9999.99s 倒计时;电路原理图:对8051 单片机的可编程计数器/定时器的工作原理进行说明:1.定时器模式:对单片机的晶体振荡器12分频后的片内脉冲进行计数。
从而达到定时目的。
2.计数器模式:对外部输入引脚p3.4(t0)、p3.5(t1)的外部脉冲(负跳变)计数。
程序清单及注释:ORG 0000HSJMP MAINORG 0030H ;将数码管所要显示的数据保存在30H~35H 之中SJMP T0_INTMAIN: ;以下编写程序完成注释要求的步骤:MOV TMOD ,#00 ;T0 定时方式1MOV TH0,#0DCH ;定时10ms@11.0592MHzMOV TL0,#00H ; TL0 赋值SETB TR0 ;启动T0SETB EA ;开中断MOV DPTR,#TABLOOP1:; 将30H~35H 地址内的值均赋为9 ;注意:只有R0、R1 可以间接赋值MOV R1,#30HLOOP2:MOV @R1,#09HINC R1CJNE R1,#36H,LOOP2START: MOV R2,#00HMOV R1,#30HLED_123: ;控制前3 个数码管的显示MOV A,@R1MOVC A,@A+DPTRCALL CONTROL_164CALL CONTROL_138CALL DELAYINC R2;间接通过R2 的值控制数码管显示的次序INC R2;INC R1CJNE R1,#33H,LED_123LED_4: ;控制第4 个数码管的显示(带小数点)MOV A,@R1MOVC A,@A+DPTRADD A,#80HALL CONTROL_164CALL CONTROL_138CALL DELAYINC R1LED_56: ;控制第5、6 个数码管的显示INC R2INC R2MOV A,@R1MOVC A,@A+DPTRCALL CONTROL_164CALL CONTROL_138CALL DELAYINC R1CJNE R1,#36H,LED_56JMP STARTCONTROL_164:MOV R3,#08HLOOP_0: CLR P2.0MOV R4,AANL A,#080HCJNE A,#080H,LOOP_1SETB P2.7JMP LOOP_2LOOP_1: CLR P2.7LOOP_2: SETB P2.0MOV A,R4RL ADJNZ R3,LOOP_0RETCONTROL_138:MOV A,#0F0H; 0XF0=11110000(二进制)ADD A,R2; 需直接通过P21、P22、P23 的值控制数码管显示的次序MOV P2,A; 将A 的值赋给P2 端口,则,R2 需每次加2 才能使P21 发生一次改变RETT0_INT: ;定时中断PUSH ACC;以下请仿照中断INT0 编写程序完成如下步骤:PUSH PSW;1、保存PSW、ACC 寄存器;CLR EA;2、关闭全局中断MOV TH0,#0DCH;3、对TH0,TL0 赋值,定时10ms@11.0592MHzMOV TL0,#00H;将30H~35H 内改值,使每进入一次定时中断,30H~35H 内数字组成的6 位数减1MOV R0,#35HRETI;T0_LOOP0: CJNE @R0,#0H,T0_ENDMOV @R0,#9HDEC R0JMP T0_LOOP0T0_END:DEC @R0SETB EA ;开启全局中断;以下编写程序完成注释要求的步骤:POP PSWPOP ACC ;恢复保存寄存器数据。
实验三流水灯实验(I/O口和定时器实验)一、实验目的1.学会单片机I/O口的使用方法和定时器的使用方法;2.掌握延时子程序的编程方法、内部中断服务子程序的编程方法;3.学会使用I/O口控制LED灯的应用程序设计。
二、实验内容1.控制单片机P1口输出,使LED1~LED8右循环轮流点亮(即右流水),间隔时间为100毫秒。
2.控制单片机P1口输出,使LED1~LED8左循环轮流点亮(即左流水),间隔时间为100毫秒。
3.使用K1开关控制上面LED灯的两种循环状态交替进行;4. 用定时器使P1口输出周期为100ms的方波,使LED闪烁。
5.使用定时器定时,使LED灯的两种循环状态自动交替,每一种状态持续1.6秒钟(选作)。
三、实验方法和步骤1.硬件电路设计使用实验仪上的E1、E5和E7模块电路,把E1区的JP1(单片机的P1口)和E5区的8针接口L1~L8(LED的驱动芯片74HC245的输入端)连接起来,P1口就可以控制LED 灯了。
当P1口上输出低电平“0”时,LED灯亮,反之,LED灯灭。
E7区的K1开关可以接单片机P3.0口,用P3.0口读取K1开关的控制信号,根据K1开关的状态(置“1”还是置“0”),来决定LED进行左流水还是右流水。
综上,画出实验电路原理图。
2.程序设计实验1和实验2程序流程图如图3-1实验3程序流程图如图3-2所示。
图3-1 实验1,2程序流程图图3-2 实验3程序流程图实验4程序流程图如图3-3,3-4所示。
实验5程序流程图如图3-5,3-6所示。
图3-5 实验5主程序流程图图3-6 定时器中断服务子程序流程图图3-4 定时器中断服务子程序流程图图3-3 实验4主程序流程图编程要点:(1)Pl,P3口为准双向口,每一位都可独立地定义为输入或输出,在作输入线使用前,必须向锁存器相应位写入“1”,该位才能作为输入。
例如:MOV P1,A; P1口做输出MOV P1,#0FFHMOV A,P1;P1口做输入SETB P3.0MOV C,P3.1;从P3.1口读入数据(2)每个端口对应着一个寄存器,例:P1→90H(P1寄存器地址);P3→B0H(P3寄存器地址);寄存器的每一位对应着一个引脚,例:B0H.0→P3.0(3)对寄存器写入“0”、“1”,对应的外部引脚则输出“低电平”、“高电平”。
实验三:定时器实验报告15电气2班陈泽南10 李梓灏 22吴建全30 肖子浩32 钟智威38 一.实验目的:1.熟悉三菱plc的定时器T的用途。
2.掌握定时器T的运用:振荡电路,占空比可调振荡电路和定时启动二.实验设备及仪器:1.PC机 1台2.三菱plc型号FX-1N 1台三.实验内容1.振荡电路1)要求:当X0开关闭合时候,定时器T0每隔1s发出一个脉冲,Y0变化一次电平。
2)外部接线图和时序图振荡电路的接线图时序图3)梯形图实验现象:当X0开关闭合时候,经过1s后Y0指示灯亮,亮灭间隔1s闪烁。
梯形图工作原理分析:当X0开关闭合,定时器T0得电开始计时,1s后T0常闭触点断开,常开触点闭合,此时Y0得电,Y0常开常闭触点动作,T0失电复位开始计时,第二条支路形成自锁:1s后T0常闭触点断开,常开触点闭合,Y0失电复位,T0失电复位开始计时。
如此循环产生每隔1s的一个脉冲,Y0变化一次电平。
2.占空比可调振荡电路1)要求:当X0开关闭合时候,定时器T0发出为占空比60%的方波,Y0随着T0的变化。
改变占空比再次观察。
(占空比为40%)2)外部接线图和时序图可调占空比接线图时序图3)梯形图实验现象:把T0设为K20,T1设为K30,产生的方波信号占空比60%,当X0闭合,经过2s 指示灯开始Y0亮3s灭2s闪烁;把T0设为K30,T1设为K20,产生的方波信号占空比40%,当X0闭合,经过3s指示灯开始Y0亮2s灭3s闪烁。
梯形图工作原理分析:以占空比为60%为例,当X0闭合,T0得电开始计时,2s后T0常开触点动作,Y0得电高电平,T1开始计时,3s后T1常闭触点动作T0复位,T1和Y0复位,T0又开始计时2s,如此循环产生占空比为60%的方波信号。
3.定时启动(1)为了保证运行安全,在机械启动之前需要用电铃和蜂鸣器输出报警信号,预示机器即将启动,警告人们迅速退出危险地段。
1) 要求:当启动X0处的开关SB1,定时器T0开始计时,Y0得电且延时3s断开,后电机得电并自锁。
实验三 用定时器实现数字振荡器1 实验目的在数字信号处理中,会经常使用到正弦/余弦信号。
通常的方法是讲某个频率的正弦/余弦值余弦计算出来后制成一个表,DSP 工作时仅作查表运算即可。
在本实验中将介绍另一种获得正弦/余弦信号的方法,即利用数字振荡器用叠代方法产生正弦信号。
本实验除了学习数字振荡器的DSP 实现原理外,同时还学习C54X 定时器使用以及中断服务程序编写。
另外,在本实验中我们将使用汇编语言和C 语言分别完成源程序的编写。
2 实验要求本实验利用定时器产生了一个2kHz 的正弦信号,定时器被设置成每25uS 产生一次中断,(等效于采样速率未40k )利用该中断,在该中断服务程序中用叠代算法计算出一个SNT 值,病利用CCS 的图形显示功能查看波形。
3 实验原理(1)数字振荡器原理设一个传递函数为阵线序列sinkwT ,其z 变换为111BzAz 1Cz )z (H -----=其中,A =2coswT ,B =-1,C=sinwT 。
设初始条件为0,求出上式的反Z 变换得: y[k]=Ay[k-1]+By[k-2]+Cx[k-1]这是个二阶差分方程,其单位冲击响应即为sinkwT 。
利用单位冲击函数x[k-1]的性质,即仅当k=1时,x[k-1]=1,代入上式得:k=0 y[0]=Ay[-1]+By[-2]+0=0k=1 y[1]=Ay[0]+By[-2]+c=ck=2 y[2]=Ay[1]+By[0]+0=Ay[1]k=3 y[3]=Ay[2]+By[1]k=n y[n]=Ay[n-1]+By[n-2]在k ﹥2以后,y[k]能用y[k -1]和y[k-2]算出,这是一个递归得方法。
根据上面得说明,我们可以开始数字振荡器得设计。
设该振荡器得频率为2kHz,采样率为40kHz (通过定时器设置,每隔25us 中断一次,即产生一个y[n])则递归得差分方程系数为:A =2coswT=2cos(2×PI ×2000/40000)=2×0.95105652B=-1C=sinwT=sin(2×PI ×2000/40000)=0.3090169979BC 22A 15=⨯ C00022B 15=⨯ 13C722C 15=⨯ 为了便于定点DSP 处理,我们将所有系数除以2,然后用16为定点格式表示为: 这便是本实验中查生2kHz 阵线信号的三个系数。
实验三定时器及外部中断实验一、实验目的1)熟悉VC5416的定时器工作原理。
2)掌握VC5416定时器的编程控制方法。
3)学会使用定时器的中断方式来控制程序执行方法。
4)掌握外部中断的编程控制方法,理解DSP对于中断的响应的过程。
5)了解并学习混合编程的实现方法。
二、实验设备1)计算机一套,DSP硬件仿真器一台,实验箱一台。
2)CCS4.1-CCS5.5软件版本。
3)源程序及链接命令文件见:D:\ EXPER\EXP3目录下的.asm 、.cmd、.C 和.lib文件。
三、实验步骤(一)、连接仿真器,将仿真器插接到C5416的JTAG接口上,另一头插接到电脑的USB接口上,因为仿真器是金属外壳,容易和箱子内部的电路触碰造成短路,从而对实验箱造成损坏,这个要特别注意,也不允许在机箱打开电源情况下插拔仿真器。
(二)、实验箱配置及连线:C5416DSP核心板上的SW1的1-6的开始设置为off off off off on on(上电后工做于1/2分频器方式,其它实验也按照此设置不变,我试验过改为PLL*2方式仿真器就连接不上了),SW2设置为on on on on。
将DSP核心板所在试验箱引脚连线区的BCANRX(C54的XF)引脚,与指示灯连线区LAMP的L1连接起来,这样就可以通过XF控制这个L1这个方光管的亮灭了。
将DSP核心板所在试验箱引脚连线区的INT0(C54的外部中断0输入)引脚与单脉冲按键PAULSE的P-(按下输出负脉冲)连接起来,这样按下按键时,就会给DSP的INT0中断引脚发送一个负脉冲。
连线照片见程序目录中的图片文件。
(二)、打开实验箱电源开关。
(三)、使用给定的文件,按照实验一的步骤建立实验项目,例如工作区目录为D:\ exp3 中建立一个exp3的实验项目,添加所有的给定的文件。
(四)、仿真调试方法1、通过菜单Project- Build All 对项目进行编译和链接,如下:如果有错误会出现在problem 窗口中。
实验三定时器/计数器应用-产生方波信号一、实验目的1、学习和掌握51 单片机定时器“1 模式”的原理和控制方法。
2、对比单片机定时器“1 模式”与“0 模式”工作的异同。
3、利用示波器观察定时器整个溢出过程所耗用的时间。
二、实验原理Timer 的1 模式和0 模式比较类似,只是定时器的总位宽变成16 位,其它特性的没有太大的区别。
在Timer 每次溢出后要手工载入Timer 的定时数据。
由于定时器在溢出过后会使中断标志位的状态发生改变,利用一小段程序监控这个改变。
当中断标志位为“1”时,就将单片机的P1.0 的电平拉低,然后再启动新一轮计数后重新拉高P1.0 的电平。
这样,通过观察P1.0 引脚上低电平持续的时间,就可以方便地测量出timer0 在1模式下的定时长度。
三、实验程序流程图四、实验程序#include<reg51.h>sbit out_0=P1^0;//定义管脚用作输出sbit out_1=P0^0;//定义管脚用作输出void init()//初始化定时器{TMOD= 0x11;//设置工作方式(定时器T1,T0都为工作方式1)TR0= 1;//设置定时器T0为可用TH0= 0xD8;//设置初值为55535(计数值为10000,为0.1s)TL0= 0xEF;out_0=0;//初始化为灯亮TR1= 1;//设置定时器T0为可用TH1= 0x00;//设置初值为01(计数值为65534)TL1= 0x01;out_1=1;//初始化为灯灭}void load_0()//重装载T0{out_0=!out_0;//输出变相TF0= 0;//修改计数溢出中断标志位TH0= 0xD8;//装载初值为55535TL0= 0xEF;}void load_1()//重装载T1{out_1=!out_1;//输出变相TF1= 0;//修改计数溢出中断标志位TH1= 0x00;//装载初值为01TL1= 0x01;}void main (){init();//初始化while(1){while(TF0==0||TF1==0);//查询计数溢出中断标志位if(TF0)//重装载T0load_0();if(TF1)//重装载T1load_1();}}五、实验结果灯光以不同的周期亮灭、六、实验讨论。
实验三定时器中断一.实验目的1.掌握定时器典型应用方法,了解相应寄存器的作用和编程应用;2. 了解TMS320F2812的中断结构和对中断的处理流程。
二.实验设备1.PC机一台,操作系统为WindowsXP (或Windows98、Windows2000),安装了ccs3.1;2.TI 2000系列的TMS320F2812 eZdsp开发板一块;3.扩展实验箱一台。
三.实验原理1.TMS320F2812器件上有3个32位定时器(图3.1)(TIMER0/1/2)。
CPU定时器1和2预留给系统(如DSP-BIOS)使用,CPU定时器0可以在用户应用程序中使用。
在F2812芯片中,定时器中断信号(TINT0、TINT1、TINT2)的连接如图3.2。
图3.1 CPU定时器图3.2 CPU定时器中断信号和输出信号CPU 定时器的通常操作如下:定时器时钟经过预定标计数器(PSCH:PSC)递减计数,预定标计数器产生溢出后向定时器的32位计数器(TIMH:TIM)借位,定时器计数器产生溢出后使定时器向CPU发送中断。
每次预定标计数器产生溢出后使用分频寄存器(TDDRH:TDDR)中的值重新装载,32位周期寄存器(PRDH:PRD)为32位计数器提供重新装载值。
表3.1中列出的寄存器用于配置定时器。
表3.1 CPU 定时器0、1、2 配置和控制寄存器2.中断响应过程一般分为四步:a.接受中断请求。
必须由软件中断(从程序代码)或硬件中断(从一个引脚或一个基于芯片的设备)提出请求去暂停当前主程序的执行。
b.响应中断。
必须能够响应中断请求。
如果中断是可屏蔽的,则必须满足一定的条件,按照一定的顺序去执行。
而对于非可屏蔽中断和软件中断,会立即作出响应。
c.准备执行中断服务程序并保存寄存器的值。
d.执行中断服务子程序。
调用相应得中断服务程序ISR,进入预先规定的向量地址,并且执行已写好的ISR。
中断类别分为可屏蔽中断、不可屏蔽中断。
实验3 定时器实验一、实验目的: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 ,设置如下图所示。
实验三 定时器实验
一、实验目的
1、掌握单片机系统定时器断的原理及使用方法。
二、实验原理 (一)、单片机定时器/计数器的结构 1.定时器/计数器组成框图
8051单片机内部有两个16位的可编程定时器/计数器,称为定时器0(T0)和定时器1(T1),可编程选择其作为定时器用或作为计数器用。
此外,工作方式、定时时间、计数值、启动、中断请求等都可以由程序设定,其逻辑结构如图所示。
_____INT1(P3.3)_____INT0(P3.2)
T1(P3.5)T0(P3.4)
图 8051定时器/计数器逻辑结构图
由图可知,8051定时器/计数器由定时器 T0、定时器T1、定时器方式寄存器TMOD 和定时器控制寄存器TCON 组成。
2.定时/计数器的方式寄存器和控制寄存器
定时/计数器的初始化通过定时/计数器的方式寄存器TMOD 和控制寄存器TCON 完成。
1)定时/计数器方式寄存器TMOD
TMOD 为T1、T2的工作方式寄存器,其格式如下:
TMOD D7 D6 D5 D4 D3 D2 D1 D0
(89H) TMOD 的低 (1
(2)T /C :功能选择位。
0T /C =时,设置为定时器工作方式;1T /C =时,设置为计数器工作方式。
(3)GATE :门控位。
当GA TE=0时,软件控制位TR0或TR1置1即可启动定时器;当GATE=1时,软件控制位TR0或TR1须置1,同时还须0INT (P3.2)或1INT (P3.3)为高电平方可启动定时器,即允许外中断0INT 、1INT 启动定时器。
TMOD 不能位寻址,只能用字节指令设置定时器工作方式,高4位定义T1,低4位定义T0。
复位时,TMOD 所有位均置0。
2)定时器/计数器控制寄存器TCON
TCON 的作用是控制定时器的启动、停止,标志定时器的溢出和中断情况。
定时器控制字TCON 的格式如下:
TCON (88H ) 8FH 8EH 8DH 8CH 8BH 8AH 89H 88H
(1) TCON.7 TF1:定时器1溢出标志位。
当定时器1计数满产生溢出时,由硬件自动置TF1=1。
在中断允许时,向CPU 发出定时器1的中断请求,进入中断服务程序后,由硬件自动清0。
在中断屏蔽时,TF1可作查询测试用,此时只能由软件清0。
(2)TCON.6 TR1:定时器1运行控制位。
由软件置1或清0来启动或关闭定时器1。
当GATE=1,且1INT 为高电平时,TR1置1启动定时器1;当GATE=0时,TR1置1即可启动定时器1。
(3)TCON.5 TF0:定时器0溢出标志位。
其功能及操作情况同TF1。
(4)TCON.4 TR0:定时器0运行控制位。
其功能及操作情况同TR1。
(5)TCON.3 IE1:外部中断1(1INT )请求标志位。
(6)TCON.2 IT1:外部中断1触发方式选择位。
(7)TCON.1 IE0:外部中断0(0INT )请求标志位。
(8)TCON.0 IT0:外部中断0触发方式选择位。
TCON 中的低4位用于控制外部中断,与定时器/计数器无关。
TCON 的字节地址为88H ,可以位寻址,清溢出标志位或启动定时器都可以用位操作指令。
3、定时器/计数器的初始化
由于定时器/计数器的功能是由软件编程确定的,所以,一般在使用定时器/计数器前都要对其进行初始化。
初始化步骤如下:
(1)确定工作方式——对TMOD 赋值。
(2)预置定时或计数的初值——直接将初值写入TH0、TL0或TH1、TL1。
定时器/计数器的初值因工作方式的不同而不同。
设最大计数值为M ,则各种工作方式下的M 值如下:
方式0:81922M 13== 方式1:655362M 16== 方式2:2562M 8==
因定时器/计数器工作的实质是做“加1”计数,所以,当最大计数值M 值已知时,初值X 可计算如下:
X = M -计数值
4、启动定时器/计数器工作——将TR0或TR1置“1”。
GA TE = 0时,直接由软件置位启动;GATE = 1时,除软件置位外,还必须在外中断引脚处加上相应的电平值才能启动。
三、实验内容
1、见图一。
假设单片机晶振频率设定为12MHz。
用中断方式来完成以下要求,且通过虚拟示波器观看波形。
A、使用定时器1 以方式1 产生周期为500us 的等宽方波连续脉冲,并由P1.0 输出。
用中断方式来完成。
B、完成A功能,用查询方式来完成
C、使用定时器0 以方式2 产生周期为200us 的等宽方波连续脉冲,并由P1.1 输出。
用中断方式来完成。
D、编程使T0 工作于定时工作方式1,产生500us 等宽方波从P2.7 输出。
T1 工作于计数工作方式2,其计数外部脉冲由T0 产生,即P2.7 引脚与P3.5(T1 引脚)相连,T1 每计数100 个,P1.2 取反输出一次。
图一
2、见图二。
假设单片机晶振频率设定为12MHz。
完成以下功能。
(按键元件名称BUTTON)
A、通过外部按键(INT1 引脚连接)和外部按键(T0 引脚连接)以中断方式控制LED 的上移和下移。
(利用连接R2 R3的2个按键实现L ED 的上移和下移)
B、通过INT0 引脚外界4 输入与门扩展外部中断,编程实现扩展出的四个开关以中断方式,分别实现LED 的上移、下移、亮和灭。
图二
四、思考题(本题选做)
见图3,要求实现电子秒表功能。
1、按键不按,时间显示为0.0 。
2、按键第一次按下,时间启动,从0.0秒开始,直到9.9秒,又为0.0秒,周而复始。
3、按键第二次按下,停止计时。
数字为刚显示的数字。
4、按键第三次按下,时间重新启动,为0.0 秒。
图3
提交实验报告内容要求:
1.实验目的。
2.实验内容。
题1-2编程。
思考题为选做题目。
3.请写出实验过程中曾出现的问题和你的解决方法,你对实验有何感想和体会?。