跪求高手帮忙修改,想用串口助手读出红外遥控的按键值,问题是串口助手啥都没收到,先谢过了!!!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了跪求高手帮忙修改,想用串口助手读出红外遥控的按键值,问题是串口助手啥都没收到,先谢过了!!!相关的知识,希望对你有一定的参考价值。

#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
sbit IR=P3^2; //红外接口标志
unsigned char irtime;//红外用全局变量
bit irpro_ok,irok;
unsigned char IRcord[4];
unsigned char irdata[33];
void Ir_work(void);
void Ircordpro(void);
void tim0_isr (void) interrupt 1 using 1

irtime++; //用于计数2个下降沿之间的时间

void EX0_ISR (void) interrupt 0 //外部中断0服务函数

static unsigned char i; //接收红外信号处理
static bit startflag; //是否开始处理标志位
if(startflag)

if(irtime<63&&irtime>=33)//引导码 TC9012的头码,9ms+4.5ms
i=0;
irdata[i]=irtime;//存储每个电平的持续时间,用于以后判断是0还是1
irtime=0;
i++;
if(i==33)

irok=1;
i=0;


else

irtime=0;
startflag=1;


void TIM0init(void)//定时器0初始化

TMOD=0x02;//定时器0工作方式2,TH0是重装值,TL0是初值
TH0=0x00; //重载值
TL0=0x00; //初始化值
ET0=1; //开中断
TR0=1;

void EX0init(void)

IT0 = 1; //指定外部中断0下降沿触发,INT0 (P3.2)
EX0 = 1; //使能外部中断
EA = 1; //开总中断

void Ir_work(void)//红外键值散转程序

SBUF=IRcord[2];
while(!TI); //等待发送数据完成
TI=0; //清除发送完成标志位
irpro_ok=0;//处理完成标志

void Ircordpro(void)//红外码值处理函数

unsigned char i, j, k;
unsigned char cord,value;
k=1;
for(i=0;i<4;i++) //处理4个字节

for(j=1;j<=8;j++) //处理1个字节8位

cord=irdata[k];
if(cord>7)//大于某值为1
value|=0x80;
if(j<8)

value>>=1;

k++;

IRcord[i]=value;
value=0;

irpro_ok=1;//处理完毕标志位置1

void main(void)

SCON=0X50; //设置为工作方式1
TMOD=0X20; //设置计数器工作方式2
PCON=0X80; //波特率加倍
TH1=0XF3; //计数器初始值设置,注意波特率是4800的
TL1=0XF3;
EA=1; //打开总中断
TR1=1; //打开计数器

EX0init(); //初始化外部中断
TIM0init();//初始化定时器
while(1)//主循环

if(irok) //如果接收好了进行红外处理

Ircordpro();
irok=0;

if(irpro_ok) //如果处理好后进行工作处理,如按对应的按键后显示对应的数字等

Ir_work();


参考技术A 你有可能还没有运行到发送命令的那个程序去,先单编一个串口通讯程序,把串口通讯测试成功如下:
uint8 code trdata1[]=0,0,24,160,1,236;
void Txd2_num(void)

uint8 i=0;
for(i=0;i<6;i++)

Usart1.RxdBuf[i]=trdata1[i];

SBUF =Usart1.TxdBuf[0];
Usart1.TxdCnt=0;
Usart1.TxdNum =6;
Usart1.TxdBusy=1;

/*****************************************
*串口1中断
*****************************************/
void RXD_Int_Service() interrupt 4

uint8 ch;
if(RI)

RI=0;
Usart1.RxdDly=6; //超过0.3S清空计数
Usart1.RxdBuf[Usart1.RxdCnt]=ch;
Usart1.RxdCnt++;
if(Usart1.RxdCnt>=10)

Usart1.RxdTrue=1; //接收正确。
Usart1.RxdNum=Usart1.RxdCnt;
Usart1.RxdCnt=0;


if(TI)

TI=0;
if(Usart1.TxdBusy)

Usart1.TxdCnt++;
if(Usart1.TxdCnt<Usart1.TxdNum) //发送计数。
SBUF=Usart1.TxdBuf[Usart1.TxdCnt];
else
Usart1.TxdBusy=0; //发送完成一帧数据,标志位。




我的红外摇控接收程序如下,可作参考

//*********************************************
//中断接收摇控头的信号.
unsigned int code comp[5]=6000,2000,500,200,500; //分别代表9mS,4.5mS,1.5mS,0.56mS,1.5mS.
//此时晶振为12MHz
unsigned char Cnt;
void Ex_Int0_InSevice() interrupt 0

unsigned char j=0,i=0,ch[4];
unsigned int comp_data=0;
ch[0]=0;
ch[1]=0;
ch[2]=0;
ch[3]=0;
if(red_rxd==0 && !rxd_ture && RedDly==0)


while(red_rxd==0)comp_data++; //等高电平的到来
if(comp_data>comp[0]) //9mS的低电平

comp_data=0;
while(red_rxd==1)

comp_data++; //等低电平的到来
if(comp_data>5000)
return;


if(comp_data>comp[1]) //4.5mS的低电平

while(i<4)

for(j=0;j<8;j++)

while(red_rxd==0); //等高电平的到来
comp_data=0;
while(red_rxd==1)

comp_data++; //等低电平的到来
if(comp_data>1500)
return;

ch[i]=ch[i]>>1;
if(comp_data>comp[2])
ch[i]=ch[i]|0x80;

i++;

Cnt++;
if(Cnt>3)Cnt=0;
if(ch[0]==0x00&&ch[1]==0xff&&(ch[2]+ch[3])==0xff)

IR_key=ch[2];
rxd_ture=1;




RedDly=3;
追问

这个是什么程序,好像和红外无关阿!

能请你帮忙修改下吗,我一定把财富补上

本回答被提问者采纳

跪求高手帮忙!!!!解决logparser的问题

我在logparser软件中查询服务器日志文件,需要查询服务器日志一天的点击量是多少,并且要算出一天中每个小时的点击率是多少?

参考技术A 每小时的点击量
logparser "SELECT TO_LOCALTIME(QUANTIZE(TO_TIMESTAMP(date, time),3600)) AS Hours, COUNT(*) AS Hits INTO IISHC_RequestsPerHour.csv FROM *.log where To_Date(TO_LOCALTIME(TO_TIMESTAMP(date, time)))=TIMESTAMP('10/08/2010','MM/dd/yyyy' ) GROUP BY Hours ORDER BY Hours" -i:IISW3C -o:CSV -recurse:-1
将时间改成当天的时间就行。
每天的点击量
ogparser "SELECT To_Date(TO_LOCALTIME(TO_TIMESTAMP(date, time))) AS [Date1], c-ip AS CIP INTO IISHC_DistinctClientIPPerDay.csv FROM *.log GROUP BY [Date1], CIP" -i:IISW3C -o:CSV -recurse:-1

以上是关于跪求高手帮忙修改,想用串口助手读出红外遥控的按键值,问题是串口助手啥都没收到,先谢过了!!!的主要内容,如果未能解决你的问题,请参考以下文章

46.Linux-分析rc红外遥控平台驱动框架,修改内核的NEC解码函数BUG

STC学习:串口通信

ESP328.红外遥控实验(红外遥控解码库)

FPGA的学习:红外遥控

FPGA的学习:红外遥控

红外万能遥控器3.0,给家里带遥控器的家电赋能