资源简介
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
相关资源
- Keil环境C8051F仿真调试驱动程序包括
- keil4开发nrf51822必要的pack包
- mc8051在spartan6上面的移植
- Si1000芯片手册
- 51单片机的一些课程设计项目
- 51单片机上的矩阵键盘程序,分别由汇
- SEED-XDS510PLUS仿真器安装、使用指南-
- SEED-XDS510Plus仿真器驱动
- 基于51单片机的高频函数信号发生器
- 51单片机开发快速上手电子资料包
- g31t-lm 最新BIOS
- 用51单片机控制直流电机仿真图和程序
- DS18B20 AT89C51 单片机 protus keil 温度传感
- 基于 51 单片机的数字频率计
- stc15f104 单片机实现EEPROM的读写复制测
- 基于51单片机的超声波避障测速小车
- AT89C51_datasheet
- 51单片机完整开发板的proteus仿真,供
- MCS-51单片机期刊
- can总线代码+资料mcp2510+s3c2410与sja100
- 89C51的全自动洗衣机控制系统论文加
- Spine 骨骼动画查看器 skeletonViewer-3.5
- mc8051开源8051软核V1.3
- 单片机教学动画素材共46个
- STC89C51芯片资料
- ttp226触摸感应芯片51程序
- 51单片机替换专业触摸IC电容式触摸开
- 浙大pat题目合集1001-1151
- NRF24L01 51单片机温度监控程序带上位机
- STM32驱动W5100实现http的网页浏览
评论
共有 条评论