📄 main.c
字号:
/*******************************************************************************
程序名称:红外发送(向串行口发送数据,通过红外线管发射出去)
硬件接法:TXD通过跳线JP3接到红外发射电路
运行效果:复位时发送一次字符串Hello world!
*******************************************************************************/
#include <reg51.h>
#include <stdio.h>
//定义I/O
sbit CarryPin = P1^0;
//T0中断函数,产生38kHz载波信号
void T0_ISR() interrupt 1
{
CarryPin = !CarryPin;
}
//T0初始化
void T0_Init()
{
TMOD &= 0xF0; //T0设置在方式2,即8位自动重装定时器(不改变T1的模式)
TMOD |= 0x02;
TH0 = TL0 = 0xF4;
ET0 = 1;
EA = 1;
TR0 = 1;
}
#define MCLK 11059200L
#define BAUD_RATE 1200L
void UartInit()
{
//串行口设置:8位UART,允许接收,TI置位
SCON = 0x52;
//波特率加倍
PCON |= 0x80;
//设置定时器T1为8位自动重装模式
TMOD &= 0x0F;
TMOD |= 0x20;
//设置定时器T1的初值
TH1 = 256 - ( MCLK / 12 ) / (16 * BAUD_RATE );
TL1 = TH1;
//启动定时器T1
TR1 = 1;
}
//主函数
void main()
{
UartInit();
T0_Init();
printf("Hello world!\r\n"); //输出字符串
IE = 0;
for (;;); //停机(按RST键再次发送)
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -