?? timer.h
字號(hào):
/************************************************************************************
* Copyright (c) 2004,西安銘朗電子科技有限責(zé)任公司
* All rights reserved.
*
* 文件名稱: dac.c
* 文件標(biāo)識(shí): none
* 適用器件: C8051F020/1/2/3
*
* 摘 要: 本文件是Timer硬件驅(qū)動(dòng)程序頭文件
*
* 當(dāng)前版本: 1.1
* 作 者: 李林利
* 完成日期: 2006年9月24日
*
* 當(dāng)前版本: 1.0
* 作 者: 李林利
* 完成日期: 2004年11月14日
*
* 歷史版本: 0.9
* 原作者 : 李林利
* 完成日期: 2004年1月1日
*************************************************************************************/
/*************************************************************************************
* Timer寄存器常量定義
*************************************************************************************/
/************************************************************************************
CKCON: 0x8E 時(shí)鐘控制寄存器
R/W R/W R/W R/W R/W R/W R/W R/W 復(fù)位值
- T4M T2M T1M T0M 保留保留保留00000000
位7 位6 位5 位4 位3 位2 位1 位0 SFR地址:0x8E
位7: 未用。讀=0b,寫(xiě)=忽略。
位6: T4M:定時(shí)器4 時(shí)鐘選擇。
方式或計(jì)數(shù)器方式(即C/T4=1)時(shí)該位被忽略。
0:定時(shí)器4 使用系統(tǒng)時(shí)鐘的12 分頻
1:定時(shí)器4 使用系統(tǒng)時(shí)鐘
位5: T2M:定時(shí)器2 時(shí)鐘選擇。
方式或計(jì)數(shù)器方式(即C/T2=1)時(shí)該位被忽略。
0:定時(shí)器2 使用系統(tǒng)時(shí)鐘的12 分頻
1:定時(shí)器2 使用系統(tǒng)時(shí)鐘
位4: T1M:定時(shí)器1 時(shí)鐘選擇。
該位控制提供給定時(shí)器1 的系統(tǒng)時(shí)鐘的分頻數(shù)。
0:定時(shí)器1 使用系統(tǒng)時(shí)鐘的12 分頻
1:定時(shí)器1 使用系統(tǒng)時(shí)鐘
位3: T0M:定時(shí)器0 時(shí)鐘選擇。
該位控制提供給定時(shí)器0 的系統(tǒng)時(shí)鐘的分頻數(shù)。
0:計(jì)數(shù)器/定時(shí)器使用系統(tǒng)時(shí)鐘的12 分頻
1:計(jì)數(shù)器/定時(shí)器使用系統(tǒng)時(shí)鐘
位2-0: 保留。讀=000b,寫(xiě)入值必須是000。
************************************************************************************/
// 常量定義:
#define T0M 0x08 //TIMER0,T0M = 0:系統(tǒng)時(shí)鐘/12; T0M = 1:系統(tǒng)時(shí)鐘
#define TIM 0x10 //TIMER1,TIM = 0:系統(tǒng)時(shí)鐘/12; TIM = 1:系統(tǒng)時(shí)鐘
#define T2M 0x20 //TIMER2,T2M = 0:系統(tǒng)時(shí)鐘/12; T2M = 1:系統(tǒng)時(shí)鐘
#define T4M 0x40 //TIMER4,T4M = 0:系統(tǒng)時(shí)鐘/12; T4M = 1:系統(tǒng)時(shí)鐘
/************************************************************************************
TCON: 0x88, T0,T1控制寄存器
R/W R/W R/W R/W R/W R/W R/W R/W 復(fù)位值
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 00000000
位7 位6 位5 位4 位3 位2 位1 位0
(可位尋址) SFR地址:0x88
位7: TF1:定時(shí)器1 溢出標(biāo)志
當(dāng)定時(shí)器1 溢出時(shí)由硬件置位。該位可以用軟件清0,但當(dāng)CPU 轉(zhuǎn)向定時(shí)器1
中斷服務(wù)程序時(shí)該位被自動(dòng)清0。
0:未檢測(cè)到定時(shí)器1 溢出。
1:定時(shí)器1 發(fā)生溢出。
位6: TR1:定時(shí)器1 運(yùn)行控制
0:定時(shí)器1 禁止。
1:定時(shí)器1 允許。
位5: TF0:定時(shí)器0 溢出標(biāo)志
當(dāng)定時(shí)器0 溢出時(shí)由硬件置位。該位可以用軟件清0,但當(dāng)CPU 轉(zhuǎn)向定時(shí)器0
中斷服務(wù)程序時(shí)該位被自動(dòng)清0。
0:未檢測(cè)到定時(shí)器0 溢出。
1:定時(shí)器0 發(fā)生溢出。
位4: TR0:定時(shí)器0 運(yùn)行控制
0:定時(shí)器0 禁止
1:定時(shí)器0 允許
位3: IE1:外部中斷1
當(dāng)檢測(cè)到一個(gè)由IT1 定義的邊沿/電平時(shí),該標(biāo)志由硬件置位。該位可以用軟件
清0,但當(dāng)CPU 轉(zhuǎn)向外部中斷1 中斷服務(wù)程序時(shí)該位被自動(dòng)清0(如果IT1=1)。
當(dāng)IT1=0 時(shí),該標(biāo)志是/INT1 輸入信號(hào)的邏輯電平取反。
位2: IT1:中斷1 類(lèi)型選擇
該位選擇/INT1 信號(hào)檢測(cè)下降沿中斷還是檢測(cè)低電平有效中斷。
0:/INT1 為電平觸發(fā)
1:/INT1 為邊沿觸發(fā)
位1: IE0:外部中斷0
當(dāng)檢測(cè)到一個(gè)由IT0 定義的邊沿/電平時(shí),該標(biāo)志由硬件置位。該位可以用軟件
清0,但當(dāng)CPU 轉(zhuǎn)向外部中斷0 中斷服務(wù)程序時(shí)該位被自動(dòng)清0(如果IT0=1)。
當(dāng)IT0=0 時(shí),該標(biāo)志是/INT0 輸入信號(hào)的邏輯電平取反。
位0: IT0:中斷0 類(lèi)型選擇
該位選擇/INT0 信號(hào)檢測(cè)下降沿中斷還是檢測(cè)低電平有效中斷。
0:/INT0 為電平觸發(fā)
1:/INT0 為邊沿觸發(fā)
*************************************************************************************/
// 常量定義:
#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定時(shí)器方式寄存器
R/W R/W R/W R/W R/W R/W R/W R/W 復(fù)位值
GATE1 C/T1 T1M1 T1M0 GATE0 C/T0 T0M1 T0M0 00000000
位7 位6 位5 位4 位3 位2 位1 位0 SFR地址:0x89
位7: GATE1:定時(shí)器1 門(mén)控位
0:當(dāng)TR1=1 時(shí)定時(shí)器1 被允許,與/INT1 的邏輯電平無(wú)關(guān)。
1:只有當(dāng)TR1=1 并且/INT1=邏輯1 時(shí)定時(shí)器1 被允許。
位6: C/T1:計(jì)數(shù)器/定時(shí)器1 功能選擇。
0:定時(shí)器功能:定時(shí)器1 由T1M 位(CKCON.4)定義的時(shí)鐘加1。
1:計(jì)數(shù)器功能:定時(shí)器1 由外部輸入引腳(T1)的負(fù)跳變加1。
位5-4: T1M1-T1M0:定時(shí)器1 方式選擇
這些位選擇定時(shí)器1 的工作方式。
T1M1 T1M0 方式
0 0 方式0:13 位計(jì)數(shù)器/定時(shí)器
0 1 方式1:16 位計(jì)數(shù)器/定時(shí)器
1 0 方式2:自動(dòng)重裝載的8 位計(jì)數(shù)器/定時(shí)器
1 1 方式3:定時(shí)器1 停止運(yùn)行
位3: GATE0:定時(shí)器0 門(mén)控位
0:當(dāng)TR0=1 時(shí)定時(shí)器0 被允許,與/INT0 的邏輯電平無(wú)關(guān)。
1:只有當(dāng)TR0=1 并且/INT0=邏輯1 時(shí)定時(shí)器1 被允許。
位2: C/T0:計(jì)數(shù)器/定時(shí)器0 功能選擇。
0:定時(shí)器功能:定時(shí)器0 由T0M 位(CKCON.3)定義的時(shí)鐘加1。
1:計(jì)數(shù)器功能:定時(shí)器0 由外部輸入引腳(T0)的負(fù)跳變加1。
位1-0: T0M1-T0M0:定時(shí)器0 方式選擇
這些位選擇定時(shí)器0 的工作方式。
T0M1 T0M0 方式
0 0 方式0:13 位計(jì)數(shù)器/定時(shí)器
0 1 方式1:16 位計(jì)數(shù)器/定時(shí)器
1 0 方式2:自動(dòng)重裝載的8 位計(jì)數(shù)器/定時(shí)器
1 1 方式3:雙8 位計(jì)數(shù)器/定時(shí)器
*************************************************************************************/
// 常量定義:
#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定時(shí)器計(jì)數(shù)值寄存器
TL0:定時(shí)器0 低字節(jié)
R/W R/W R/W R/W R/W R/W R/W R/W 復(fù)位值 00000000
位7 位6 位5 位4 位3 位2 位1 位0 SFR地址:0x8A
位7-0:
TL0:定時(shí)器0 低字節(jié)
TL0 寄存器是16 位定時(shí)器0 的低字節(jié)。
TL1:定時(shí)器1 低字節(jié)
R/W R/W R/W R/W R/W R/W R/W R/W 復(fù)位值00000000
位7 位6 位5 位4 位3 位2 位1 位0 SFR地址:0x8B
位7-0:
TL1:定時(shí)器1 低字節(jié)
TL1 寄存器是16 位定時(shí)器1 的位字節(jié)。
TH0:定時(shí)器0 高字節(jié)
R/W R/W R/W R/W R/W R/W R/W R/W 復(fù)位值00000000
位7 位6 位5 位4 位3 位2 位1 位0 SFR地址:0x8C
位7-0:
TH0:定時(shí)器0 高字節(jié)
TH0 寄存器是16 位定時(shí)器0 的高字節(jié)。
TH1:定時(shí)器1 高字節(jié)
R/W R/W R/W R/W R/W R/W R/W R/W 復(fù)位值00000000
位7 位6 位5 位4 位3 位2 位1 位0 SFR地址:0x8D
位7-0:
TH1:定時(shí)器1 高字節(jié)
TH1 寄存器是16 位定時(shí)器1 的高字節(jié)。
*************************************************************************************/
// 常量定義:無(wú)
/************************************************************************************
T2CON:0xC8,定時(shí)器2 控制寄存器
R/W R/W R/W R/W R/W R/W R/W R/W 復(fù)位值
TF2 EXF2 RCLK0 TCLK0 EXEN2 TR2 C/T2 CP/RL2 00000000
位7 位6 位5 位4 位3 位2 位1 位0
(可位尋址) SFR地址:0xC8
位7: TF2:定時(shí)器2 溢出標(biāo)志
當(dāng)定時(shí)器2 溢出時(shí)由硬件置位。當(dāng)定時(shí)器2 中斷被允許時(shí),該位置1 導(dǎo)致CPU
轉(zhuǎn)向定時(shí)器2 的中斷服務(wù)程序。該位不能由硬件自動(dòng)清0,必須用軟件清0。
當(dāng)RCLK0 和/或TCLK0 為邏輯1 時(shí),TF2 不會(huì)被置1。
位6: EXF2:定時(shí)器2 外部標(biāo)志
當(dāng)T2EX 輸入引腳的負(fù)跳變導(dǎo)致發(fā)生捕捉或重載并且EXEN2 為邏輯1 時(shí),該
位由硬件置位。在定時(shí)器2 中斷被允許時(shí),該位置‘1’使CPU 轉(zhuǎn)向定時(shí)器2
的中斷服務(wù)程序。該位不能由硬件自動(dòng)清0,必須用軟件清0。
位5: RCLK0:UART0 接收時(shí)鐘標(biāo)志
選擇UART0 工作在方式1 或3 時(shí)接收時(shí)鐘使用的定時(shí)器。
0:定時(shí)器1 溢出作為接收時(shí)鐘。
1:定時(shí)器2 溢出作為接收時(shí)鐘。
位4: TCLK0:UART0 發(fā)送時(shí)鐘標(biāo)志
選擇UART0 工作在方式1 或3 時(shí)發(fā)送時(shí)鐘使用的定時(shí)器。
0:定時(shí)器1 溢出作為發(fā)送時(shí)鐘。
1:定時(shí)器2 溢出作為發(fā)送時(shí)鐘。
位3: EXEN2:定時(shí)器2 外部允許
當(dāng)定時(shí)器2 不是工作在波特率發(fā)生器方式時(shí),允許T2EX 上的負(fù)跳變觸發(fā)
捕捉或重載。
0:T2EX 上的負(fù)跳變被忽略。
1:T2EX 上的負(fù)跳變導(dǎo)致一次捕捉或重載。
位2: TR2:定時(shí)器2 運(yùn)行控制
該位允許/禁止定時(shí)器2。
0:定時(shí)器2 禁止。
1:定時(shí)器2 允許。
位1: C/T2:計(jì)數(shù)器/定時(shí)器功能選擇
0:定時(shí)器功能:定時(shí)器2 由T2M(CKCON.5)定義的時(shí)鐘加1。
1:計(jì)數(shù)器功能:定時(shí)器2 由外部輸入引腳(T2)的負(fù)跳變加1。
位0: CP/RL2:捕捉/重載選擇
該位選擇定時(shí)器2 為捕捉還是自動(dòng)重裝載方式。EXEN2 必須為邏輯1 才能使
T2EX 上的負(fù)跳變能夠被識(shí)別并用于觸發(fā)捕捉和重載。若RCLK0 或TCLK0 被
置位,該位將被忽略,定時(shí)器2 將工作在自動(dòng)重裝載方式。
0:當(dāng)定時(shí)器2 溢出或T2EX 上發(fā)生負(fù)跳變時(shí)將自動(dòng)重裝載(EXEN2=1)。
1:在T2EX 發(fā)生負(fù)跳變時(shí)捕捉(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定時(shí)器計(jì)數(shù)值寄存器
RCAP2L:定時(shí)器2 捕捉寄存器低字節(jié)
R/W R/W R/W R/W R/W R/W R/W R/W 復(fù)位值00000000
位7 位6 位5 位4 位3 位2 位1 位0 SFR地址:0xCA
位7-0:
RCAP2L:定時(shí)器2 捕捉寄存器的低字節(jié)
當(dāng)定時(shí)器2 被配置為捕捉方式時(shí),RCAP2L 寄存器捕捉定時(shí)器2 的低字節(jié)。當(dāng)
定時(shí)器2 被配置為自動(dòng)重裝載方式時(shí),它保存重載值的低字節(jié)。
RCAP2H:定時(shí)器2 捕捉寄存器高字節(jié)
R/W R/W R/W R/W R/W R/W R/W R/W 復(fù)位值00000000
位7 位6 位5 位4 位3 位2 位1 位0 SFR地址:0xCB
位7-0:
RCAP2H:定時(shí)器2 捕捉寄存器的高字節(jié)
當(dāng)定時(shí)器2 被配置為捕捉方式時(shí),RCAP2H 寄存器捕捉定時(shí)器2 的高字節(jié)。當(dāng)
定時(shí)器2 被配置為自動(dòng)重裝載方式時(shí),它保存重載值的高字節(jié)。
TL2:定時(shí)器2 低字節(jié)
R/W R/W R/W R/W R/W R/W R/W R/W 復(fù)位值00000000
位7 位6 位5 位4 位3 位2 位1 位0 SFR地址:0xCC
位7-0:
TL2:定時(shí)器2 的低字節(jié)
TL2 寄存器保存16 位定時(shí)器2 的低字節(jié)。
TH2:定時(shí)器2 高字節(jié)
R/W R/W R/W R/W R/W R/W R/W R/W 復(fù)位值00000000
位7 位6 位5 位4 位3 位2 位1 位0 SFR地址:0xCD
位7-0:
TH2:定時(shí)器2 的高字節(jié)
TH2 寄存器保存16 位定時(shí)器2 的高字節(jié)。
*************************************************************************************/
// 常量定義:無(wú)
/************************************************************************************
TMR3CN:0x91,定時(shí)器3 控制寄存器
R/W R/W R/W R/W R/W R/W R/W R/W 復(fù)位值
TF3 - - - - TR3 T3M T3XCLK 00000000
位7 位6 位5 位4 位3 位2 位1 位0 SFR地址:0x91
位7: TF3:定時(shí)器3 溢出標(biāo)志
當(dāng)定時(shí)器3 從0xFFFF 到0x0000 溢出時(shí)由硬件置位。當(dāng)定時(shí)器3 中斷被允許時(shí),
該位置‘1’使CPU 轉(zhuǎn)向定時(shí)器3 的中斷服務(wù)程序。該位不能由硬件自動(dòng)清0,
必須用軟件清0。
位6-3: 未用。讀=0000b,寫(xiě)=忽略。
位2: TR3:定時(shí)器3 運(yùn)行控制
該位允許/禁止定時(shí)器3
0:定時(shí)器3 禁止。
1:定時(shí)器3 允許。
位1: T3M:定時(shí)器3 時(shí)鐘選擇
該位控制提供給計(jì)數(shù)器/定時(shí)器3 的系統(tǒng)時(shí)鐘的分頻數(shù)。
0:計(jì)數(shù)器/定時(shí)器3 使用系統(tǒng)時(shí)鐘的12 分頻。
1:計(jì)數(shù)器/定時(shí)器3 使用系統(tǒng)時(shí)鐘。
位0: T3XCLK:定時(shí)器3 外部時(shí)鐘選擇
該位選擇外部振蕩器輸入的8 分頻作為定時(shí)器3 的時(shí)鐘源。當(dāng)T3XCLK 為邏
輯‘1’時(shí),T3M(TMR3CN.1)位被忽略。
0:定時(shí)器3 的時(shí)鐘源由T3M(TMR3CN.1)位定義。
1:定時(shí)器3 的時(shí)鐘源外部振蕩器輸入的8 分頻。
*************************************************************************************/
// 常量定義:
#define TF3 0x80
#define TR3 0x04
#define T3M 0x02
#define T3XCLK 0x01
/************************************************************************************
T3定時(shí)器計(jì)數(shù)值寄存器
TMR3RLL:定時(shí)器3 重載寄存器低字節(jié)
R/W R/W R/W R/W R/W R/W R/W R/W 復(fù)位值00000000
位7 位6 位5 位4 位3 位2 位1 位0 SFR地址:0x92
位7-0:
TMR3RLL:定時(shí)器3 重載寄存器的低字節(jié)
定時(shí)器3 被配置為自動(dòng)重裝載定時(shí)器。該寄存器保存重載值的低字節(jié)。
TMR3RLH:定時(shí)器3 重載寄存器高字節(jié)
R/W R/W R/W R/W R/W R/W R/W R/W 復(fù)位值00000000
位7 位6 位5 位4 位3 位2 位1 位0 SFR地址:0x93
位7-0:
TMR3RLH:定時(shí)器3 重載寄存器的高字節(jié)
定時(shí)器3 配置為自動(dòng)重裝載定時(shí)器。該寄存器保存重載值的高字節(jié)。
TMR3L:定時(shí)器3 低字節(jié)
R/W R/W R/W R/W R/W R/W R/W R/W 復(fù)位值00000000
位7 位6 位5 位4 位3 位2 位1 位0 SFR地址:0x94
位7-0:
TMR3L:定時(shí)器3 的低字節(jié)
TMR3L 寄存器為定時(shí)器3 的低字節(jié)。
TMR3H:定時(shí)器3 高字節(jié)
R/W R/W R/W R/W R/W R/W R/W R/W 復(fù)位值00000000
位7 位6 位5 位4 位3 位2 位1 位0 SFR地址:0x95
位7-0:
TMR3H:定時(shí)器3 的高字節(jié)
TMR3H 寄存器為定時(shí)器3 的高字節(jié)。
*************************************************************************************/
// 常量定義:無(wú)
/************************************************************************************
T4CON:0xC9,定時(shí)器4 控制寄存器
R/W R/W R/W R/W R/W R/W R/W R/W 復(fù)位值
TF4 EXF4 RCLK1 TCLK1 EXEN4 TR4 C/T4 CP/RL4 00000000
位7 位6 位5 位4 位3 位2 位1 位0
SFR地址:0xC9
位7: TF4:定時(shí)器4 溢出標(biāo)志
當(dāng)定時(shí)器4 從0xFFFF 到0x0000 溢出時(shí)由硬件置位。當(dāng)定時(shí)器4 中斷被允許時(shí),
該位置1 導(dǎo)致CPU 轉(zhuǎn)向定時(shí)器4 的中斷服務(wù)程序。該位不能由硬件自動(dòng)清0,
必須用軟件清0。當(dāng)RCLK1 和/或TCLK1 為邏輯1 時(shí),TF4 不會(huì)被置位。
位6: EXF4:定時(shí)器4 外部標(biāo)志
當(dāng)T4EX 輸入引腳的負(fù)跳變導(dǎo)致發(fā)生捕捉或重載并且EXEN4 為邏輯1 時(shí),該
位由硬件置位。在定時(shí)器4 中斷被允許時(shí),該位置‘1’使CPU 轉(zhuǎn)向定時(shí)器4
的中斷服務(wù)程序。該位不能由硬件自動(dòng)清0,必須用軟件清0。
位5: RCLK1:UART1 接收時(shí)鐘標(biāo)志
選擇UART1 工作在方式1 或3 時(shí)接收時(shí)鐘使用的定時(shí)器。
0:定時(shí)器1 溢出作為接收時(shí)鐘。
1:定時(shí)器4 溢出作為接收時(shí)鐘。
位4: TCLK1:UART1 發(fā)送時(shí)鐘標(biāo)志
選擇UART1 工作在方式1 或3 時(shí)發(fā)送時(shí)鐘使用的定時(shí)器。
0:定時(shí)器1 溢出作為發(fā)送時(shí)鐘。
1:定時(shí)器4 溢出作為發(fā)送時(shí)鐘。
位3: EXEN4:定時(shí)器4 外部允許
當(dāng)定時(shí)器4 不是工作在波特率發(fā)生器方式時(shí),允許T4EX 上的負(fù)跳變觸發(fā)
捕捉或重載。
0:T4EX 上的負(fù)跳變被忽略。
1:T4EX 上的負(fù)跳變導(dǎo)致一次捕捉或重載。
位2: TR4:定時(shí)器4 運(yùn)行控制
該位允許/禁止定時(shí)器4。
0:定時(shí)器4 禁止。
1:定時(shí)器4 允許。
位1: C/T4:計(jì)數(shù)器/定時(shí)器功能選擇
0:定時(shí)器功能:定時(shí)器4 由T4M(CKCON.6)定義的時(shí)鐘觸發(fā)加1。
1:計(jì)數(shù)器功能:定時(shí)器4 由外部輸入引腳(T4)的負(fù)跳邊觸發(fā)加1。
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -