51单片机HS0038解码程序,很详细!
单片机源程序如下:
- #include <reg51.h>
- #define hw_hs0038_ENTITY
- #include "hw_hs0038.h"
- sbit in=P3^2;
- //uchar i=0;
- //uchar k[2];
- bit bdata b=0;
- /*
- void timer0(void) interrupt 1 using 1
- {
- b=1;
- TH0=0;
- TL0=0;
- }
-
- */
- void hw_start()
- {
- while(in==1); //等待低电平到来
- }
- void hw_pulse()
- { //测试脉冲宽度
- //i=0;
- TR0=1; //启动定时器0测试低电平宽度
- while(in==0); //高电平到了,
- TR0=0; //关闭定时器0,低电平宽度测试完
- //k[i]=TH0;
- //i++;
- TH0=0;
- TL0=0;
- TR0=1; //高电平到了,启动定时器1,测试高电平宽度
- while(in==1); //低电平到了,
- TR0=0; //关闭定时器1,高电平宽度测试完
- //k[i]=TH0;
- //i++;
- if(TH0<3)
- b=1;
- else b=0;
- TH0=0;
- TL0=0;
- }
-
- uchar hw_key()
- {
- uchar j,m;
- //i=0;
- hw_start(); //等待低电平到来
- hw_pulse();
- for(j=0;j<24;j++) //测试用户码脉冲宽度
- {
- hw_pulse();
- }
- for(j=0;j<8;j++) //测试键码脉冲宽度
- {
- hw_pulse();
- if(b==1)
- m=(m<<1)|1;
- else
- m<<=1;
- }
- return m; //键码
- }
复制代码
所有资料51hei提供下载:
红外HS0038.rar
(86.64 KB, 下载次数: 106)
|