资源简介
STC12C5410AD单片机使用定时中断红外解码完整源程序,包括实测波形、红外资料。

代码片段和文件信息
#include
#include
#include
#include
#include
#include “reg52.h“
#include “command.h“
#include “delay.h“
#include “absacc.h“
#include “system.h“
#define Uchar unsigned char
#define Uint unsigned int
#define Ulong unsigned long
//sfr WDT_CONTR = 0xE1;
//send_char:直接发送字符函数
void send_char ( char s_data )
{
SBUF = s_data;
while( TI==0 )
;
TI=0;
}
extern Uint timer_1;
extern Uint timer_2;
#define ONE_SEC 8000
unsigned int run_timer = 0;
extern Uint timer_1;
extern Uint timer_2;
extern char IR_ok;
void TimeOut_ISR (void) interrupt 1 using 3 //12*(0xFFFF+1-0xFFA4)/11059200=250us
{
TH0 = Timer0_Reload / 256;
TL0 = Timer0_Reload % 256;
run_timer ++;
timer_1 ++;
timer_2 ++;
if( run_timer >= ONE_SEC ) //1秒闭烁
{
run_timer = 0;
LED_RUN = !LED_RUN;
}
IR_RX_HT6121();
}
/************* 本地变量声明 **************/
bit P_IR_RX_temp; //Last sample
bit B_IR_Sync; //已收到同步标志
uchar IR_SampleCnt; //采样计数
uchar IR_BitCnt; //编码位数
uchar IR_UserH; //用户码(地址)高字节
uchar IR_UserL; //用户码(地址)低字节
uchar IR_data; //数据原码
uchar IR_DataShit;
/******************** 红外采样时间宏定义 用户不要随意修改 *******************/
#define D_TIMER0 Timer_0 //125us
#if (( D_TIMER0 <= 250 )&&( D_TIMER0 >= 60 ))
#define D_IR_sample D_TIMER0 //定义采样时间,在60us~250us之间
#endif
#define D_IR_SYNC_MAX (15000/D_IR_sample) //SYNC max time
#define D_IR_SYNC_MIN (9700 /D_IR_sample) //SYNC min time
#define D_IR_SYNC_DIVIDE (12375/D_IR_sample) //decide data 0 or 1
#define D_IR_DATA_MAX (3000 /D_IR_sample) //data max time
#define D_IR_DATA_MIN (600 /D_IR_sample) //data min time
#define D_IR_DATA_DIVIDE (1687 /D_IR_sample) //decide data 0 or 1
#define D_IR_BIT_NUMBER 8 //bit number
//*******************************************************************************************
//**************************** IR RECEIVE MODULE ********************************************
void IR_RX_HT6121(void)
{
uchar SampleTime;
IR_SampleCnt++; //Sample + 1
F0 = P_IR_RX_temp; //Save Last sample status //(me:记录上次电平)
P_IR_RX_temp = P_IR_RX; //Read current status //(me:记录当前电平)
if( F0 && !P_IR_RX_temp ) //Last sample is high,and current sample is low so is fall edge //(me:判断下降沿)
{
SampleTime = IR_SampleCnt; //get the sample time //(me:记录进入定时器次数)
IR_SampleCnt = 0; //Clear the sample counter //(me:计数清零)
if( SampleTime > D_IR_SYNC_MAX ) //(me:if采样次数>引导码)
B_IR_Sync = 0; //large the Maxim SYNC time then error //(me:fail,清除引导码标志)
else if( SampleTime >= D_IR_SYNC_MIN ) //SYNC //(me:if采样次数>=9.7ms)
{
if( SampleTime >= D_IR_SYNC_DIVIDE ) //(me:采样次数>=12.375ms,检测到引导码)
{
B_IR_Sync = 1; //has received SYNC //(me:置位引导码标志)
IR_BitCnt = D_IR_BIT_NUMBER; //Load bit number
}
}
else if( B_IR_Sync ) //has received SYNC //(me:if前面已经检测到引导码)
{
if( SampleTime > D_IR_DATA_MAX )
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-12-21 08:27 51单片机红外解码\
文件 140511 2018-12-17 17:59 51单片机红外解码\HS0038B.pdf
目录 0 2018-12-21 08:26 51单片机红外解码\Infrared_ok\
目录 0 2018-12-21 08:26 51单片机红外解码\Infrared_ok\Listings\
文件 14149 2018-12-20 17:24 51单片机红外解码\Infrared_ok\Listings\STARTUP.lst
文件 6667 2018-12-20 17:24 51单片机红外解码\Infrared_ok\Listings\command.lst
文件 1379 2018-12-20 17:24 51单片机红外解码\Infrared_ok\Listings\delay.lst
文件 13681 2018-12-20 17:24 51单片机红外解码\Infrared_ok\Listings\infrared.m51
文件 5337 2018-12-20 17:25 51单片机红外解码\Infrared_ok\Listings\main.lst
目录 0 2018-12-21 08:26 51单片机红外解码\Infrared_ok\ob
文件 819 2018-12-20 17:24 51单片机红外解码\Infrared_ok\ob
文件 11710 2018-12-20 17:24 51单片机红外解码\Infrared_ok\ob
文件 994 2018-12-20 17:24 51单片机红外解码\Infrared_ok\ob
文件 1210 2018-12-20 17:24 51单片机红外解码\Infrared_ok\ob
文件 1745 2018-12-20 17:24 51单片机红外解码\Infrared_ok\ob
文件 173 2018-12-20 17:24 51单片机红外解码\Infrared_ok\ob
文件 9986 2018-12-20 17:25 51单片机红外解码\Infrared_ok\ob
文件 6376 2015-07-08 16:02 51单片机红外解码\Infrared_ok\STARTUP.A51
文件 179730 2018-12-21 08:26 51单片机红外解码\Infrared_ok\infrared.uvgui.jianhuawu
文件 6306 2018-12-13 18:53 51单片机红外解码\Infrared_ok\infrared.uvopt
文件 14922 2018-12-13 18:56 51单片机红外解码\Infrared_ok\infrared.uvproj
目录 0 2018-12-21 08:26 51单片机红外解码\Infrared_ok\user\
文件 3623 2018-12-20 17:21 51单片机红外解码\Infrared_ok\user\command.c
文件 435 2018-12-20 16:23 51单片机红外解码\Infrared_ok\user\command.h
文件 255 2018-12-13 18:49 51单片机红外解码\Infrared_ok\user\delay.c
文件 235 2018-12-13 16:21 51单片机红外解码\Infrared_ok\user\delay.h
文件 2438 2018-12-20 17:36 51单片机红外解码\Infrared_ok\user\main.c
文件 2453 2018-12-20 17:18 51单片机红外解码\Infrared_ok\user\system.h
文件 12527 2018-12-21 08:25 51单片机红外解码\readme.docx
目录 0 2018-12-20 23:19 51单片机红外解码\实际波形\
文件 161895 2018-12-17 17:38 51单片机红外解码\实际波形\1.jpg
............此处省略5个文件信息
- 上一篇:nRF2401无线模块使用详解+例程
- 下一篇:zigbee中文版.doc
相关资源
- 51 单片机 红外避障小车 大集合136
- 最新的北京地铁shp文件75146
- 程序员专用字体YaHei.Consolas.1.11b42517
- STC8951系列单片机中方指南
- 基于MCS_51单片机的工业屏柜散热方案
- 清翔电子MCS51开发板资料_新版 01_开发
- MCS_51单片机与8255A的接口设计
- Rtx51_tiny_RTOS中文版.pdf
- 51单片机PWM程序,占空比、周期可调整
- 51单片机多功能自行车测速仪
- proteus仿真 AT89C51输出各种波形
- 00
- 用51单片机实现G代码翻译
- 简易的电阻电容测量电路
- 51单片机基于protues的几个仿真实例
- 51单片机PCB设计图
- PC -- 单片机的串口数据传输系统设计
- 51模拟SPI读写SD卡(包括Fat和Fat32文件
- NRF24L01实现51与STM32双向通讯
- 基于c8051f020的AD转换程序及LCD显示程序
- 51单片机控制舵机程序
- 51单片机读取温度数据存储到SD卡中并
- 【单片机】51单片机数码管显示万年历
- 课程设计蔬菜大棚自动控制系统,包
- 基于AT89C51的数据采集系统设计新方法
- C51单片机汇编指令查询、学习工具集
- 基于8051单片机的红外接收程序
- 基于89c51的数字钟
- 8251 全双工异步通信
- 8051F040SMBUS多机通信
评论
共有 条评论