Re: [問題] 8051之C語言問題

看板Electronics作者 (賣頻寬控制分享器)時間19年前 (2007/01/29 21:49), 編輯推噓0(004)
留言4則, 2人參與, 最新討論串1/3 (看更多)
※ 引述《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

01/29 22:23, , 1F
38???有嗎?哪邊?感謝你的回答!我明天試試Timer0
01/29 22:23, 1F

01/29 22:28, , 2F
1us , 5000us, 100次 是依據什麼計算出這些數字?
01/29 22:28, 2F

01/30 13:04, , 3F
記錯了...那是另外一個= ="
01/30 13:04, 3F

01/30 13:05, , 4F
12Mhz的Crystal...1個clock為1us
01/30 13:05, 4F
文章代碼(AID): #15lVk0J- (Electronics)
文章代碼(AID): #15lVk0J- (Electronics)