STC單片機(jī)開(kāi)門(mén)狗的應(yīng)用舉例
STC單片機(jī)是一款增強(qiáng)型51單片機(jī),完全兼容MCS-51,還增加了新的功能,比如新增兩級(jí)中斷優(yōu)先級(jí),多一個(gè)外中斷,內(nèi)置EEPROM,硬件看門(mén)狗,具有掉電模式,512B內(nèi)存等。還支持ISP下載,不用編程器,只要一個(gè)MAX232和一些廉價(jià)的元件就能寫(xiě)程序,可擦寫(xiě)10萬(wàn)次。因此是一款很好用的單片機(jī)。
在這里,簡(jiǎn)單說(shuō)明一下其看門(mén)狗的使用。STC單片機(jī)的看門(mén)狗一旦啟動(dòng),就不能停止,其看門(mén)狗溢出時(shí)間可以利用STC單片機(jī)用戶手冊(cè)計(jì)算,其簡(jiǎn)單舉例如下:
#i nclude //STC單片機(jī)頭文件
#define uint unsigned int
#define uchar unsigned char
sbit led=P1^0;
//=================================================================
// 函數(shù)名稱 :void delay (uint us)
// 函數(shù)功能 :延時(shí)
// 入口參數(shù) :us 延時(shí)時(shí)間的長(zhǎng)短
// 出口參數(shù) :無(wú)
//=================================================================
void delay (uint us)
{
while(us--);
}
main()
{
WDT_CONTR=0x3c; //啟動(dòng)看門(mén)狗
led=1; //點(diǎn)亮LED
delay(100);
led=0;
delay(100); //熄滅LED
while(1)
{
WDT_CONTR=0x3c; //喂狗,若屏蔽掉該位,則看門(mén)狗溢出后復(fù)位,LED燈不停閃爍
}
}
STC單片機(jī)硬件PWM的使用分析
STC單片機(jī)(具有PCA功能的),怎么實(shí)現(xiàn)可變頻率的PWM輸出?很多朋友還在使用定時(shí)器做可變頻PWM, 這里我就介紹怎么使用硬件PWM,在定時(shí)器0的分頻基數(shù)下設(shè)計(jì)PWM。
首先看CMOD這個(gè)寄存器,這里我們主要關(guān)注 CPS0,CPS1,CPS2,這三個(gè)位控制選擇PCA的計(jì)數(shù)脈沖源。 對(duì)應(yīng)PWM功能,則是選擇頻率。 首先可以選擇 6個(gè)固定分頻,可以看圖片看出,分別是1,2,4,6,8,12的系統(tǒng)分頻。我們需要做可變頻率的PWM,所以我們需要選擇模式2,選擇定時(shí)器0的溢出作為系統(tǒng)分頻基數(shù)。
然后,我么看怎么具體的去計(jì)算,去實(shí)現(xiàn)分頻。 這里就需要上面這個(gè)圖片的計(jì)算規(guī)則。 這里我舉一個(gè)例子來(lái)說(shuō)明,比如我們單片機(jī)的晶振使用的是12MHZ,而我們需要實(shí)現(xiàn)300HZ的頻率。 如果得到呢?
首先,如果我們采用CMOD的固定分頻,可以發(fā)現(xiàn),無(wú)論是1,2,4,8,12,分頻下來(lái)的頻率都不是300HZ。 所以這里也體現(xiàn)我們使用定時(shí)器0做分頻基數(shù)的好處了。
我們繼續(xù)計(jì)算,12MHZ需要轉(zhuǎn)化為300HZ,那么根據(jù)上圖,首先我們需要確定PCA時(shí)鐘輸入頻率,根據(jù)公式 300*256=76800HZ,這個(gè)值就是我們需要的PCA時(shí)鐘輸入頻率?,F(xiàn)在問(wèn)題就是 ,我們?cè)趺窗?2MHZ,轉(zhuǎn)化為76.8KHZ, 12000KHZ/76.8KHZ=156.25 ,這個(gè)156.25就是分頻基數(shù),而這個(gè)分頻基數(shù)由我們的定時(shí)器溢出參數(shù)來(lái)設(shè)定,意思就是當(dāng)我們定時(shí)器如果計(jì)數(shù)156.25溢出就可以做到分頻基數(shù)為156.25, 所以我們?cè)谠O(shè)置定時(shí)器0的計(jì)數(shù)起始值就是65536-156=65380,對(duì)應(yīng)TH0=0XFF,TL0=0X64。
好了,怎么計(jì)算PWM在定時(shí)器0下實(shí)現(xiàn)我們自己需要的任意頻率的計(jì)算方式這里就介紹完了。 如果要?jiǎng)討B(tài)實(shí)現(xiàn)頻率可變,我們就可以通過(guò)通訊去動(dòng)態(tài)調(diào)整定時(shí)器0的計(jì)數(shù)基數(shù),(實(shí)際就是調(diào)整了分頻基數(shù)),就可以實(shí)現(xiàn)頻率的改變了。 另外,說(shuō)明:這里的定時(shí)器0,不需要中斷,并且該定時(shí)器也不是作為產(chǎn)生PWM用的,是作為一個(gè)分頻基數(shù)用!
-
單片機(jī)
+關(guān)注
關(guān)注
6035文章
44554瀏覽量
634634 -
PWM
+關(guān)注
關(guān)注
114文章
5181瀏覽量
213796 -
STC單片機(jī)
+關(guān)注
關(guān)注
9文章
222瀏覽量
38146
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論