作者mosquito520 (賣頻寬控制分享器)
看板Electronics
標題Re: [問題] 8051之C語言問題
時間Mon Jan 29 21:49:49 2007
※ 引述《CuckooBoy (阿書)》之銘言:
: 各位大大請教一個問題
: 之前學過FPGA,知道除頻器這名詞
: 相同的,學8051使用25MHZ,想除頻到1Hz
: 請問使用for迴圈中的條件(如:cnt 210 2000)
: 有公式可以計算出這些數字嗎?
: 還是每次都要試...
: 像下面是用uision2去計算執行秒數在1.01164280s
: 1.01就可以當它是1秒嗎?
: #include <AT89C51.h>
: void div(int cnt)
: {
: int i,j,k;
: for (i=0;i<cnt;i++)
: for (j=0;j<210;j++)
: for (k=0;k<2000;k++);
: }
: void main(void)
: {
: div(1);
: }
如果你要用單晶片去想辦法弄出你要的頻率...
那首先...應該是用一個比較好計算的石英晶體振盪器...Ex 12MHz
接著用timer中斷去算時間...
12MHz...則一個週期是1uS...
如果要產生1Hz...
那應該是設定Timer...假設設定成5000us中斷一次...
接下來...中斷100次...就反向輸出一次...
這樣輸出就會是1Hz...
至於精確度要取決於石英晶體振盪器...
還有你的程式怎麼寫...
PS.我記得你不是要生38Khz?= =
--
▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
國 立 聯 合 大 學
(理工/電資/管理/技術/客家)院所 招生中
National United University
───────────────────────────────────
首頁
http://www.nuu.edu.tw BBS telnet://uun.twbbs.org
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.133.140.180
→ CuckooBoy:38???有嗎?哪邊?感謝你的回答!我明天試試Timer0 01/29 22:23
→ CuckooBoy:1us , 5000us, 100次 是依據什麼計算出這些數字? 01/29 22:28
→ mosquito520:記錯了...那是另外一個= =" 01/30 13:04
→ mosquito520:12Mhz的Crystal...1個clock為1us 01/30 13:05