• 大小: 1.97MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-10-31
  • 语言: 其他
  • 标签: 51  

资源简介

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\objects\
     文件         819  2018-12-20 17:24  51单片机红外解码\Infrared_ok\objects\STARTUP.obj
     文件       11710  2018-12-20 17:24  51单片机红外解码\Infrared_ok\objects\command.obj
     文件         994  2018-12-20 17:24  51单片机红外解码\Infrared_ok\objects\delay.obj
     文件        1210  2018-12-20 17:24  51单片机红外解码\Infrared_ok\objects\infrared.build_log.htm
     文件        1745  2018-12-20 17:24  51单片机红外解码\Infrared_ok\objects\infrared.hex
     文件         173  2018-12-20 17:24  51单片机红外解码\Infrared_ok\objects\infrared.lnp
     文件        9986  2018-12-20 17:25  51单片机红外解码\Infrared_ok\objects\main.obj
     文件        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个文件信息

评论

共有 条评论