⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 C51红外收发
💻 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 + -