51手記之STC
PCA、RXD、T1、T0輸出腳可通過寄存器WAKE_CLK0配置為外部中斷使用。
5.定時器
有2個16位專用定時器T0、T1;PCA也可用作定時器使用;還有一個看門狗定時器;
定時器0和定時器1完全兼容傳統(tǒng)8051;定時器計數(shù)時鐘源可選擇為系統(tǒng)時鐘的1/12或系統(tǒng)時鐘,通過AUXR.T0x12和AUXR.T1x12設(shè)置(為0時同傳統(tǒng)51,為1時不分頻)。
看門狗由寄存器WDT_CONTR控制,置位WDT_CONTR.CLR_WDT看門狗將重新計數(shù)。
看門狗溢出時間=(12*分頻值*32768)/系統(tǒng)時鐘
6.串行口
2個全雙工串行口,功能同標(biāo)準(zhǔn)51;
串口2使用獨立波特率發(fā)生器,串口1可選擇使用定時器1或獨立波特率發(fā)生器(AUXR.S1BRS為0時使用定時器1,為1時共用獨立波特率發(fā)生器);獨立波特率發(fā)生器的計數(shù)時鐘源為系統(tǒng)時鐘的1/12或系統(tǒng)時鐘(AUXR.BRTx12為0時使用系統(tǒng)時鐘的1/12,為1時使用系統(tǒng)時鐘);兩個串口都使用獨立波特率發(fā)生器時,它們的波特率相同。
獨立波特率發(fā)生器復(fù)位后是關(guān)閉的,需通過AUXR.BRTR=1使能。它有一個8位獨立波特率計數(shù)器BRT。
串行口2波特率計算公式:模式0波特率=系統(tǒng)時鐘/12或系統(tǒng)時鐘/2(AUXR.UART_M0x6為0時同標(biāo)準(zhǔn)51)
模式1,3波特率=f/(256-BRT),f為波特率發(fā)生器計數(shù)器時鐘源頻率
模式2波特率=2S2SMOD*系統(tǒng)時鐘/64
7.PCA(可編程計數(shù)器陣列)
含有一個獨立的16位定時器,2/4個16位捕獲/比較模塊與之相連,每個模塊可編程工作在4種工作模式:上升/下降沿捕獲、軟件定時器、高速輸出、可調(diào)制脈沖輸出。
PCA定時器的時鐘源由CMOD設(shè)置,由PCA控制寄存器CCON控制。
每個PCA模塊的工作模式由寄存器CCAPMn來設(shè)置:
1)捕獲模式
CCAPMn=0x20或0x10或0x30,
對模塊外部CEXn輸入的跳變進行采樣,當(dāng)采樣到有效跳變時,PCA硬件就將PCA計數(shù)陣列CH,CL的值裝載到模塊的捕獲寄存器CCAPnH,CCAPnL中。
2)軟件定時器模式
CCAPMn=0X48,
3)高速輸出模式
CCAPMn=0X4C,
4)脈寬調(diào)節(jié)(PWM)模式
CCAPMn=0x42,
由于所有的PCA模塊共用同一個PCA定時器,所以它們的輸出頻率相同,各個模塊的輸出占空比是獨立變化的,當(dāng)CL的值小于(EPCnL,CCAPnL)時輸出為低,否則輸出高。PWM的輸出頻率=PCA時鐘頻率/256。
8.A/D轉(zhuǎn)換
有8路10位高精度ADC,速度均可達(dá)到100KHZ;8路電壓輸入型A/D,可做溫度檢測,電池電壓檢測,按鍵掃描,頻譜檢測。
需作為A/D使用的口需先將其設(shè)置為開漏輸出或僅為輸入模式,
A/D轉(zhuǎn)換由寄存器ADC_CONTR控制,轉(zhuǎn)換結(jié)果存放在ADC_DATA(高8位)和ADC_LOW2(低2位)
9.EEPROM使用
片上集成有數(shù)據(jù)FLASH區(qū),可通過IAP方式對其進行讀寫和擦除操作。
相關(guān)寄存器IAP_CONTR,IAP_CMD、IAP_TRIG、IAP_DATA、IAP_ADDRH、IAP_ADDRL
1)擦除操作IAP_CMD=0x03;
IAP_TRIG=0X5A;
IAP_TRIG=0XA5;
IAP_ADDRL=addrl;
IAP_CONTR=0X81;
IAP_CMD=READ;
IAP_TRIG=0X5A;
IAP_TRIG=0XA5;
_nop_();
_nop_();
*rdata=IAP_DATA;
3)寫操作
評論