/***************文件信息*********************
**文件名:baods.c
**创建人:包丁胜
**版 本: v0.1
**日 期:2010年10月18日
**描 述:解码遥控器按键数据码,然后发送到串口调试助手上
**
**
**注 意:-------------------------------
-----------------
********************************************
*******************/
#include<reg52.h>
#include"absacc.h"
sbit IR=P3^2;
unsigned char IR_num[4];
/*************************串口初始化函数*****************************/
void init_uart(void) //串口初始化
{
TMOD = 0x20; //timer 1, mode 2
TH1 = 0xfd; //11.0592MHz,buand 9600bit/s
TL1 = 0xfd;
TR1 = 1;
SCON = 0x50; //enable uart
ES = 1; //enable uart interrupt
EA = 1; //enable all interrupt
}
/************************串口发送字符函数****************************/
void send_buffer(unsigned char dat)
{
SBUF=dat;
while(TI==0); //发送中断标志,TI=1表示发送完成
TI=0; //发送标志清零
}
/*********************************************************
**
**delay==((x*2+1+2)*4+1+2+2)*12/11.0592
**
*********************************************************/
void delay4ms(void)
{
unsigned char i,x;
i=4;
while(i)
{
x=458;
while(x)
{
x--;
}
i--;
}
}
/*************************************************/
void delay1ms(void)
{
unsigned char i,x;
i=4;
while(i)
{
x=113;
while(x)
{
x--;
}
i--;
}
}
/******************************************************/
void delay800us(void)
{
unsigned char i,x;
i=4;
while(i)
{
x=90;
while(x)
{
x--;
}
i--;
}
}
/**************************************************************/
char IR_decode(void)
{
unsigned char i,j;
while(IR==1); //IR=0时跳出是循环
delay4ms(); //注意是4ms
while(IR==0); //等IR=1是跳出循环,调节时间,以免误差积累
delay4ms();
while(IR==1);
for(i=0;i<4;i++)
{
unsigned char temp;
for(j=0;j<8;j++)
{
temp=temp>>1; //右移一位
while(IR==0); //等待IR=1跳出死循环
delay800us();
if(IR==1)
{
delay1ms(); //延时1ms
if(IR==1) //如果为连发码,跳出
{
return 0;
}
else
{
temp=temp|0x80; //取1
}
}
else
{
temp=temp|0x00; //取0
}
}
IR_num[i]=temp; //将字节存入数组
}
return 1; //接收了一帧完整数据
}
/******************************主函数********************************/
void main(void)
{
unsigned char i;
char j;
init_uart(); //串口初始化
XBYTE[0xa000]=0x00; // 关蜂鸣器
while(1)
{
j=IR_decode(); //获取按键编码
if(j!=0)
{
for(i=0;i<4;i++)
{
send_buffer(IR_num[i]); //通过串口发送按键编码
}
}
}
}
hongwaixian.zip_baods_遥控器数据码
版权申诉
148 浏览量
2022-09-22
20:46:52
上传
评论
收藏 21KB ZIP 举报
刘良运
- 粉丝: 67
- 资源: 1万+
最新资源
- 水稻病害基于Yolov8算法优化目标检测识别与AI辅助决策python源码+模型+使用说明.zip
- 海尔618算价表_七海5.20_16.00xlsx(1)(2).xlsx
- WebCrawler.scr
- 【计算机专业毕业设计】大学生就业信息管理系统设计源码.zip
- YOLO 数据集:8种路面缺陷病害检测【包含划分好的数据集、类别class文件、数据可视化脚本】
- JAVA实现Modbus RTU或Modbus TCPIP案例.zip
- 基于YOLOv8的FPS TPS AI自动锁定源码+使用步骤说明.zip
- JAVA实现Modbus RTU或Modbus TCPIP案例.zip
- 基于yolov8+streamlit的火灾检测部署源码+模型.zip
- 测试aaaaaaabbbbb
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈