#include<reg51.h>
//設CPU是時鍾12MHz的8051系列
voidSetupTimer0()
{
TMOD&=0XF0;//僅保留T1信息
TMOD|=0X02;//設置T0:定時功能,方式2,自動重載8位定時器/計數器
TH0=256-50;//每個周期為1us,定時每50us中斷一次,兩次為100us,
TL0=256-50;//自動重裝,TL0,TH0均置256-50
TR0=1;//開啟定時器
ET0=1;//定時器0中斷打開
}
voidTimer0_ISR()interrupt1//中斷服務程序
{
staticdataunsignedcharp0;
p0^=1;P0=p0;//p1完成翻轉後輸出到P1,兩次翻轉完成一個周期輸出
}
voidmain()
{
SetupTimer0();
EA=1;//全局中斷打開
while(1);//死循環,中斷程序完成波形輸出
}
『貳』 設計通過單片機I/O口輸出占空比為1:2的方波程序,畫出單片機外圍電路,並描述編程思路。急求
單片機外圍電路就不要畫了吧。現在的單片機很多已經簡單得沒幾個元件了。
甚至就一個單片機晶元就能跑了。
有PWM的,可以使用PWM輸出1.2的方波。
沒有的,使用時間脊猜中斷,甚至使用延時函數,櫻型型都可以輸出1:2的方波的。
你只租神要在適當的時間,把I/O口的電平取反就成。很簡單。
『叄』 用AT89S51編程,輸出一個方波信號,要求周期1秒,占空比60%,在開發板驗證通過,並在示波器觀察到正確波形
如果需要非常肢尺准確,必須使用定時器,S51有兩個定時器,隨便用一個,設置定時時大凱間50ms,循環20次,就是一秒,滾飢喚占空比就是輸出高電平的時間,60%就是600ms為高,400ms為低,IO引腳就隨便用一個,已經很清楚了。。。