实验三 定时器实验
单片机实验 实验三 定时器实验
![单片机实验 实验三 定时器实验](https://img.taocdn.com/s3/m/1dd6aecf2cc58bd63186bdcf.png)
T0控制
6
四、实验步骤
P1.0~P1.7分别接发光二极管L1~L8。
注:
1、编程前先在E盘目录下建一个文件夹,并取一个英名名 字,即名字中不能有汉字和数字。编完程序将其存于该目录 下。 2、做完实验将实验箱右上角的CPU板卸下,再关实验箱。 3、因用户实验程序区位于4000H-----5FFFH,在编写实验 程序时要注意,程序的起始地址应为4000H。
3
中断允许控制寄存器IE
D7 EA
D6
D5
D4 ES
D3 ET1
D2 EX1
D1 ET0
D0 EX0
0 禁止,1允许
4
定时/计数器控制寄存器TCON
D7 D6 D5 D4 D3 D2 D1 D0 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 中断请求标志 启动定时/计数器
0 停止 1 启动
*
7
五、程序
ORG 0000H LJMP MAIN ORG 401BH LJMP INT ORG 4100H MOV SP, #70H MOV TMOD, #10H MOV IE, #88H ;定时器/计数器1中断程序入口地址
MAIN:
MOV MOV MOV MOV SETB
R2 , #10 A, #0FEH TH1, #3CH TL1, #0B0H TR1
;设置堆栈指针 ;设置计数器方式1 ;CPU中断开放标志位和定时器 ;1溢出中断允许位均置位 ;软件延时时间1s=10×0.1s ;将0FEH送入累加器A ;装入时间常数 ; 启动定时器T1
*
8
LOOP:
MOV P1, A LJMP LOOP CLR TR1 DJNZ R2, CZ MOV R2 , #10 RL A MOV TL1,#0B0H MOV TH1,#3CH SETB TR1 RETI END
实验三定时器实验报告
![实验三定时器实验报告](https://img.taocdn.com/s3/m/004d6654804d2b160b4ec074.png)
实验三定时器实验报告实验要求:连接电路并编写程序,使单片机定时器在一定工作模式下,完成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 ;恢复保存寄存器数据。
实验三流水灯实验(io口和定时器实验)
![实验三流水灯实验(io口和定时器实验)](https://img.taocdn.com/s3/m/09388fe17d1cfad6195f312b3169a4517723e5b6.png)
实验三流水灯实验(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”,对应的外部引脚则输出“低电平”、“高电平”。
PLC实验三:定时器实验报告
![PLC实验三:定时器实验报告](https://img.taocdn.com/s3/m/00c5ca02227916888486d73d.png)
实验三:定时器实验报告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断开,后电机得电并自锁。
实验三 用定时器实现数字振荡器
![实验三 用定时器实现数字振荡器](https://img.taocdn.com/s3/m/5bcbfd5bbe23482fb4da4c11.png)
实验三 用定时器实现数字振荡器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 阵线信号的三个系数。
实验三定时器及外部中断实验
![实验三定时器及外部中断实验](https://img.taocdn.com/s3/m/8c64cf8ea8114431b90dd8f8.png)
实验三定时器及外部中断实验一、实验目的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 窗口中。
实验三 定时器
![实验三 定时器](https://img.taocdn.com/s3/m/9d87fd65783e0912a2162aaa.png)
实验三定时器/计数器应用-产生方波信号一、实验目的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();}}五、实验结果灯光以不同的周期亮灭、六、实验讨论。
实验三定时器中断
![实验三定时器中断](https://img.taocdn.com/s3/m/455faeecf8c75fbfc77db243.png)
实验三定时器中断一.实验目的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。
中断类别分为可屏蔽中断、不可屏蔽中断。
实验三定时器计数器及中断实验
![实验三定时器计数器及中断实验](https://img.taocdn.com/s3/m/832cb73ff342336c1eb91a37f111f18583d00c00.png)
配置单片机的中断允许寄存器,使能所选定时器/计数器的中断。
编写主程序及中断服务程序
主程序
编写主程序,实现基本的输入输出、 初始化等操作。
中断服务程序
在中断服务程序中实现定时或计数到 达后的具体操作,如LED闪烁、数据 采集等。
编译、链接、下载程序
1 2
编译程序
使用合适的编译器将编写的程序编译成机器码。
PART 06
知识拓展与应用前景
定时器/计数器在其他领域的应用
工业自动化
定时器/计数器可用于控制生产线 的运行时间、产品计数等,提高
生产效率和自动化水平。
能源管理
在智能电网、智能家居等领域,定 时器/计数器可用于实现用电设备 的定时开关、能耗统计等功能,促 进节能减排。
交通运输
定时器/计数器可用于交通信号灯控 制、车辆计时收费等场景,提高交 通运行效率和管理水平。
我们在实验中观察了中断响应的过程,并记录了中断处理程序的执行时
间。
02
中断处理
中断处理程序是专门用来处理中断事件的程序。我们在实验中编写了相
应的中断处理程序,并在中断发生时执行了相应的操作,如清除中断标
志、读取计数值等。
03
中断返回
当中断处理程序执行完毕后,CPU会返回到原来的程序继续执行。我们
在实验中观察了中断返回的过程,并验证了程序的正确恢复。
实验结果可靠性分析
我们对多次实验的结果进行了统计分析,评估了实验结果的可靠性和稳定性。通过增加实 验次数和改进实验方法,我们可以提高实验结果的准确性和可信度。
PART 05
问题讨论与解决方案
实验中遇到的问题及解决方法
问题一
定时器/计数器无法正常工作
arm实验3 定时器实验
![arm实验3 定时器实验](https://img.taocdn.com/s3/m/fbb86841852458fb770b5679.png)
实验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 ,设置如下图所示。
单片机实验三 定时器实验
![单片机实验三 定时器实验](https://img.taocdn.com/s3/m/031c29d7195f312b3169a507.png)
实验三定时器实验一、实验要求用CPU内部定时器中断方式计时,实现P1每一秒钟输出状态发生一次反转.二、实验目的1、学习8031内部计数器的使用和编程方法。
2、进一步掌握中断处理程序的编程方法。
三、实验电路及连线电路与实验二电路相同1、关于内部计数器的编程主要是定时常数的设置和有关控制寄存器的设置。
内部计数器在单片机中主要有定时器和计数器两个功能。
本实验使用的是定时器。
2、定时器有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。
TMOD用于设置定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。
TCON主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。
3、内部计数器用作定时器时,是对机器周期计数。
每个机器周期的长度是12个振荡器周期。
若实验系统的晶振是6MHZ,采用工作方式2,即8位自动重装方式定时器, 定时器100us中断一次, 所以定时常数的设置可按以下方法计算:机器周期=12÷6MHZ=2uS(256-定时常数)×2uS=100us定时常数=206. 然后对100us中断次数计数10000次,就是1秒钟.要求该实验采用晶振12MHz,采用工作方式1,即16位定时器,定时器50ms中断一次4、在例程的中断服务程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。
请写出实验程序并到PROTEUS仿真软件中进行调试ORG 0000HAJMP MAINORG 000BHAJMP T_RETORG 30HMAIN:MOV P1,#0FFHMOV TMOD,#01HMOV TH0,#0D8HMOV TL0,#0F0HMOV R7,#00HCLR F0SETB ET0SETB EASETB TR0LOOP:LJMP LOOPT_RET:MOV TH0,#0B8HMOV TL0,#0F0HINC R7MOV A,R7CJNE A,#10,RET_T CPL P1.7MOV R7,00HRET_T:RETIEND。
实验三使用中断的定时器
![实验三使用中断的定时器](https://img.taocdn.com/s3/m/0fe7359850e79b89680203d8ce2f0066f53364c3.png)
实验三使用中断的定时器一、实验目的1、理解C2000芯片的CPU定时器和中断系统的工作原理;2、学会使用TMS320F28027芯片的定时器实现定时;3、掌握CPU定时器和PIE外设中断控制器相关寄存器的配置与使用。
二、概述本实验的程序实现了定时器Timer0定时1秒,对应LED灯D10状态翻转,由亮到灭,在由灭到亮,一致循环下去;定时器Timer1定时2秒,对应LED灯D12状态翻转;定时器Timer2定时4秒,对应LED灯D13状态翻转。
表1 输出引脚硬件配置表3D13GPIO237Timer2对应LED图1 LED灯连接电路图三、实验内容1、按照新建工程项目的方法进行实验(参考实验二)。
2、主函数(程序流程框图见图2所示)#include"DSP28x_Project.h"// Device Headerfile and Examples Include File // Prototype statements for functions found within this file.interrupt void cpu_timer0_isr(void);interrupt void cpu_timer1_isr(void);interrupt void cpu_timer2_isr(void);void InitTimerGpio(void);void main(void){// Step 1.系统初始化Initialize System Control:// PLL, WatchDog, enable Peripheral Clocks// This example function is found in the f2802x_SysCtrl.c file.InitSysCtrl();// Step 2.GPIO初始化 Initalize GPIO:// This example function is found in the f2802x_Gpio.c file and// illustrates how to set the GPIO to it's default state.// InitGpio(); // Skipped for this exampleInitTimerGpio();// Step 3. 清除(关闭)中断并初始化外设中断向量表 Clear all interrupts and initialize PIE vector table:// 关闭CPU中断 Disable CPU interruptsDINT;// Initialize the PIE control registers to their default state.// The default state is all PIE interrupts disabled and flags// are cleared.// This function is found in the f2802x_PieCtrl.c file.InitPieCtrl();// Disable CPU interrupts and clear all CPU interrupt flags:IER = 0x0000;IFR = 0x0000;// Initialize the PIE vector table with pointers to the shell Interrupt// Service Routines (ISR).// This will populate the entire table, even if the interrupt// is not used in this example. This is useful for debug purposes.// The shell ISR routines are found in f2802x_DefaultIsr.c.// This function is found in f2802x_PieVect.c.InitPieVectTable();// Interrupts that are used in this example are re-mapped to// 设置中断向量表 ISR functions found within this file.EALLOW; // This is needed to write to EALLOW protected registers0 = &cpu_timer0_isr;1 = &cpu_timer1_isr;2 = &cpu_timer2_isr;EDIS; // This is needed to disable write to EALLOW protected registers // Step 4. 初始化CPU定时器 Initialize the Device Peripheral. This function can be// found in f2802x_CpuTimers.cInitCpuTimers(); // For this example, only initialize the Cpu Timers#if (CPU_FRQ_60MHZ)//配置CPU定时器 Configure CPU-Timer 0, 1, and 2 to interrupt every second:// 60MHz CPU Freq, 1 second Period (in uSeconds)ConfigCpuTimer(&CpuTimer0, 60, );ConfigCpuTimer(&CpuTimer1, 60, );ConfigCpuTimer(&CpuTimer2, 60, );#endif#if (CPU_FRQ_50MHZ)// Configure CPU-Timer 0, 1, and 2 to interrupt every second:// 50MHz CPU Freq, 1 second Period (in uSeconds)ConfigCpuTimer(&CpuTimer0, 50, );ConfigCpuTimer(&CpuTimer1, 50, );ConfigCpuTimer(&CpuTimer2, 50, );#endif#if (CPU_FRQ_40MHZ)// Configure CPU-Timer 0, 1, and 2 to interrupt every second:// 40MHz CPU Freq, 1 second Period (in uSeconds)ConfigCpuTimer(&CpuTimer0, 40, );ConfigCpuTimer(&CpuTimer1, 40, );ConfigCpuTimer(&CpuTimer2, 40, );#endif// To ensure precise timing, use write-only instructions to write to the entire register. Therefore, if any// of the configuration bits are changed in ConfigCpuTimer and InitCpuTimers (in F2802x_CpuTimers.h), the// below settings must also be updated..all = 0x4001; //Use write-only instruction to set TSS bit = 0.all = 0x4001; // Use write-only instruction to set TSS bit = 0.all = 0x4001; // Use write-only instruction to set TSS bit = 0// Step 5.使能用到的中断 User specific code, enable interrupts:// Enable CPU int1 which is connected to CPU-Timer 0, CPU int13// which is connected to CPU-Timer 1, and CPU int 14, which is connected// to CPU-Timer 2:IER |= M_INT1;IER |= M_INT13;IER |= M_INT14;// Enable TINT0 in the PIE: Group 1 interrupt 7R1.7 = 1;// Enable global Interrupts and higher priority real-time debug events:EINT; // Enable Global interrupt INTMERTM; // Enable Global realtime interrupt DBGM// Step 6. 设置空循环(程序进入运行状态) IDLE loop. Just sit and loop forever (optional):for(;;);}//下面是中断服务程序interrupt void cpu_timer0_isr(void){ EALLOW;ruptCount++;.GPIO0 = 1;.GPIO34 = 1;// Acknowledge this interrupt to receive more interrupts from group 1 K.all = PIEACK_GROUP1;}interrupt void cpu_timer1_isr(void){ EALLOW;ruptCount++;.GPIO1 = 1;// The CPU acknowledges the interrupt.EDIS;}interrupt void cpu_timer2_isr(void){ EALLOW;ruptCount++;.GPIO2 = 1;// The CPU acknowledges the interrupt.EDIS;}// 下面是配置GPIOvoid InitTimerGpio(void){EALLOW;X1.34 = 0;R.34 = 1;X1.0 = 0;R.0 = 1;X1.1 = 0;R.1 = 1;X1.2 = 0;R.2 = 1;EDIS;}四、课外学习任务1、进一步理解实验内容,在实验板上找到GPIO34连接的LED灯,试解读下面的程序代码:X1.34 = 0;R.34 = 1;2、总结实验内容及步骤写出实验报告。
实验三定时器实验实验报告
![实验三定时器实验实验报告](https://img.taocdn.com/s3/m/b97a852715791711cc7931b765ce0508763275c8.png)
实验三定时器实验实验报告一、实验目的1. 掌握定时器的基本概念;2. 学会使用定时器;3. 了解定时器的各种使用方法。
二、实验原理1. 定时器:定时器是单片机中一个重要的外设,是用来控制时间的。
AT89C51单片机中有2个定时器,它们分别是定时器0和定时器1。
定时器0和定时器1可以看作计时器,其作用是在每个指令的执行周期内加1,当计数器的值超过计数器的初始值后,会产生相应的中断信号来通知CPU。
2. 定时器的通用计数器模式:此模式中,定时器是单纯的计数器,没有和任何外设相连接,它的原理就是在每个时钟周期中向计数器加1,当计数器溢出时,就会产生中断信号,可以用来进行时间的计数,确定时间精度等应用。
此模式中,定时器将会和外部的时钟源相连接,通过在计数器内部计数,从而控制波形的输出,这种模式的应用非常广泛,如计时器、计时器、PWM波产生器等。
三、实验内容在本次实验中,我们将使用定时器的通用计数器模式来进行操作,首先需要配置定时器的工作模式,因为单片机中的定时器还有其他的工作模式,所以需要进行选择。
2. 设置定时时间及启动定时器在定时器配置好之后,需要将定时时间设置成所需的时间,并且启动定时器开始计时。
3. 检测中断并作出响应当定时器达到所设的时间时,会产生相应的中断信号,CPU会检测该中断信号并作出响应。
四、实验步骤首先选择所需的定时器,并进行相应的设置,比如计数器的内部工作频率,计时模式等。
根据需要的计时时间,将计数器的初始值设为所需的时间,在程序中添加相应的启动定时器的指令。
五、实验结果本次实验中,我们学会了使用定时器,并掌握了定时器的基本原理和使用方法,以及具体的应用方法。
定时器的应用非常广泛,是单片机的一个重要外设,相信在今后的学习和工作中,我们将会用到它,并更好地掌握它的应用。
实验三定时器
![实验三定时器](https://img.taocdn.com/s3/m/9c6f3871326c1eb91a37f111f18583d049640f01.png)
实验三定时器本实验是关于定时器的控制电路的设计和实现。
定时器是一个非常重要的电子元件,可以对于很多应用提供方便,如测量时间、计数等等。
本实验的主要目的是让学生们能够了解定时器的基本工作原理、掌握定时器控制电路的设计方法和实现技巧。
一、实验材料:1、IC555 定时器芯片一个2、按键开关一个3、电源继电器一个4、电源电容2200uF 一个5、电阻器(4.7K Ω 、10K Ω 、470 Ω 、100 Ω)各两个6、电位器100K Ω一个7、LED指示灯两个8、电源电压12V二、实验原理:定时器的工作原理是基于放电电容的电压变化的。
它是一个有源电路,具有一定的功耗。
三、实验内容:1、单稳态触发电路单稳态触发电路是通过一次触发(按键)使其输出电平由高变低,维持一定时间后,自动恢复为高电平,稳定在高电平。
单稳态触发电路的原理图如下所示。
其中C1为电容、R1、R2为电阻,R1和R2同时连接到端口2,当触发(按键)稳态电路会立即响应,使输出从低电平变为高电平约为15-20ms,这个时间常数来自于R1和C1的时间常数计算R2的值是必须改变的参数。
在这个高电平期间,C1被充电,达到激活单稳定器的阈值电压,输出端变为低电平,时间常数可以通过选择C1的容量大小来改变。
输出电平一直处于低电平,直到C1被放电到放电阈值电压,输出电平才会再次变为高电平,即单稳定状态结束。
下图为实际电路图。
其中G1、D1和R2组成多谐振荡电路。
当触发(按键)稳态电路会立即响应,由于5.1V Zener二极管的负阻特性,当5.1V电压被降低,输出电平变为低电平,并立即重新启动多/ 单稳态触发器,输出电平保持在低电平上。
在此情况下,可以通过多次按下触发,来控制输出时间。
下图为实际电路图。
四、实验步骤:1、按图一连接好电路。
2、将电源连接并逐步调整R2的阻值,观察实验现象。
3、观察电容中的电压变化曲线并记录下来。
第二部分多 / 单稳态触发电路五、实验结果与分析结果分析:1、在单稳态触发电路中,R1和R2同时连接在端口2,触发端口连接到电位器和耦合电容,当外部输入触发信号到达时,555的端口1屏蔽比较器将直接被触发。
实验三 定时器实验 实验报告
![实验三 定时器实验 实验报告](https://img.taocdn.com/s3/m/788db82daaea998fcc220e65.png)
课程名称:单片机实验题目:实验三定时实验学生姓名:专业:电子信息科学与技术班级:学号:指导教师:张涛实验三 定时器实验一、实验目的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)定时/计数器方式寄存器TMODTMOD 为T1、T2的工作方式寄存器,其格式如下:TMOD D7 D6 D5 D4 D3 D2 D1 D0(89H) TMOD 的低 (1(2)T /C :功能选择位。
0/C =时,设置为定时器工作方式;1/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)定时器/计数器控制寄存器TCONTCON 的作用是控制定时器的启动、停止,标志定时器的溢出和中断情况。
定时器控制字TCON 的格式如下:TCON (88H ) 8FH 8EH 8DH 8CH 8BH 8AH 89H 88H(1) TCON.7 TF1:定时器1溢出标志位。
实验三(一)(二)定时器与计数器功能认识与应用、扩展
![实验三(一)(二)定时器与计数器功能认识与应用、扩展](https://img.taocdn.com/s3/m/d2feed936bec0975f465e2c6.png)
实验三 定时器/计数器实验(一)一、实验目的通过实验了解定时器和计数器的不同应用。
进一步掌握定时器和计数器的编程和调试的方法。
二、实验内容要求学生自行设计并调试程序(教师可适当提示)1、自复位接通延时定时器电路(一个机器周期脉冲发生器电路)提示:先思考下面三个电路,根据定时器的刷新方式分析它们能否正常工作?不能工作的程序应如何修改?为了确保在每次定时器达到预置值时,自复位定时器的输出都能够接通一个程序扫描周期,用一个常闭触点来代替定时器位作为定时器的使能输入。
但一个程序扫描周期的脉冲过窄,在状态表中无法监视,为解决这种状况,可使用比较指令“LDW >= T33,+40”控制PLC 的某个输出点,再用状态图监视。
(思考:若想形成自复位计数器电路应如何编程?)知识回顾:定时器的刷新方式: 1ms 定时器每隔1ms 刷新一次与扫描周期和程序处理无关即采用中断刷新方式。
因此当扫描周期较长时,在一个周期内可能被多次刷新,其当前值在一个扫描周期内不一定保持一致。
10ms 定时器则由系统在每个扫描周期开始自动刷新。
由于每个扫描周期内只刷新一次,故而每次程序处理期间,其当前值为常数。
100ms 定时器则在该定时器指令执行时刷新。
下一条执行的指令,即可使用刷新后的结果,非常符合正常的思路,使用方便可靠。
但应当注意,如果该定时器的指令不是每个周期都执行,定时器就不能及时刷新,可能导致出错。
使用定时器本身的常闭触点作定时器的使能输入。
定时器的状态位置1时,依靠本身的常闭触点的断开使定时器复位,并重新开始定时,进行循环工作。
采用不同时基标准的定时器时,会有不同的运行结果,具体分析如下:(1)T32为1ms 时基定时器,每隔1ms 定时器刷新一次当前值,CPU 当前值若恰好在处理常闭触点和常开触点之间被刷新,Q0.0可以接通一个扫描周期,但这种情况出现的几率很小,一般情况下,不会正好在这时刷新。
若在执行其他指令时,定时时间到,1ms 的定时刷新,使定时器输出状态位置位,常闭触点打开,当前值复位,定时器输出状态位立即复位,所以输出线圈Q0.0一般不会通电。
实验三、定时器实验
![实验三、定时器实验](https://img.taocdn.com/s3/m/401602d2ba4cf7ec4afe04a1b0717fd5360cb26d.png)
实验报告本 指导老师: 班级: 姓名: 学号: 2011 ~2012 学年度第二学期广东石油化工学院计算机与电子信息学院 实验三、定时器实验 一、实验目的 1、熟悉DSP的定时器 2、掌握DSP定时器的控制方法 3、学会使用定时器中断方法控制程序流程 二、实验设备 计算机、ZYE1801C实验箱 三、实验原理 TMS320VC5402有两个16位的定时器,每个定时器带有一个4位预分频器PSC和16位定时计数器TIM。CLKOUT时钟先经 PSC预分频后,用分频的时钟再对TIM作减1计数,当TIM减为0时,将在定时器输出管脚TOUT上产生一个脉冲,同时产生定 时器中断请求,并将定时器周期寄存器PRD的值装入TIM。因此,定时器的工作受到三个寄存器的控制,即TIM、PRD、定时 器控制寄存器TCR。两个定时器分别有3个寄存器和相应的输出管脚TOUT。 TMS320VC5402的定时器可以被特定的状态位实现停止、重新启动、重新设置或禁止。可以使用该定时器产生周期性的CPU 中断。 1、TIMER REGIS算机与ZYE1801C 实验箱通过并口P1相连,运行CCS 软件。 2. 编写定时器中断程序,实现实验箱插板上红色指示灯的闪烁。
3. 调整定时延时系数TIMER ,观察指示灯闪烁延时的变化。 4. 调整寄存器PRD0,TCR0的值,观察指示灯的闪烁周期的变化。 五、思考题 1、本实验的定时时间是如何计算的? ()()11 ()(1)(1) c c c c TIN T RATE t u v t TD D R PRD = = ???+?+ 注:()c c t 是DSP 芯片时钟周期。 2、本实验系统采用的外部时钟输入,f=11.0592MHZ ,采用的是5倍频模式,请问该系统定时器的最大定时周期? 11.59ms 六、实验心得体会 通过本次实验,熟悉DSP 的定时器的原理和定时时间的计算,学会使用定时器中断方法控制程序流程,及DSP 开发板的使 用,以及要延时比较长时间的处理方法。
单片机实验三 定时器实验
![单片机实验三 定时器实验](https://img.taocdn.com/s3/m/860fc442e45c3b3567ec8b6d.png)
实验三:定时器实验一、实验要求实验目的:了解MCS-51单片机中定时器/计数器的基本结构、工作原理和工作方式,掌握工作在定时器模式下的编程方法。
实验内容:设单片机的晶振频率f=12Mhz,使用T0定时100ms,在p1.2引脚产生周期为200ms的方波信号,并通过示波器观察P1.2的输出波形。
二、实验原理定时器和外部计数方式选择位C/TC/T=0为定时器方式,采用晶振频率的1/12作为计数器的计数脉冲,几对及其周期进行计数。
若选择12MHz晶振,则定时器的计数频率为1MHz。
C/T=1为计数方式,采用外部引脚的输入脉冲作为计数脉冲。
当T0或T1输入发生由高到低的负跳变时,计数器加1,其最高计数频率为晶振频率的1/24。
工作方式2当TMOD的M1、M0未为10是,计时器/计数器工作在工作方式2.当方式0、方式1用于循环重复定时计数时,计数器全部为0,下一次计数还得重新装入计数初值,这样编程麻烦,而且影响定时时间的精度。
方式2是能自动重新装入计数初值的8位计数器,可以解决这个问题。
方式2把16位计数器分成两个8为的计数器,低8为作为计数器使用,高8位用以保存计数初值,当低8位计数产生溢出是,将TF0或TF1置1,同时又将保存在高8位的计数初值重新自动装入低8位计数器汇总,又继续计数,循环重复。
计数初值X=2^8-t*f osc/12;其中t为定时时间。
初试化编程是,TH0和TL0(或TH1和TL1)都装入次X值。
方式2适用于作较为精确的脉冲信号发生器,尤其适用于串口波特率发生器。
三、程序设计1、程序流程图图 1 定时器实验流程图2、程序代码ORG 0100HMAIN: MOV A, 0HMOV TMOD, #61H ;外部引脚脉冲计数,工作方式2MOV TL1, #0FFHMOV TH1, #0FFH ;计数1次,以CP1.0为脉冲连接计数器CPL P1.0SETB TR1;LP1: CPL P1.2LP2: MOV TL0, #0B0HMOV TH0, #3CH ;一次计数50ms,P1.0的脉冲周期为100msSETB TR0LP3: JBC TF0, LP4SJMP LP3LP4: CPL P1.0JBC TF1, LP1SJMP LP2END四、程序验证1、在Proteus中连接电路图如下:图 2 定时器实验电路图2、将程序导入A T89C523、按键观察电路中示波器波形:图 3 示波器上显示的周期为200ms的方波示波器1格为50ms,故产生的波形周期为200ms。
单片机 实验三中断及定时器实验
![单片机 实验三中断及定时器实验](https://img.taocdn.com/s3/m/1f47a472336c1eb91a375d61.png)
实验三:中断及定时器实验一、实验目的:1、弄清中断的概念、基本原理,掌握中断技术的应用2、了解中断初始化的方法,中断向量安装和中断服务子程序的设计方法。
3、了解定时/计数器的工作原理及MCS51单片机的定时器内部结构4、掌握时间常数计算方法5、掌握定时器初始化方法和定时中断程序设计方法二、实验内容:定时器实验1、这个是一个电子钟走时程序,利用定时器T0产生50ms中断,中断计数器中断20次为1秒,利用秒信号进行电子钟计时。
先读懂下面程序段,然后编辑、编译程序,并在伟福仿真器上模拟调试该程序。
程序清单如下:COUNT EQU 7FHCOUNT1 EQU 7EHS_MEM EQU 73HM_MEM EQU 72HH_MEM EQU 71HORG 0000HLJMP MAINORG 000BHLJMP INT_T0 ;“*1”MAIN: MOV SP,#2FHMOV TMOD,#BMOV TH0,#03CH ;50毫秒中断时间常数MOV TL0,#0BHMOV IE,#B ;开放T0MOV IP,#0MOV S_MEM,#0MOV M_MEM,#0MOV H_MEM,#0MOV COUNT,#20SETB TR0;______________________________________________________ W AIT:NOPSJMP W AITINT_T0: MOV TL0,#0BHMOV TH0,#3CHDJNZ COUNT,EXT_T0MOV COUNT,#20 ;恢复中断计数器INC S_MEM ;“*2”MOV A,S_MEMCJNE A,60,EXT_T0MOV S_MEM,#0INC M_MEMMOV A,M_MEMCJNE A,#60,EXT_T0MOV M_MEM,#0INC H_MEMMOV A,H_MEMCJNE A,#13,EXT_T0MOV H_MEM,#0EXT_T0: RETI2、按下列要求修改程序或回答问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三 定时器实验
一、实验目的
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.请写出实验过程中曾出现的问题和你的解决方法,你对实验有何感想和体会?。