c51 定时器计数器控制字

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

C51定时器/计数器的控制字

2008-01-22 21:57

1、定时器/计数器的方式寄存器TMOD

TMOD是一个8位的特殊功能寄存器,对应的地址是89H,不可位寻址。

A 主要完成三个功能:

*确定选择定时器还是计数器;

*选择何种工作方式;

*是否借用外中断控制定时器和计数器的启停;

B TMOD的低4位是控制T0的字段(T0--P3.4 定时器/计数器0外部事件脉冲输入端)

TMOD的高4位是控制T1的字段(T1--P3.5定时器/计数器1外部事件脉冲输入端)

C 控制字的格式和含义

a、GATE(TMOD.7)

分为两种情况:GATE=0,定时器的启停和INT1无关,只取决于

TR0;

GATE=1,定时器的启停不仅要由TR0来控制,而且要INT1引脚的控制,只有二者

都为高电平时定时器才开始工作;

b、C/T(TMOD.6)

分为两种情况:C/T=0,用作定时器;

C/T=1,用作计数器;

d、M1(TMOD.5),M0(TMOD.4)

用M1,M0来控制定时器/计数器的4种工作方式:

*方式0:M1=0,M0=0.13位定时/计数方式

*方式1:M1=0,M0=1.16位定时/计数器

*方式2,M1=1,M0=0.8位初值自动重新装入的8位定时/计数器

*方式3,M1=1,M0=1.仅适用于T0,分为两个8位计数器,T1停

止计数

2、定时器/计数器控制寄存器TCON

TCON是一个8位的特殊功能寄存器,对应的地址为88H,可为寻址。

A 控制字的格式和含义

a、TF1(TCON.7),TF0(TCON.5)----T1、T0计数溢出标志位

当计数器计数溢出时,该位置“1”。使用查询方式时,此位作为

状态位供cpu

查询,但应注意在查询该位有效后应以软件方法及时将该位清“0 ”。使用中断方式时,此位作为中断申请标志位,进入中断服务程序后由硬件自动清0.

b、TR1(TCON.6),TR0(TCON.4)----计数运行控制位

TR1(TR0)=1,启动定时/计数器工作的必要条件,还与GATE位的状态有关。

TR1(TR0)=0,停止定时/计数器工作。

该位可由软件置1或清0.

c、IE1(TCON.3),IE0(TCON.1)----外部中断INT1(P3.3)、INT0

(P3.2)的中断请求标志位。当有外部的中断请求时,INT1(INT0)=1(有硬件完成),在cpu响应中断后,由硬件将IE1(IE0)清0.

d、IT1(TCON.2),IT0(TCON.0)----INT1(INT0)触发方式控制位

可由软件进行置位和复位。IT0(IT1)=0,INT0(INT1)为低电平触

发方式; IT0(IT1)=1,INT0(INT1)为负跳变触发方式;

3、中断允许寄存器IE

在51中断系统中,中断的允许或禁止是由片内可进行位寻址的8位中断允许寄存器IE来

控制的

EA(IE.7):总开关,如果它等于0,则所有中断都不允许;

ES(IE.4):串行口中断允许;

ET1:定时器1中断允许;

EX1:外中断1中断允许;

ET0:定时器0中断允许;

EX0;外中断0中断允许;

4、5个中断源的优先级

单片机的中断服务入口地址如下,它们的自然优先级由高到低排列。

外中断0:0003H;

定时器0:000BH;

外中断1:0013H;

定时器1:001BH;

串口:0023H;

采用c51的编程语言,该语言中断服务函数的完整语法如下:

返回值函数名称(【参数】)【模式】【重入】interrupt n 【using n】

interrupt对应的是中断源的编号,而【using】决定了使用寄存器

的组号。这里,需要对

寄存器的组号进行简单的解释。51系统中有4个寄存器组,具体的位置取决于psw(程序状态字)

的两位RS0、RS1的设置。当运行一个中断任务时,采用不同的寄存器组。在c51

中,寄存器组的选择就取决于using后的变量的指定,变量位0~3的整数。

在这里给出不同中断服务程序的c51程序写法:

*外中断INT0--------void intsvr0(void) interrupt 0 using 1

*定时/计数器T0-----void timer0(void) interrupt 1 using 1

*外中断INT1--------void intsvr0(void) interrupt 2 using 1

*定时/计数器T1-----void timer0(void) interrupt 3 using 1

*串口中断----------void serial0 interrupt 4 using 1

相关文档
最新文档