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