实验6 定时器T1的使用

合集下载

【报告】单片机定时器计数器实验报告

【报告】单片机定时器计数器实验报告

【关键字】报告单片机定时器计数器实验报告篇一:单片机计数器实验报告计数器实验报告㈠实验目的1. 学习单片机内部定时/计数器的使用和编程方法;2. 进一步掌握中断处理程序的编程方法。

㈡实验器材1. 2. 3. 4. 5.G6W仿真器一台MCS—51实验板一台PC机一台电源一台信号发生器一台㈢实验内容及要求8051内部定时计数器,按计数器模式和方式1工作,对P3.4(T0)引脚进行计数,使用8051的T1作定时器,50ms中断一次,看T0内每50ms来了多少脉冲,将计数值送显(通过LED发光二极管8421码来表示),1秒后再次测试。

㈣实验说明1. 本实验中内部计数器其计数器的作用,外部事件计数器脉冲由P3.4引入定时器T0。

单片机在每个机器周期采样一次输入波形,因此单片机至少需要两个机器周期才能检测到一次跳变,这就要求被采样电平至少维持一个完整的机器周期,以保证电平在变化之前即被采样,同时这就决定了输入波形的频率不能超过机器周期频率。

2. 计数脉冲由信号发生器输入(从T0端接入)。

3. 计数值通过发光二极管显示,要求:显示两位,十位用L4~L1的8421码表示,个位用L8~L5的8421码表示4. 将脉搏检查模块接入电路中,对脉搏进行计数,计算出每分钟脉搏跳动次数并显示㈤实验框图(见下页)程序源代码ORG 00000H LJMP MAINORG 001BH AJMP MAIN1 MAIN:MOV SP,#60HMOV TMOD,#15H MOV 20H,#14H MOV TL1,#0B0H MOV TH1,#3CHMOV TL0,#00H;T0的中断入口地址;设置T1做定时器,T0做计数器,都于方式1工作;装入中断次数;装入计数值低8位;装入计数值高8位MOV TH0,#00HSETB TR1 ;启动定时器T1 SETB TR0 ;启动计数器T0 SETB ET1 ;允许T1中断SETB EA ;允许CPU中断SJMP $;等待中断MAIN1: PUSH PSW PUSH ACC CLR TR0CLR TR1 MOV TL1,#0B0H MOV TH1,#3CHDJNZ 20H,RETUNT MOV 20H ,#14HSHOW: MOV R0,TH0 MOV R1,TL0MOV A,R1 MOV B,#0AH DIV ABMOV C,ACC.3MOV P1.0,C MOV C,ACC.2 MOV P1.1,C MOV C,ACC.1 MOV P1.2,C MOV C,ACC.0 MOV P1.3,CMOV A,B MOV C,ACC.3MOV P1.4,C MOV C,ACC.2 MOV P1.5,C MOV C,ACC.1 MOV P1.6,C MOV C,ACC.0MOV P1.7,C ;保护现场;装入计数值低8位;装入计数值高8位,50ms;允许T1中断;未到1s,继续计时;1s到重新开始;显示计数器T0的值;读计数器当前值;将计数值转为十进制;显示部分,将A中保存的十位赋给L0~L3 将B中保存的各位转移到A中;将个位的数字显示在L4~L7上;RETUNT:MOV TL0,#00H;将计数器T0清零MOV TH0,#00HSETB TR0SETB TR1POP ACCPOP PSWRETI ;中断返回在频率为1000HZ时,L0~L7显示为50;频率为300HZ时,L0~L7显示为15,结果正确,程序可以正确运行。

单片机第六章定时器

单片机第六章定时器
计数溢出时,TFx置位。如果中断允许,CPU响应中 断并转入中断服务程序,由内部硬件清TFx。TFx也可以 由程序查询和清零。
这种方式下,计数寄存器由13位组成,即THx高八位(作计数器)
和TLx的低5位构成。TLx的高3位未用。
计数时,TLx的低5位溢出后向THx进位,THx溢出后 将TFx置位,并向CPU申请中断。
用软件控制,置 l时,启动 T1;清0时,停止 T1。
TF0(TCON.5)——T0的溢出标志。
TR0(TCON.4)——T0的运行控制位。
用软件控制,置1时,启动T0;清 0时,停止 T0。
• IE1(TCON.3)——外部中断1中断请求标志位。
• IE0(TCON.1)——外部中断0中断请求标志位。
器之外,还可用作串行接口的波特率发生器。
6.2
定时器/计数器T0、T1
T0、T1 的内部结构简图示于图6-1中。从图中 可以看出,T0、T1由以下几部分组成:
• 计数器TH0、TL0和TH1、TL1;


特殊功能寄存器TMOD、TCON;
时钟分频器;

输入引脚T0、T1。
6.2.1 与定时器/计数器T0、T1有关的 特殊功能寄存器
⑵定时器/计数器T1
T0方式3时,T1可以工作在方式0、1、2三种方式 T1的结构如图6–6所示。 由于T0占用了原来T1的启动位TR1和溢出标志TF1, 所以此时T1溢出时不能置位溢出标志,不能申请中断, 其溢出信号送给串行口,此时T1作为波特率发生器。
T1的启停由写入方式字控制,当写入方式0/1/2 时,T1立即启动,写入方式3 时,立即停止工作。
分析:设置T0工作在方式2,计数功能,每记满100个外 部脉冲,从P1.0输出一个低电平脉冲信号(简化的打包 操作)。

串口通信实验报告

串口通信实验报告

串⼝通信实验报告⼤连理⼯⼤学实验报告成绩:串⼝通信实验⼀、实验⽬的和要求了解串⼝通信的原理与机制掌握基于8051的串⼝通信硬件电路设计⽅法掌握8051串⼝通信程序调试⽅法⼆、实验原理和内容实验原理:1.串⼝通信简介串⼝通信是指数据在⼀根数据线上按照⼆进制数的数位⼀位接⼀位的传输。

其特点是通信线路简单,只要⼀对传输线就可以实现通信(如电话线),可⼤⼤地降低成本,适⽤于远距离通信。

缺点是传送速度慢。

2. 51单⽚机串⾏⼝简介51单⽚机的串⾏⼝是⼀个可编程全双⼯的通信接⼝,具有UART(通⽤异步收发器)的全部功能,能同时进⾏数据的发送和接收,也可以作为同步移位寄存器使⽤。

51单⽚机的串⾏⼝主要由两个独⽴的串⾏数据缓冲寄存器SBUF组成,它可以通过特殊功能寄存器SBUF对串⾏接收或串⾏发送寄存器进⾏访问,两个寄存器共⽤⼀个地址99H,但在物理上是两个独⽴的寄存器,由指令操作决定访问哪⼀个寄存器。

执⾏写指令时访问串⾏发送寄存器;执⾏读指令时,访问串⾏接收寄存器。

3.串⾏⼝控制寄存器SCON串⾏⼝控制寄存器SCON⽤来设定串⾏⼝的⼯作⽅式、接收或发送控制位以及状态标志位等。

在本实验中设定SM0为0,SM1为1,采⽤串⾏⼝的⼯作⽅式1(8位异步收发,波特率可变,由定时器控制)。

允许串⾏接收位REN设置为1,其它控制、标志位设置为0。

(即令SCON=0X50)4.定时器/计数器模式控制寄存器TMOD定时器/计数器模式控制寄存器TMOD是⼀个逐位定义的8位寄存器,其中低四位(即D0 ~ D3)定义定时器/计数器T0,⾼四位(即D4 ~ D7)定义定时器/计数器T1。

在本实验中使⽤定时器1,设定M1=1,M2=0,,采⽤定时器T1的⼯作⽅式2(⾃动重载8位定时器/计数器),其它控制位设置为0。

并由晶振频率(11.0592MHZ)和波特率(9600)计算初始化定时器T1:TH1=TL1=0xfd。

最后通过对TR1置1启动定时器T1。

7、CC2530 定时器T1的使用

7、CC2530 定时器T1的使用

1个
2
3、实验目的
TEL:15882009209 /
CC2530 的 Timer1 是一个独立的 16 位的定时/计数器,支持 5 条独立捕获/比较通道,每 个通道独立使用一个通用 I/O 口。可用于输入捕获、输出比较和 PWM 功能。让用户初步学 会使用定时器 T1。本实验用 LED1,LED2,LED3 灯为外设。
3
TEL:15882009209 /
#define ucha r unsigned cha r
#define RLED P1_0
//定义 LED1 为 P10 口控制
#define YLED P1_1
//定义 LED2 为 P11 口控制
#define GLED P1_4
4、实验相关寄存器
相关寄存器:P1,P1DIR,P1SEL,T1CTL,T1STAT,IRCON(前面以介绍过的这里不再重复介绍,寄存
器功能说明请参阅 CC2530Datasheet.pdf )
T1CTL(0XE4)
Timer1 控制寄存器:
Bit3:Bit2: 定时器时钟分频倍数选择
00::不分频 01:8 分频 10:32 分频 11:128 分频
if(counter==15) //中断计数,约 0.25s
{
counter =0;
LEDFlag = !LEDFlag;
}
}
if(LEDFlag)
{
YLED = RLED;
GLED = !YLED;
RLED = !RLED;
// 每 1s LED 灯闪烁一下
4
TEL:15882009209 /

}
/***************************

CC2530定时器使用

CC2530定时器使用

通过本次实验将会掌握定时器T1的一些简单用法。

本次实验学习到的新寄存器:T1STAT:定时器1的状态寄存器,D4~D0为通道4~通道0的中断标志,D5为溢出标志位,当计数到最终技术值是自动置1。

源代码:#include <ioCC2530.h>#define uint unsigned int#define uchar unsigned char#define LED1 P1_0 //定义LED1为P10口控制#define LED2 P1_1 //定义LED2为P11口控制#define LED3 P1_4 //定义LED3为P14口控制uint counter=0; //统计溢出次数uintLEDFlag; //标志是否要闪烁void InitialT1test(void); //初始化函数声明void InitialT1test(void){//初始化LED控制端口P1P1DIR = 0x13; //P10 P11 P14为输出P0DIR = 0x02;LED1 = 1;LED2 = 1;LED3 = 1;//初始化计数器1T1CTL = 0x05; //通道0,中断有效,8分频;自动重装模式(0x0000->0xffff)}void main(){InitialT1test(); //调用初始化函数while(1){if(IRCON==0x02) //查询溢出中断标志,是否有中断并且为定时器1发出的中断{IRCON = 0; //清溢出标志counter++;if(counter==30) //中断计数,约0.25s{counter =0;LED2 = LED1;LED3 = !LED2;LED1 = !LED1;LEDFlag = !LEDFlag;}}if(LEDFlag){LED2 = LED1;LED3 = !LED2;LED1 = !LED1; // 每1s LED灯闪烁一下LEDFlag = !LEDFlag; // 闪烁标志变量置0}}}实验总结:定时器1的工作原理:这次实验中定时器1工作在自由运行方式下,定时器1开始工作后从0x0000开始做加1计算,一直到0xffff。

单片机原理与应用技能比赛模拟试题与答案(五)

单片机原理与应用技能比赛模拟试题与答案(五)

5、要想测量INT0 引脚上的一个正脉冲宽度,那么特殊功能寄存器TMOD的内容可以为( A )。

A 、09HB 、87HC 、00HD 、80H单片机原理及应用技能比赛模拟试题(五)6、使用定时器T1时,有几种工作方式( C )A 、1 种B 、2 种C 、3 种D 、4 种一、填空题7、8031 单片机的定时器T1 用作定时方式时是( B )。

1、当定时器T0 工作在方式 3 时,要占用定时器T1 的TR1 和TF1 两个控制位。

A、由内部时钟频率定时,一个时钟周期加 1 B 、由内部时钟频率定时,一个机器周期加 12、在定时器T0 工作方式 3 下,TH0溢出时,TF1 标志将被硬件置 1 去请求中断。

C、由外部时钟频率定时,一个时钟周期加 1 D 、由外部时钟频率定时,一个机器周期加 13、在定时器T0 工作方式 3 下,欲使TH0停止工作,应执行一条CLR TR1 的指令。

8、8031 单片机的定时器T0 用作计数方式时是( C )。

4、使用定时器/ 计数器 1 设置串行通信的波特率时,应把定时器/ 计数器 1 设定作方式 2A、由内部时钟频率定时,一个时钟周期加 1 B 、由内部时钟频率定时,一个机器周期加 1,即自动重新加载方式。

C、由外部计数脉冲计数,下降沿加 1 D 、由外部计数脉冲计数,一个机器周期加 15、当计数器产生计数溢出时,把定时器/ 计数器的TF0(TF1)位置“1”。

对计数溢出的处理,在中断方式时,9、8031 单片机的定时器T1 用作计数方式时计数脉冲是( A )。

该位作为中断标志位使用;在查询方式时,该位作状态位使用。

A、外部计数脉冲由T1(P3.5 )输入 B 、外部计数脉冲由内部时钟频率提供6、在定时器工作方式 1 下,计数器的宽度为16 位,如果系统晶振频率为6MHz,则最大定时时间C 、外部计数脉冲由T0(P3.4 )输入D 、由外部计数脉冲计数为131.072ms ,若系统晶振频率为12MHz,则最大定时时间为65.536ms 。

基础实验五定时器T1的应用

基础实验五定时器T1的应用

实验五定时器T1的应用
【实验目的】
1、掌握CC2530的定时器查询方式使用方法;
2、掌握CC2530GPIO 的配制方法;
3、掌握IAR 编译环境的使用;
【实验设备】
【实验步骤】
第一步:打开...\IAR 基础实验\Timer1\Timer1.eww 工程
第二步:选择Debug 或Release 工程配置,配置正确的配置选项和文件,请参照基础实验一,通过点击Project 下拉菜单的Rebuild All项来编译应用工程,如下图
第三步:按CTRL+D 键或从Project 下拉菜单中单击“Download and Debug”菜单项,下载
应用程序
第四步:按F5 键或者从Debug 下拉菜单中单击“go”菜单项,运行应用程序。

第五步:查看实验结果,CC2530EN网关板上四个LED 指示灯的变化情况
【实验总结】
通过本次实验,不仅掌握了CC2530的定时器查询方式使用方法,还掌握了CC2530GPIO 的配制方法以及编译环境的使用;总的来说,这次实验让我收获很大,学到了很多实际应用的东西,希望下一次实验能有更大的进步。

第6讲 定时器与计数器

第6讲 定时器与计数器
≥1
TMOD T0引脚 0 M0 1 M1 C/T 0 机器周期 GATE M0 1 INT0引脚 M1 C/T GATE D7 D0
工作方式2结构
定时器T0工作方式2结构
溢出 申请 中断 申请 中断 TCON TF1 TR1 TF0 TR0 溢出 TH0 8位 T0引脚 1 TL0 8位 &
≥1
四、定时计数器控制寄存器
1、工作方式控制寄存器TMOD
C/T用于选择定时或计数方式,定时计数器4种工作方式 可通过TMOD中的M1、M0进行选择。
MCS-51单片机将门控位GATE、定时计数方式选择位C/T、
工作方式选择位M1、M0组合在工作方式控制寄存器TMOD 中,TMOD是特殊功能寄存器,字节地址为89H。TMOD共8位, 低4位用于T0的工作方式选择,高4位用于T1的工作方式选择。 各位定义如下:
每个计数脉冲使加1计数器加1。(f< fosc/24 ,)
4. 加1计数器
加1计数器由特殊功能寄存器TH0与TL0组成,工作前应
先将TH0与TL0置初值Count。然后由定时或计数脉冲使加1计
数器加1,当加1计数器加到FFFFH后再加1时,发生溢出回零,
硬件自动将中断标志TF0置1,并以此向CPU发中断请求。 溢出回零后硬件要完成以下几项工作: ① 将溢出标志TF0置1。 ② 以TF0=1为标志向CPU发中断请求信号。 ③ 若CPU响应,则在响应过程中由硬件将TF0清零。并转入中断 处理程序执行定时或计数任务。
工作方式
00; 01; M1M0 = 10; 11;
加1计数器位数
13位 16位
加1计数器
TH15~8,TL4~0 TH15~8,TL7~0
方式0 方式1 方式2 方式3
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

具体源代码如下:
/****************************************************************
*****
* init 函数:初始化系统 IO,定时器 T1 控制状态寄存器
*****************************************************************
且为定时器 1 发出的中断
{ IRCON &= ~0x02;
//清溢出标志
counter++;
if(counter==30) // 中 断 计 数 , 约 0.5s
(32/8)*10^6/65535/30=2Hz
{
counter =0;
LED1 = !LED1;
LED2 = !LED2;
}
}
}
}
3. 配置项目设置
* 函数名称:init * 功 能:初始化系统 IO,定时器 T1 控制状态寄存器 * 入口参数:无 * 出口参数:无 * 返 回 值:无
********************************************************************/ void init(void) { P1SEL &= ~0x03; // 设置 LED1、LED2 为普通 IO 口 P1DIR |= 0x03 ; // 设置 LED1、LED2 为输出 LED1 = 0; LED2 = 1; //灭 LED T1CTL = 0x05; // T1 通 道 0 , 8 分 频 ; 自 动 重 载 模 式
#define LED1 P1_0 #define LED2 P1_1
// P1_0 定义为 P1.0 // P1_1 定义为 P1.1
unsigned int counter=0; //统计溢出次数
/**************************************************************** *****
while(1) ; }
* 功 能:定时器 T1 中断服务子程序
********************************************************************/ #pragma vector = T1_VECTOR //中断服务子程序 __interrupt void T1_ISR(void) { counter++; if(counter>=30){ counter=0; LED2 = LED1; LED1 = !LED1; } T1IF=0; //清 T1 的中断请求 }
参照实验 1 的操作步骤,配置项目设置。
4. 下载程序到 CC2530
参照实验 1 的操作步骤,下载程序到 CC2530 进行调试。
【思考题】
本实验使用的是查询方式,CPU 需要不停做状态检测,浪费了 CPU 资源。如
何改写程序,可以将本实验改为中断方式,当发生溢出中断时停止执行 main 函
数,转为执行中断服务子程序。
(0x0000->0xffff); CLKCONCMD &= 0x80;
}
//时钟速度设置为 32MHz
/**************************************************************** *****
*口参数:无 * 返 回 值:无
实验 6 定时器 T1 的使用
【实验目的】 通过本实验的学习,使实验者熟悉 CC2530 芯片的定时器 1 的计数模式配置 及使用方法。 【实验内容】 用定时器 1 来改变小灯的状态,T1 每溢出 30 次,LED1、LED2 小灯状态改变 一次,且 LED1 亮时 LED2 灭。 【实验原理】 定时器 1 是一个独立的 16 位定时器,支持典型的定时器/计数器功能,例如 输入捕获脚。该定时器应用于范围广泛的控制和测量应用,具有 5 通道的正计数 /倒计数模式将允许诸如马达控制应用的实现。定时器 1 的特性如下: 5 个捕获/比较通道 上升沿、下降沿或任何边沿的输入捕获 置位、归零或切换输出比较 自由执行、正计数模式/倒计数模式 可被 1,8,32 或 128 整除的时钟分频器 在每个捕获/比较和最终计数上产生中断请求 DMA 触发功能 实验中定时器 1 工作在自由运行方式下,定时器 1 开始工作后从 0x0000 开 始做加 1 计算,一直到 0xffff。0xffff 再加 1 则溢出,发生溢出中断。此时定 时器将发出一个溢出中断请求并将 IRCON 的 D1 为置 1。此后,定时器自动重新 计数,再次从 0x0000 计数到 0xffff。 【实验步骤】 1.建立一个新项目 参照实验 1 操作步骤,在指定路径建立一个新的工作空间“Test06”,在该 空间下新建一个 IAR 项目“timerPrj1.ewp” 并保存。 2.添加或新建程序文件 参照实验 1 的操作步骤, 往项目中添加或者新建程序文件 timer1.c。
********************************************************************/
void main(void)
{
init(); //调用初始化函数
unsigned int counter=0; //统计溢出次数
while(1)
{
if( (IRCON & 0x02)==0x02) //查询溢出中断标志,是否有中断并
(0x0000->0xffff);
IEN1 |=0X02;
//定时器 1 中断使能
EA=1;
//开总中断
CLKCONCMD &= 0x80; //时钟速度设置为 32MHz
}
/**************************************************************** *****
/**************************************************************** *****
* main 函数: main 函数入口 ***************************************************************** ***/ void main(void) { init(); //调用初始化函数
【实验相关代码】 /**************************************************************** ****/ #include "ioCC2530.h" // 引用头文件,包含对 CC2530 的寄存器、中断向 量等的定义 /**************************************************************** ****/ //定义 led 灯端口:p1.3, p1.4:
***/
void init(void)
{ P1SEL &= ~0x03; // 设置 LED1、LED2 为普通 IO 口
P1DIR |= 0x03 ; // 设置 LED1、LED2 为输出
LED1 = 0;
LED2 = 0;
T1CTL = 0x05;
// T1 通 道 0 , 8 分 频 ; 自 动 重 载 模 式
相关文档
最新文档