基于STC8G单片机的红外发射接收程序

因半导体价格和国外形势,考虑使用国产芯片,先从单片机开始,在要求不高场合选用应用多的STC系列,主推STC8G和STC8H。程序源于网络并大幅修改,用于光电开关。参考NEC编码简化,发射管为IR204、接收头为IRM - H638T/TR2、单片机为STC8G1K08A。

题外话:因半导体价格涨幅较大和国外形势,开始考虑尽量使用国产芯片(支持国货),先从单片机开始,目前暂定要求不高的场合选择应用较多的STC系列,其中STC8G和STC8H系列为STC主推的型号。

注:程序大部分来源于网络,并做了较大幅度的修改,原因是不是用于红外数据传输,而是作为光电开关来用。

      参考NEC编码做了简化,便于延长发射管寿命。
      发射管为IR204、接收头为IRM-H638T/TR2、单片机为STC8G1K08A。

#include  "STC8.h"		
#include  "intrins.h"	//使用nop()函数需引用此文件

#define u8  uint8_t
#define u16 uint16_t
#define u32 uint32_t
typedef unsigned char    uint8_t;
typedef unsigned int     uint16_t;
typedef unsigned long    uint32_t;

//280us @11.0592MHz
#define T1_START()  TL1 = 0xE7; \  
                    TH1 = 0xF3; \
                    ET1 = 1; \
			        TR1 = 1
//引脚定义
sbit LED=P5^4;		//指示灯
sbit IR_IO=P3^3;    //红外发射
//sbit KEY=P5^5;	//按键
//数据定义
bit IR_Flag=0;		//红外数据接收完成标志位
u8 IR_time=0;		//下降沿之间的时间计数值
u8 IR_data[9];		//引导码+8个位数据各自占用的时间
bit IR_TimeFlag;            //红外发射延时到标志
unsigned char count;        //280us
#define IR_SENDDATA 0X05    //红外发射的数据
static u8 IR_bit;			//
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值