資源簡介
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
評論
共有 條評論