|
利用定時(shí)器的方式二做一個(gè)周期兩秒的方波發(fā)生器 周期幾乎是0誤差的
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png (24.99 KB, 下載次數(shù): 75)
下載附件
2018-6-20 03:26 上傳
單片機(jī)源程序如下:
- /*************************************************
- 計(jì)數(shù)方式選擇:
- 使用定時(shí)器的方式0和方式1中,在循環(huán)計(jì)數(shù)過程中要用軟件反復(fù)設(shè)置計(jì)數(shù)器初值,這可能影響計(jì)時(shí)的精度,故采用方式2;
- 方式二周期計(jì)算:
- 方式2最多轉(zhuǎn)載數(shù)為256個(gè),那么采用計(jì)數(shù)250次,則機(jī)器周期T=12*(1/6MHZ)=2us,計(jì)時(shí)一秒即1000000/(2*250)=2000次
- 產(chǎn)生方波周期為2s,即是說要循環(huán)計(jì)數(shù)4000次,再利用溢出中斷來完成循環(huán)計(jì)數(shù)任務(wù)。
- **************************************************/
- #include <reg51.h>
- #define uint unsigned int
- sbit FB=P1^0; //定義方波輸出口
- uint num;
- void main()
- {
- TMOD=0x02; //設(shè)置定時(shí)器0為工作方式2(0000 0010)
- TH0=6; //裝初值
- TL0=6;
- EA=1; //開總中斷
- ET0=1; //開內(nèi)部定時(shí)器0中斷
- TR0=1; //啟動(dòng)定時(shí)器0
- while(1) //程序在這里等待中斷
- {
- if(num==4000) //如果到了4000次,說明1秒時(shí)間到
- {
- num=0; //然后把num清0重新再計(jì)4000次
- FB=!FB; //讓電平取反
- }
- }
- }
- void T0_time() interrupt 1 //讓中斷程序執(zhí)行循環(huán)計(jì)數(shù)任務(wù)
- {
- num++;
- }
復(fù)制代碼
0.png (55.21 KB, 下載次數(shù): 59)
下載附件
2018-6-20 03:28 上傳
所有資料51hei提供下載:
20161111144-李作鑫-方波發(fā)生器.rar
(99.97 KB, 下載次數(shù): 59)
2018-6-19 17:28 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|