作者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
1F:→ CuckooBoy:38???有吗?哪边?感谢你的回答!我明天试试Timer0 01/29 22:23
2F:→ CuckooBoy:1us , 5000us, 100次 是依据什麽计算出这些数字? 01/29 22:28
3F:→ mosquito520:记错了...那是另外一个= =" 01/30 13:04
4F:→ mosquito520:12Mhz的Crystal...1个clock为1us 01/30 13:05