?? 38k.c
字號:
/*******************************************************
38K載波發(fā)送程序 T1產(chǎn)生38K載波 T0用于精確定時 *
數(shù)據(jù)格式 起始位(9ms 高 4.5ms 低)+8位數(shù)據(jù)(0.560ms 高 *
0.565 低:0 1.685ms 高 0.565ms 低 :1) *
TR1控制載波發(fā)送 *
write by wisdom 2008-8 *
*******************************************************/
#include <AT89X51.h>
#define IR_OUT P3_4
#define _MHz_ 12
//T1 13us產(chǎn)生一次中斷 用于產(chǎn)生38K載波
//T0 方式1 16位 用于定時
void Init_Timer(void)
{
TMOD=0x21; //T0 mode 1 T1 mode 2
TH1=256-(1000*_MHz_/38.0/12)/2+0.5;
TL1=TH1;
ET1=1;
EA=1;
}
//發(fā)送引導碼 發(fā)送方:9ms高電平 4.5ms低電平
void Send_Start_Bit(void) //TR1的值=發(fā)送的電平
{
//9ms 0
TH0=(65536-9000/12*_MHz_)/256;
TL0=(65536-9000/12*_MHz_)%256;
TR0=1;
TR1=0;
while(!TF0);
TR1=0;
TF0=0;
IR_OUT=0;
//4.5ms 1
TH0=(65536-4500/12*_MHz_)/256;
TL0=(65536-4500/12*_MHz_)%256;
TR0=1;
TR1=1;
while(!TF0);
TR1=0;
TF0=0;
IR_OUT=0;
}
//發(fā)送0
void Send_Bit_0(void)
{
//0.565ms 0
TH0=(65536-565/12*_MHz_)/256;
TL0=(65536-565/12*_MHz_)%256;
TR0=1;
TR1=0;
while(!TF0);
TR1=0;
TF0=0;
IR_OUT=0;
//0.565ms 1
TH0=(65536-565/12*_MHz_)/256;
TL0=(65536-565/12*_MHz_)%256;
TR0=1;
TR1=1;
while(!TF0);
TR1=0;
TF0=0;
IR_OUT=0;
}
//發(fā)送1
void Send_Bit_1(void)
{
//1.685ms 0
TH0=(65536-1685/12*_MHz_)/256;
TL0=(65536-1685/12*_MHz_)%256;
TR0=1;
TR1=0;
while(!TF0);
TR1=0;
TF0=0;
IR_OUT=0;
//0.565ms 1
TH0=(65536-565/12*_MHz_)/256;
TL0=(65536-565/12*_MHz_)%256;
TR0=1;
TR1=1;
while(!TF0);
TR1=0;
TF0=0;
IR_OUT=0;
}
//發(fā)送一字節(jié) 8位
void Send_Char(unsigned char ir_data)
{
unsigned char i,j;
j=ir_data;
Send_Start_Bit();
for(i=0;i<8;i++)
{
if(j&0x80)
Send_Bit_1();
else
Send_Bit_0();
j<<=1;
}
}
void Delay10ms(void)
{
TH0=(65536-10000/12*_MHz_)/256;
TL0=(65536-10000/12*_MHz_)%256;
TR0=1;
while(!TF0);
TF0=0;
}
void main(void)
{
Init_Timer();
while(1)
{
Send_Char(0x55);
Delay10ms();
}
}
//-----------------------------------------------------------------------
//T1 ISR
void T1_ISR(void) interrupt TF1_VECTOR using 1
{
IR_OUT=!IR_OUT;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -