|
假設(shè)系統(tǒng)時(shí)鐘為12MHz,設(shè)計(jì)電路并編寫程序?qū)崿F(xiàn)從P1.0引腳上輸出一個(gè)周期為2ms的方波。
要在P1.0上產(chǎn)生周期為2ms的方波,定時(shí)器應(yīng)產(chǎn)生1ms的定時(shí)中斷,定時(shí)時(shí)間到則在中斷服務(wù)程序中對(duì)P1.0求反。使用定時(shí)器T0,方式1定時(shí)中斷,GATE不起作用。
其中在P1.0引腳接有虛擬示波器,用來(lái)觀察產(chǎn)生的周期2ms的方波。
下面來(lái)計(jì)算T0初值X :
設(shè)T0的初值為X,有
(216−X )×1×10−6=1×10−3
即 65 536−X=1 000
得X=64 536,化為16進(jìn)制數(shù)就是0xfc18。將高8位0xfc裝入TH0,低8位0x18裝入TL0。
仿真.png (54.48 KB, 下載次數(shù): 26)
下載附件
仿真
2022-10-4 20:13 上傳
代碼.png (144.62 KB, 下載次數(shù): 18)
下載附件
代碼
2022-10-4 20:13 上傳
參考單片機(jī)程序如下:- #include <reg51.h> //頭文件reg51.h
- sbit P1_0=P1^0; //定義特殊功能寄存器P1的位變量P1_0
- void main(void) //主程序
- {
- TMOD=0x01; //設(shè)置T0為方式1
- TR0=1; //接通T0
- while(1) //無(wú)限循環(huán)
- {
- TH0=0xfc; //置T0高8位初值
- TL0=0x18; //置T0低8位初值
- do{}while(!TF0); //TF0為0原地循環(huán),為1則T0溢出,往下執(zhí)行
- P1_0=!P1_0; // P1.0狀態(tài)求反
- TF0=0; //TF0標(biāo)志清零
- }
- }
復(fù)制代碼
Keil代碼與Proteus8.13仿真下載(注意只能用Proteus8.13打開(kāi)):
P1.0產(chǎn)生周期2ms方波.zip
(49.17 KB, 下載次數(shù): 14)
2022-10-4 20:14 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|