国产精品人人做人人爽-婷婷丁香在线-亚洲精品久久午夜麻豆-无码AV中文一区二区三区-精品亚洲成?人在线观看青青-亚洲日韩av中文无码专区-亚洲AV无码久久一区二区三区-日本欧美中文字幕人在线-日韩久久AV-久久精品国产亚洲不AV麻豆

I Love mcu
歡迎光臨我愛單片機(jī)博客!

新唐 8051 內(nèi)核單片機(jī)定時(shí)器完整配置教程

適用型號(hào):N79E814、N79E815、N79E835、W79E4051、W79E632、N89E516 等新唐 8051 系列,寄存器、邏輯兼容標(biāo)準(zhǔn) 51,新增擴(kuò)展定時(shí)器 / 時(shí)鐘分頻。

一、基礎(chǔ)核心寄存器(標(biāo)準(zhǔn) 51 通用)

1. 模式寄存器 TMOD(地址 0x89)

表格
位 7 位 6 位 5 位 4 位 3 位 2 位 1 位 0
GATE1 C/T1 M11 M10 GATE0 C/T0 M01 M00
  • GATE=0:僅 TRx 控制定時(shí)器啟停(常用)
  • C/T=0:定時(shí)器模式(系統(tǒng)時(shí)鐘分頻計(jì)數(shù));=1 計(jì)數(shù)器(外部引腳脈沖)
  • M1 M0 四種工作模式:
    1. 00 模式 0:13 位定時(shí)器(TL 低 5 位,TH 高 8 位)極少用
    2. 01 模式 1:16 位定時(shí)器(0~65535,最常用)
    3. 10 模式 2:8 位自動(dòng)重裝(0~255,高頻短定時(shí))
    4. 11 模式 3:T0 拆兩個(gè) 8 位定時(shí)器,T1 僅作波特率發(fā)生器

2. 控制寄存器 TCON(地址 0x88)

  • TR0=1:開啟定時(shí)器 0;TR0=0 關(guān)閉
  • TR1=1:開啟定時(shí)器 1;TR1=0 關(guān)閉
  • TF0/TF1:溢出中斷標(biāo)志,溢出硬件置 1,中斷響應(yīng)后硬件清零

3. 計(jì)數(shù)寄存器

  • TH0、TL0:定時(shí)器 0 高低 8 位
  • TH1、TL1:定時(shí)器 1 高低 8 位

4. 中斷寄存器 IE(0xA8)

  • ET0=1:使能定時(shí)器 0 中斷
  • ET1=1:使能定時(shí)器 1 中斷
  • EA=1:總中斷開關(guān)(必須打開)

二、時(shí)鐘分頻關(guān)鍵(新唐 8051 重點(diǎn))

標(biāo)準(zhǔn) 51 默認(rèn):機(jī)器周期 = 系統(tǒng)晶振 / 12

例:12MHz 晶振 → 1 機(jī)器周期 = 1μs

新唐 8051 大多支持6T 模式(6 分頻),速度翻倍,由 CKCON 寄存器配置。

定時(shí)計(jì)算公式:

單次定時(shí)時(shí)長(zhǎng) = 計(jì)數(shù)次數(shù) × 機(jī)器周期

三、兩種最常用模式配置示例

示例 1:模式 2 8 位自動(dòng)重裝(12MHz,100μs 定時(shí))

12T 模式,1 機(jī)器周期 1μs,需要計(jì)數(shù) 100 次溢出

初值 = 256 – 100 = 156 (0x9C)

c
運(yùn)行
#include <N79E814.H>
void Timer0_Init(void)
{
    TMOD |= 0x02;  // T0模式2,定時(shí)器
    TH0 = 0x9C;    // 重裝初值
    TL0 = 0x9C;
    ET0 = 1;       // 開T0中斷
    EA = 1;        // 總中斷
    TR0 = 1;       // 啟動(dòng)定時(shí)器0
}

// 定時(shí)器0中斷服務(wù)函數(shù)
void Timer0_ISR(void) interrupt 1
{
    // 定時(shí)100μs進(jìn)入一次,TH0硬件自動(dòng)重裝無需手動(dòng)賦值
}

示例 2:模式 1 16 位定時(shí)器(12MHz,5ms 定時(shí))

單次計(jì)數(shù) 5000 次,16 位最大值 65536

初值 = 65536 – 5000 = 60536 (0xECB8)

TH0=0xEC,TL0=0xB8

c
運(yùn)行
void Timer0_Init(void)
{
    TMOD |= 0x01;  // T0模式1 16位定時(shí)
    TH0 = 0xEC;
    TL0 = 0xB8;
    ET0 = 1;
    EA = 1;
    TR0 = 1;
}

void Timer0_ISR(void) interrupt 1
{
    // 模式1無自動(dòng)重裝,溢出必須手動(dòng)重載初值
    TH0 = 0xEC;
    TL0 = 0xB8;
    // 用戶定時(shí)任務(wù)
}

四、新唐特有擴(kuò)展功能

1. 6T/12T 時(shí)鐘切換 CKCON 寄存器

多數(shù)新唐 8051 CKCON.0 = X6
  • X6=0:12T 標(biāo)準(zhǔn)模式
  • X6=1:6T 高速模式,機(jī)器周期縮短一半
c
運(yùn)行
CKCON |= 0x01; // 開啟6T

2. 獨(dú)立看門狗定時(shí)器(WDT)

新唐 8051 內(nèi)置硬件看門狗,獨(dú)立 RC 時(shí)鐘,用于程序跑飛復(fù)位,通過 WDTCR 配置。

3. 額外 T2 定時(shí)器(部分型號(hào) N89E516 等)

T2 自帶捕獲 / 自動(dòng)重裝,適合高精度定時(shí)、串口波特率,寄存器:T2CON、TH2、TL2、RCAP2H、RCAP2L。

五、查詢方式(不使用中斷)

無需開 IE 中斷,循環(huán)判斷 TF 溢出標(biāo)志:
c
運(yùn)行
void Delay100us(void)
{
    TMOD |= 0x02;
    TH0=0x9C; TL0=0x9C;
    TR0=1;
    while(TF0 == 0); // 等待溢出
    TF0 = 0;         // 軟件清標(biāo)志
    TR0 = 0;
}

六、常見踩坑點(diǎn)

  1. 模式 1 溢出忘記手動(dòng)重裝 THx/TLx,定時(shí)時(shí)長(zhǎng)越來越長(zhǎng)
  2. 未打開 EA 總中斷,中斷函數(shù)不會(huì)進(jìn)入
  3. GATE 置 1 后,定時(shí)器啟停受 INT0/INT1 引腳控制,定時(shí)器不跑
  4. 6T/12T 切換后未重新計(jì)算定時(shí)初值,定時(shí)誤差翻倍
  5. 新唐頭文件未包含,寄存器名識(shí)別報(bào)錯(cuò),需引入對(duì)應(yīng)型號(hào).h

七、快速配置步驟總結(jié)

  1. 配置 TMOD:選擇定時(shí)器、模式、定時(shí) / 計(jì)數(shù)
  2. 計(jì)算初值,賦值 THx、TLx
  3. 如需中斷:ETx=1,EA=1
  4. TRx=1 啟動(dòng)定時(shí)器
  5. 中斷模式:模式 1 手動(dòng)重裝;模式 2 自動(dòng)重裝
  6. 6T 高速場(chǎng)景修改 CKCON 分頻位
贊(6) 打賞
分享到

我愛單片機(jī)博客

單片機(jī)開發(fā)、學(xué)習(xí)、交流與分享博客!

關(guān)于我們聯(lián)系我們

登錄

找回密碼

注冊(cè)