⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timer.h

📁 西安明朗公司开发板ML-F020ICB的全部测试代码
💻 H
📖 第 1 页 / 共 3 页
字号:
/************************************************************************************
*  Copyright (c) 2004,西安铭朗电子科技有限责任公司
*            All rights reserved.
*
* 文件名称: dac.c
* 文件标识: none
* 适用器件: C8051F020/1/2/3
* 
* 摘 要: 本文件是Timer硬件驱动程序头文件
* 
* 当前版本: 1.1
* 作 者: 李林利
* 完成日期: 2006年9月24日
* 
* 当前版本: 1.0
* 作 者: 李林利
* 完成日期: 2004年11月14日
*
* 历史版本: 0.9 
* 原作者 : 李林利
* 完成日期: 2004年1月1日
*************************************************************************************/
/*************************************************************************************
* Timer寄存器常量定义 
*************************************************************************************/
/************************************************************************************
CKCON:  0x8E   时钟控制寄存器

R/W R/W R/W R/W R/W R/W R/W R/W 复位值
- T4M T2M T1M T0M 保留保留保留00000000
位7 位6 位5 位4 位3 位2 位1 位0 SFR地址:0x8E

位7: 未用。读=0b,写=忽略。
位6: T4M:定时器4 时钟选择。
		   方式或计数器方式(即C/T4=1)时该位被忽略。
		0:定时器4 使用系统时钟的12 分频
		1:定时器4 使用系统时钟
位5: T2M:定时器2 时钟选择。
		   方式或计数器方式(即C/T2=1)时该位被忽略。
		0:定时器2 使用系统时钟的12 分频
		1:定时器2 使用系统时钟
位4: T1M:定时器1 时钟选择。
		   该位控制提供给定时器1 的系统时钟的分频数。
		0:定时器1 使用系统时钟的12 分频
		1:定时器1 使用系统时钟
位3: T0M:定时器0 时钟选择。
		   该位控制提供给定时器0 的系统时钟的分频数。
		0:计数器/定时器使用系统时钟的12 分频
		1:计数器/定时器使用系统时钟
位2-0: 保留。读=000b,写入值必须是000。
************************************************************************************/
// 常量定义:
#define T0M		0x08	//TIMER0,T0M = 0:系统时钟/12; T0M = 1:系统时钟
#define TIM		0x10	//TIMER1,TIM = 0:系统时钟/12; TIM = 1:系统时钟
#define T2M		0x20	//TIMER2,T2M = 0:系统时钟/12; T2M = 1:系统时钟
#define T4M		0x40	//TIMER4,T4M = 0:系统时钟/12; T4M = 1:系统时钟

/************************************************************************************
TCON:  0x88,  T0,T1控制寄存器

R/W R/W R/W R/W R/W R/W R/W R/W 复位值
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 00000000
位7 位6 位5 位4 位3 位2 位1 位0
(可位寻址) SFR地址:0x88
位7: TF1:定时器1 溢出标志
		   当定时器1 溢出时由硬件置位。该位可以用软件清0,但当CPU 转向定时器1
		   中断服务程序时该位被自动清0。
		0:未检测到定时器1 溢出。
		1:定时器1 发生溢出。
位6: TR1:定时器1 运行控制
		0:定时器1 禁止。
		1:定时器1 允许。
位5: TF0:定时器0 溢出标志
		   当定时器0 溢出时由硬件置位。该位可以用软件清0,但当CPU 转向定时器0
		   中断服务程序时该位被自动清0。
		0:未检测到定时器0 溢出。
		1:定时器0 发生溢出。
位4: TR0:定时器0 运行控制
		0:定时器0 禁止
		1:定时器0 允许
位3: IE1:外部中断1
		   当检测到一个由IT1 定义的边沿/电平时,该标志由硬件置位。该位可以用软件
		   清0,但当CPU 转向外部中断1 中断服务程序时该位被自动清0(如果IT1=1)。
		   当IT1=0 时,该标志是/INT1 输入信号的逻辑电平取反。
位2: IT1:中断1 类型选择
		   该位选择/INT1 信号检测下降沿中断还是检测低电平有效中断。
		0:/INT1 为电平触发
		1:/INT1 为边沿触发
位1: IE0:外部中断0
		   当检测到一个由IT0 定义的边沿/电平时,该标志由硬件置位。该位可以用软件
		   清0,但当CPU 转向外部中断0 中断服务程序时该位被自动清0(如果IT0=1)。
		   当IT0=0 时,该标志是/INT0 输入信号的逻辑电平取反。
位0: IT0:中断0 类型选择
		   该位选择/INT0 信号检测下降沿中断还是检测低电平有效中断。
		0:/INT0 为电平触发
		1:/INT0 为边沿触发
*************************************************************************************/
// 常量定义:
#define _TF1	0x80
#define _TR1	0x40
#define _TF0	0x20
#define _TR0	0x10
#define _IE1	0x08
#define _IT1	0x04
#define _IE0	0x02
#define _IT0	0x01
/************************************************************************************
TMOD:0x89, T0,T1定时器方式寄存器

R/W R/W R/W R/W R/W R/W R/W R/W 复位值
GATE1 C/T1 T1M1 T1M0 GATE0 C/T0 T0M1 T0M0 00000000
位7 位6 位5 位4 位3 位2 位1 位0 SFR地址:0x89

位7: GATE1:定时器1 门控位
		0:当TR1=1 时定时器1 被允许,与/INT1 的逻辑电平无关。
		1:只有当TR1=1 并且/INT1=逻辑1 时定时器1 被允许。
位6: C/T1:计数器/定时器1 功能选择。
		0:定时器功能:定时器1 由T1M 位(CKCON.4)定义的时钟加1。
		1:计数器功能:定时器1 由外部输入引脚(T1)的负跳变加1。
位5-4: T1M1-T1M0:定时器1 方式选择
		这些位选择定时器1 的工作方式。
		T1M1 T1M0 方式
		0 0 方式0:13 位计数器/定时器
		0 1 方式1:16 位计数器/定时器
		1 0 方式2:自动重装载的8 位计数器/定时器
		1 1 方式3:定时器1 停止运行
位3: GATE0:定时器0 门控位
		0:当TR0=1 时定时器0 被允许,与/INT0 的逻辑电平无关。
		1:只有当TR0=1 并且/INT0=逻辑1 时定时器1 被允许。
位2: C/T0:计数器/定时器0 功能选择。
		0:定时器功能:定时器0 由T0M 位(CKCON.3)定义的时钟加1。
		1:计数器功能:定时器0 由外部输入引脚(T0)的负跳变加1。
位1-0: T0M1-T0M0:定时器0 方式选择
		这些位选择定时器0 的工作方式。
		T0M1 T0M0 方式
		0 0 方式0:13 位计数器/定时器
		0 1 方式1:16 位计数器/定时器
		1 0 方式2:自动重装载的8 位计数器/定时器
		1 1 方式3:双8 位计数器/定时器
*************************************************************************************/
// 常量定义:
#define GATE1	0x80
#define C_T1	0x40
#define T1M00	0x00
#define T1M01	0x10
#define T1M10	0x20
#define T1M11	0x30

#define GATE0	0x08
#define C_T0	0x04
#define T0M00	0x00
#define T0M01	0x01
#define T0M10	0x02
#define T0M11	0x03

/************************************************************************************
T0,T1定时器计数值寄存器

TL0:定时器0 低字节
R/W R/W R/W R/W R/W R/W R/W R/W 复位值 00000000
位7 位6 位5 位4 位3 位2 位1 位0 SFR地址:0x8A
位7-0: 
TL0:定时器0 低字节
TL0 寄存器是16 位定时器0 的低字节。

TL1:定时器1 低字节
R/W R/W R/W R/W R/W R/W R/W R/W 复位值00000000
位7 位6 位5 位4 位3 位2 位1 位0 SFR地址:0x8B
位7-0: 
TL1:定时器1 低字节
TL1 寄存器是16 位定时器1 的位字节。

TH0:定时器0 高字节
R/W R/W R/W R/W R/W R/W R/W R/W 复位值00000000
位7 位6 位5 位4 位3 位2 位1 位0 SFR地址:0x8C
位7-0: 
TH0:定时器0 高字节
TH0 寄存器是16 位定时器0 的高字节。

TH1:定时器1 高字节
R/W R/W R/W R/W R/W R/W R/W R/W 复位值00000000
位7 位6 位5 位4 位3 位2 位1 位0 SFR地址:0x8D
位7-0: 
TH1:定时器1 高字节
TH1 寄存器是16 位定时器1 的高字节。
*************************************************************************************/
// 常量定义:无

/************************************************************************************
T2CON:0xC8,定时器2 控制寄存器

R/W R/W R/W R/W R/W R/W R/W R/W 复位值
TF2 EXF2 RCLK0 TCLK0 EXEN2 TR2 C/T2 CP/RL2 00000000
位7 位6 位5 位4 位3 位2 位1 位0
(可位寻址) SFR地址:0xC8

位7: TF2:定时器2 溢出标志
		   当定时器2 溢出时由硬件置位。当定时器2 中断被允许时,该位置1 导致CPU
		   转向定时器2 的中断服务程序。该位不能由硬件自动清0,必须用软件清0。
		   当RCLK0 和/或TCLK0 为逻辑1 时,TF2 不会被置1。
位6: EXF2:定时器2 外部标志
		    当T2EX 输入引脚的负跳变导致发生捕捉或重载并且EXEN2 为逻辑1 时,该
		    位由硬件置位。在定时器2 中断被允许时,该位置‘1’使CPU 转向定时器2
		    的中断服务程序。该位不能由硬件自动清0,必须用软件清0。
位5: RCLK0:UART0 接收时钟标志
		     选择UART0 工作在方式1 或3 时接收时钟使用的定时器。
		  0:定时器1 溢出作为接收时钟。
		  1:定时器2 溢出作为接收时钟。
位4: TCLK0:UART0 发送时钟标志
		     选择UART0 工作在方式1 或3 时发送时钟使用的定时器。
		  0:定时器1 溢出作为发送时钟。
		  1:定时器2 溢出作为发送时钟。
位3: EXEN2:定时器2 外部允许
			 当定时器2 不是工作在波特率发生器方式时,允许T2EX 上的负跳变触发
			 捕捉或重载。
		  0:T2EX 上的负跳变被忽略。
		  1:T2EX 上的负跳变导致一次捕捉或重载。
位2: TR2:定时器2 运行控制
		   该位允许/禁止定时器2。
		0:定时器2 禁止。
		1:定时器2 允许。
位1: C/T2:计数器/定时器功能选择
		 0:定时器功能:定时器2 由T2M(CKCON.5)定义的时钟加1。
		 1:计数器功能:定时器2 由外部输入引脚(T2)的负跳变加1。
位0: CP/RL2:捕捉/重载选择
		      该位选择定时器2 为捕捉还是自动重装载方式。EXEN2 必须为逻辑1 才能使
			  T2EX 上的负跳变能够被识别并用于触发捕捉和重载。若RCLK0 或TCLK0 被
		      置位,该位将被忽略,定时器2 将工作在自动重装载方式。
		   0:当定时器2 溢出或T2EX 上发生负跳变时将自动重装载(EXEN2=1)。
		   1:在T2EX 发生负跳变时捕捉(EXEN2=1)。
*************************************************************************************/
// 常量定义:
#define _TF2	0x80
#define _EXF2	0x40
#define _RCLK0	0x20
#define _TCLK0	0x10
#define _EXEN2	0x08
#define _TR2	0x04
#define _C_T2	0x02
#define _CP_RL2 0x01

/************************************************************************************
T2定时器计数值寄存器

RCAP2L:定时器2 捕捉寄存器低字节
R/W R/W R/W R/W R/W R/W R/W R/W 复位值00000000
位7 位6 位5 位4 位3 位2 位1 位0 SFR地址:0xCA
位7-0: 
RCAP2L:定时器2 捕捉寄存器的低字节
		当定时器2 被配置为捕捉方式时,RCAP2L 寄存器捕捉定时器2 的低字节。当
		定时器2 被配置为自动重装载方式时,它保存重载值的低字节。

RCAP2H:定时器2 捕捉寄存器高字节
R/W R/W R/W R/W R/W R/W R/W R/W 复位值00000000
位7 位6 位5 位4 位3 位2 位1 位0 SFR地址:0xCB

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -