资源简介

用51单片机接收红外遥控并解码,然后在红外LED灯转发刚收到的遥控码,并把数据保存到AT24C256中储存,下载解压即可用keil打开,编译0错误0警告,代码全部上备注,方便查阅,方便移植

资源截图

代码片段和文件信息

#include “STC15xxx.h“
#define uint unsigned int
#define uchar unsigned char

void Send_Byte_UART1(unsigned char dat);

#include “AT24C256.h“
#include “GET_IR_KEY.h“

#define T2K6Hz 170 //FOSC = 11.0592MHZ
#define T38KHz 12 //FOSC = 11.0592MHZ

sbit LED_Left_B_IO  = P5^5; 
sbit LED_Left_R_IO  = P5^4; 
sbit LED_Right_R_IO = P3^7; 
sbit LED_Right_B_IO = P1^5;
sbit KEY_Left_IO  = P3^3;
sbit KEY_Right_IO  = P3^6;  
sbit FMQ_IO   = P1^0;
sbit IR_OUT_IO   = P1^1;
 
uint Value_CCAP0; 
uint Value_CCAP1;
bit test;
uchar Test_U8;


void Delay(unsigned int z)
{
unsigned int x=0y=0;
for(x = 144; x > 0; x--)
for(y = z; y > 0; y--);
}
void UartInit(void) //9600bps@11.0592MHz
{
SCON = 0x50; //8位数据可变波特率
AUXR |= 0x01; //串口1选择定时器2为波特率发生器
AUXR |= 0x04; //定时器2时钟为Fosc即1T
T2L = 0xE0; //设定定时初值
T2H = 0xFE; //设定定时初值
AUXR |= 0x10; //启动定时器2
}
void Init_CCP_PCA()
{
//PCA工作模式寄存器
CMOD = 0;
// bit7:CIDL = 0;//==0空闲模式下PCA计数器继续工作,==1空闲模式停止工作
//
// //PCA计数脉冲源选择控制位
// bit3:CPS2 = 0; //000 系统时钟/12
// bit2:CPS1 = 0; //001 系统时钟/2
// bit1:CPS0 = 0; //010 定时器溢出脉冲
// //。。。。还有很多,STC15 930页
//
// bit0:ECF = 1; //==0禁止寄存器CCON中的CF位的中断,==1允许

//PCA控制寄存器CCON
CF = 0; //PCA计数器阵列溢出标志,硬件置1软件清零
CR = 1; //PCA计数器阵列运行控制位,置1启动,清零关闭

CCF2 = 0; //PCA模块2中断标志,硬件置1,软件清零
CCF1 = 0; //PCA模块1中断标志,硬件置1,软件清零
CCF0 = 0; //PCA模块0中断标志,硬件置1,软件清零

//PCA比较/捕获寄存器CCAPM0
CCAPM0 = 0x49;

CCAPM0 |= 0x04;//TOG0 = 1;

//PCA比较/捕获寄存器CCAPM1
CCAPM1 = 0x49;
}
//void Timer0Init(void) //100微秒@11.0592MHz
//{
// AUXR |= 0x80; //定时器时钟1T模式
// TMOD &= 0xF0; //设置定时器模式
// TL0 = 0xAE; //设置定时初值
// TH0 = 0xFB; //设置定时初值
// TF0 = 0; //清除TF0标志
// TR0 = 1; //定时器0开始计时
//}
void Init_MCU()
{  
UartInit();//初始化串口
Init_CCP_PCA();//初始化CCP/PCA模块
// Timer0Init();//初始化定时器0

EA = 1;
ES = 1; //开串口中断
// EX0 = 1;//开外部中断0
// IT0 = 1;//==1下降沿触发,==0双沿触发
// ET0 = 1;//开定时器0中断

FMQ_IO = 0;
IR_OUT_IO = 1;

P1M0 = 0x03;
P1M1 = 0;  
P3M0 = 0;
P3M1 = 0; 
P5M0 = 0;
P5M1 = 0;

// PT0  = 1;
// PPCA = 0;
// PX0  = 0;
// PS   = 0;
}
void FMQ_Di() 
{
CCAPM1 |= 0x04;//TOG1 = 1;
Delay(500); 
CCAPM1 &= ~0x04;//TOG1 = 0;
FMQ_IO = 0;
}
void Send_Byte_UART1(unsigned char dat)
{
ES = 0;
SBUF =dat;
while(!TI);
TI = 0;
ES = 1;
}
/*
void Send_Staing_UART1(unsigned char *dp)
{
unsigned char i;

while(dp[i] != “/0“)
{
Send_Byte_UART1(dp[i++]);
}
} */
void main()
{
  Init_MCU();

WP = 0;
WriteFm24c256(327660x41);
Test_U8 = ReadFm24c256(32766); 
Send_Byte_UART1(Test_U8);  
Test_U8 = ReadFm24c256(1234); 
Send_Byte_UART1(Test_U8); 
Test_U8 = ReadFm24c256(1); 
Send_Byte_UART1(Test_U8);

while(1)
{
if(KEY_Left_IO == 0)
{
FMQ_Di(); 
while(KEY_Left_IO == 0);
}  
if(KEY_Right_IO == 0)
{  
FMQ_Di(); 
while(KEY_Right_IO == 0);
}
if(test == 1)
{
test = 0;
FMQ_Di();
}

}
}    
void Init0() interrupt 0
{
EX

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-01-22 21:33  红外遥控转发器 20180628 V10\
     文件        3392  2018-06-29 15:23  红外遥控转发器 20180628 V10\AT24C256.h
     文件        1895  2018-06-29 16:34  红外遥控转发器 20180628 V10\GET_IR_KEY.h
     文件        6376  2009-05-07 14:37  红外遥控转发器 20180628 V10\STARTUP.A51
     文件       14051  2018-07-02 22:42  红外遥控转发器 20180628 V10\STARTUP.LST
     文件         749  2018-07-02 22:42  红外遥控转发器 20180628 V10\STARTUP.OBJ
     文件       12805  2018-04-24 15:16  红外遥控转发器 20180628 V10\STC15xxx.h
     文件       19748  2019-01-22 21:33  红外遥控转发器 20180628 V10\红外遥控转发器
     文件        1070  2019-01-22 21:33  红外遥控转发器 20180628 V10\红外遥控转发器.build_log.htm
     文件        4006  2019-01-22 21:33  红外遥控转发器 20180628 V10\红外遥控转发器.c
     文件        3653  2019-01-22 21:33  红外遥控转发器 20180628 V10\红外遥控转发器.hex
     文件          76  2019-01-22 21:33  红外遥控转发器 20180628 V10\红外遥控转发器.lnp
     文件        9786  2019-01-22 21:33  红外遥控转发器 20180628 V10\红外遥控转发器.LST
     文件       25342  2019-01-22 21:33  红外遥控转发器 20180628 V10\红外遥控转发器.M51
     文件       21684  2019-01-22 21:33  红外遥控转发器 20180628 V10\红外遥控转发器.OBJ
     文件        2927  2018-07-02 22:42  红外遥控转发器 20180628 V10\红外遥控转发器.plg
     文件       89200  2019-01-22 21:33  红外遥控转发器 20180628 V10\红外遥控转发器.uvgui.Administrator
     文件        6828  2019-01-22 21:32  红外遥控转发器 20180628 V10\红外遥控转发器.uvopt
     文件       14599  2019-01-22 21:32  红外遥控转发器 20180628 V10\红外遥控转发器.uvproj
     文件          63  2019-01-22 21:33  红外遥控转发器 20180628 V10\红外遥控转发器.__i
     文件       57387  2018-06-30 11:02  红外遥控转发器 20180628 V10\红外遥控转发器_uvopt.bak
     文件       13789  2018-06-29 14:01  红外遥控转发器 20180628 V10\红外遥控转发器_uvproj.bak

评论

共有 条评论