單片機(jī)在IO端口產(chǎn)生38KHZ的方波
/**********************************************
該函數(shù)會(huì)在單片機(jī)的P3^0口持續(xù)產(chǎn)生38KHZ的方波
**********************************************/
#include
sbit P3_0=P3^0;
void main()
{
TMOD = 0x02;//TMOD是定時(shí)器方式控制寄存器,這里選用定時(shí)器0,工作在模式2
TL0 = 0xF3;//定時(shí)器初值
TH0 = 0xF3;//定時(shí)器初值
EA = 1;//開總中斷
ET0 = 1;//開CPU中斷和T0中斷
TR0 = 1;//啟動(dòng)定時(shí)器
while(1);
}
void time0_int(void) interrupt 1//定時(shí)器0中斷服務(wù)程序,除函數(shù)名自己取名外,其他部分要按照這樣的格式寫。
{
P3_0 = ~P3_0;
}
/*
******定時(shí)器初值的計(jì)算***********
如果采用的是定時(shí)器0,工作在模式1下:
(2^8 - X)*振蕩周期*12 = 定時(shí)時(shí)間
這里我采用的晶振為12MHZ,即振蕩周期為1/12MHZ = 1微秒.
要產(chǎn)生38KHZ的方波,即在1/38KHZ =26微秒,所以定時(shí)器的定時(shí)時(shí)間應(yīng)該為13微秒,以保證能在P3^0口產(chǎn)生周期為26微秒的方波。計(jì)算可得計(jì)數(shù)初值X = 253(0xF3)
*/
/*
***************定時(shí)器模式選擇*******************
定時(shí)器有四種工作模式,原則上工作在任何模式下都可以,可是工作在模式2下,更加準(zhǔn)確,誤差較小,這是因?yàn)槟J?下定時(shí)器有自動(dòng)重裝初值的特點(diǎn)。
*/
/*
********中斷服務(wù)程序的編寫***********
void 函數(shù)名() interrupt 中斷號(hào)
{
}
中斷號(hào)
0 外中斷0
1 定時(shí)器0
2 外中斷1
3 定時(shí)器1
4 串行中斷
這里我們用的是定時(shí)器0,所以中斷函數(shù)寫為
void void time0_int(void) interrupt 1
{}
*/
/*
********定時(shí)器的啟動(dòng)與停止**********
只要設(shè)置TR0 = 1,即啟動(dòng)定時(shí)器0,TR0 = 0,即停止定時(shí)器0
*/