![]() |
發(fā)布時間: 2023-5-18 01:20
正文摘要:一:問題描述 按照文中單片機(jī)代碼編譯下載后,P1口LED不閃爍,一直亮。然后通過Keil uVision5軟件仿真,延時時間也不是期望的0.5s。請大家?guī)臀铱纯词窃趺椿厥拢? 二:硬件環(huán)境 STC12C2052AD //12MHz ... |
ydatou 發(fā)表于 2023-5-19 09:14 ![]() ![]() |
tongguan123 發(fā)表于 2023-5-19 11:42 ![]() |
wulin 發(fā)表于 2023-5-19 12:13 ![]() |
好久沒用51了,圍觀一下 |
tongguan123 發(fā)表于 2023-5-19 11:40 這個程序在實物上運行沒有任何問題,AUXR &= 0x7F;也可以省略,其默認(rèn)就是12T。Keil軟件仿真STC1T單片機(jī)結(jié)果不一定符合實際。 |
STC12C2052AD應(yīng)該是1T單片機(jī)吧,計數(shù)初值搞錯了 |
yzwzfyz 發(fā)表于 2023-5-19 09:28 1:定時功能的計數(shù)脈沖選擇的是內(nèi)部時鐘(或分頻、或不分頻)得到; 計數(shù)功能的計數(shù)脈沖當(dāng)然是外部脈沖信號了。 2:定時器0的計數(shù)溢出標(biāo)志位TF0在計數(shù)溢出后,如果要產(chǎn)生延時,需要軟件清零,然后再定義個循環(huán)變量,達(dá)到延時效果。 |
ydatou 發(fā)表于 2023-5-19 09:14 你以前處理過類似的問題嗎? |
lkc8210 發(fā)表于 2023-5-19 10:09 ![]() |
ydatou 發(fā)表于 2023-5-19 09:14 |
可能是Keil對STC12的速度有點誤會 設(shè)定500ms,仿真125ms,快了4倍 把12M改為3Mhz就行了 |
1、定時器的時鐘源是晶振,所以需以根據(jù)晶振的頻率不計算時間常數(shù)。 2、while(TF0 != 1); 是等待計數(shù)溢出位TF=1,是可以等到的,但它不會自動清0,也即從此后一直為1。因為以后的while(TF0 != 1)會被路過。 3、是外話。這種程序方式延時,嚴(yán)重占用CPU資源,與DELAY并無二樣,失去了定時器的設(shè)計初衷。 4、較好的做法是,將時常數(shù)計算并設(shè)計到5ms,起動中斷。如此每5ms產(chǎn)生一次中斷,在中斷服務(wù)中做個標(biāo)記B5MS。主程序憑B5MS標(biāo)記處理事件,完成后清除B5MS標(biāo)記。如果處理的事件用時不長,如僅開關(guān)一個燈。可以不用B5MS標(biāo)記,而直接在中斷服務(wù)程序中處理。 |
tongguan123 發(fā)表于 2023-5-18 18:41 樓主這個定時器用法是哪個老師教的?
|
頂啥呢,有時間幫我看看嘍,分析一下,我是真沒轍了。先感謝一下!![]() |
頂一下 |
Powered by 單片機(jī)教程網(wǎng)