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