📄 09_3_28_uart_红外遥控.c
字号:
#include <reg52.h>
#include <hw.h>
//#include <UART.h>
sbit Led=P0^5;
sbit S1=P3^0;
sbit S2=P3^1;
sbit S3=P3^2;
sbit S4=P3^3;
sbit S5=P3^4;
extern void UART_Init(void);
extern void send(unsigned char mydata);
void uart_send(unsigned char date)
{
TI=0; ///清零发送完毕标志寄存器
SBUF = date; // +0x30 ///0x30表示将字符转化为数字,0的ASIIC码为0x30
while(!TI); ///等待发送完毕寄存器置1
}
void main(void)
{unsigned int i;
P0 = 0x00;
P2 = 0x1f;
P0 = ~0x3f;
P2 = 0x0f;
P1=0;
WAY_0=1; //输入首先写1
Infrared_ray_init(); ///定时器1初始化
//UART_Init();
P3=0xff;
while(1)
{
// if(S4==0)
while(1)
{
buffer=0;
irtype=0;
count=0;
end=0;
TH0=(0xffff-381)/256; ///381uS???
TL0=(0xffff-381)%256; ///381是什么意思?
while (WAY_0);//等待低电平,一帧的开始 ///等待接收端变为低电平、接收端在每次接收数据之前置1
TR0=1; //开始定时,红外接收 ///注意这是开启定时器0
while(!end); //等一帧解码结束 ///end默认值为0,接收数组装满后变为1
if(buf_s[2]%2==0) Led=0;
else Led=1;
uart_send(buf_s[2]);
}
}
}
/************************************************************
经测试,串口返回数据;新宏电视机电子遥控器0~9的最后一个数依
次为 0x30,0x31, 0x32,0x33, 0x34,0x35, 0x36,0x37, 0x38,0x39,
音量+:0x40 音量- :0x41
节目+:0x50 节目- :0x51
存储 :0x59
开关 :0x3c
静音 :0x3d
微调+:0x5b 微调- :0x5c
屏显 :0x3f 这个可以用于选择显示频率或者万年历、或者温度
单双 :0x3a
搜索 :0x4e 这个可以用于自动搜索频率
08-12-16 张强记录
************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -