|
|
3樓的大佬已經完美的給了你解決方案了。 那段代碼簡直就是教程級別的解決方案。 無論是從資源占用,還是內存占用來講,都是最簡潔高效的。 |
| 一個定時器定時2.5微妙,連續工作,另一個定時器設定50MS,50ms到,關定時器,輸出并計數2.5微妙脈沖,輸出十個,停止輸出,啟動50MS定時器。。。。。。。。。 |
asmmcu 發表于 2021-1-6 08:55 有圖說明的,就是每隔50ms發出10個連續占空比50%脈寬為2.5us脈沖 |
| 各位大俠有圖 |
robinsonlin 發表于 2021-1-6 11:44 STC 1T單片機執行1個 _nop_() 用時3個時鐘。與定時器采用12T模式沒有任何關聯。 |
自己整整!很好做出來!方法總比困難多!![]() |
wulin 發表于 2021-1-6 08:02 定時器用12T模式,進入定時器中斷后, 一個 羅普 實際是多久。 有沒有人實際測量過。 這里是繼承用12T模式,還是用默認的1T模式? |
|
對于STC的單片機,如果你設2.5uS的定時器,你的單片機就幾乎全部在執行中斷了。 一般沒有其他用途,就設10mS的定時器,在定時器中加累加標志,在第五次定時器中斷時,清零累加標記,并用軟件延遲來控制翻轉端口輸出。12Mh主頻來算,4個_nop_(); 差不多占用1uS時長。 |
|
用stc15w408as單片機輸出每隔50ms輸出10個脈寬2.5us 你的問題不完整 每隔50ms,10個脈沖,脈寬2.5US,表達清淅。 問題是10個脈沖是不是平均分布在50ms 內?因為你沒表達脈沖的周期以及是否連續的。 |
給你一個示例
|
|
第一步 設定一個2.5us的定時器 第二步 設定一個16位變量。定時器里面讓變量增加。如果小于20000 則不輸出脈沖。 如果變量大于20000并且小于20020。那么讓IO口翻轉。然后把變量清0,開始下一個周期。 20000*2.5us=50ms |
|
很簡單啊 第一步 設置一個定時器 定時時間2.5us 第二步 用一個變量,如果變量小于20000則不輸出。大于等于20001小于20020則IO口翻轉。 20000*2.5us=50ms 《人人學會單片機》視頻教程在原子哥網站全部投放。馬上去看看吧。 |