• 大小: 0.04M
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2024-04-21
  • 语言: C/C++
  • 标签: stc  

资源简介

STC8G1K08A红外遥控点灯

资源截图

代码片段和文件信息


*****************************************************************/
#include “STC8.h“
#include  “intrins.h“
/************************常用数据类型定义*************************/
#define u8  uint8_t
#define u16 uint16_t
#define u32 uint32_t
typedef unsigned char    uint8_t;
typedef unsigned int     uint16_t;
typedef unsigned long    uint32_t;
/************************端口/引脚定义区域************************/
sbit LED1=P3^3;
sbit LED2=P5^4;
//----------------------------------------------------------------
//sbit KEY=P3^2;
sbit KEY=P5^5;   
/************************用户自定义数据区域***********************/
bit IR_KEY=0;
bit IR_Flag=0;
u8 IR_time=0;
u8 IR_code[4];
u8 IR_data[33];
/**************************函数声明区域***************************/
void delay(u16 Count);
void Time0_init(void);
void Int0_init(void);
void IR_decode(void);
void IR_control(void);
/***************************主函数区域****************************/
void main(void)
{

P3M0|=0x08; //P3.3引脚为推挽输出模式
P3M1&=0xF7; //P3.3引脚为推挽输出模式
RSTCFG&=0xEF; //复位引脚P5.4当做普通I/O引脚
P5M0|=0x10; //P5.4引脚为推挽输出模式
P5M1&=0xEF; //P5.4引脚为推挽输出模式
P5M0&=0xDF; //P5.5引脚为准双向口模式
P5M1&=0xDF; //P5.5引脚为准双向口模式
Time0_init(); //定时计数器0初始化函数
Int0_init(); //外部中断0初始化函数
delay(100); //等待配置稳定
LED1=LED2=1; //上电后两个LED都保持熄灭状态
while(1)
{
if(IR_Flag) //如果有红外数据传入并接收完成
{
IR_decode(); //调用红外解码函数(用于得到键值)
IR_Flag=0; //清除红外数据接收完成标志位
}
if(IR_KEY) //如果红外解析成功,认定按键按下
{
IR_control(); //调用红外控制函数(用户控制LED灯)
}
}
}
/****************************************************************/
//延时函数delay(),有形参Count无返回值
/****************************************************************/
void delay(u16 Count)
{
while(Count--)
{
_nop_();
}
}
/****************************************************************/
//定时计数器0初始化函数Time0_init(),无形参,无返回值
/****************************************************************/
void Time0_init(void) //278微秒@11.0592MHz
{
AUXR &= 0x7F; //定时器时钟12T模式
TMOD &= 0xF0; //T0工作在工作方式2,8位自动重装载模式
TMOD |= 0x02; //T0工作在工作方式2,8位自动重装载模式
TL0 = 0x00; //定时初值为0,则T0定时时间达到最大(约0.278ms)
TH0 = 0x00; //定时初值为0,则T0定时时间达到最大(约0.278ms)
TF0 = 0; //清除TF0标志
ET0=1; //使能T0的溢出中断
TR0=1; //开启T0运行控制位,允许T0开始计数
//定时时间计算:t=256*12/11.0592=277.77us
}
/****************************************************************/
//外部中断0初始化函数Int0_init(),无形参,无返回值
/****************************************************************/
void Int0_init(void)
{
IT0=1; //配置外部中断0信号触发方式为边沿触发(下降沿有效)
EX0=1; //使能INT0中断
EA=1; //打开单片机总中断开关EA
}
/****************************************************************/
//红外解码函数IR_decode(),用于得到键值,无形参,无返回值
/****************************************************************/
void IR_decode(void)
{
u8 ijk;
//变量i控制循环次数,用于最终得到4个字节数据(2个用户码+2个数据码)
//变量j控制循环次数,通过循环和时长判断把8个时间间隔分析为“0码”
//和“1码”,然后最终通过按位或运算及右移运算得到红外数据,变量k用
//于控制IR_data[]数组的下标变化。
u8 Timer_ValueIR_Value;
//变量Timer_Value用于从IR

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       6699  2020-10-14 16:29  红外遥控点灯\main.c

     文件      12185  2020-06-07 00:11  红外遥控点灯\main.LST

     文件      24559  2020-06-07 00:11  红外遥控点灯\main.OBJ

     文件      18957  2020-06-06 22:29  红外遥控点灯\STC8.H

     文件      23524  2020-06-07 00:11  红外遥控点灯\test

     文件       1563  2020-06-07 00:11  红外遥控点灯\test.hex

     文件         40  2020-06-07 00:11  红外遥控点灯\test.lnp

     文件      10118  2020-06-07 00:11  红外遥控点灯\test.M51

     文件        263  2020-07-18 18:08  红外遥控点灯\test.plg

     文件      71558  2020-07-18 18:08  红外遥控点灯\test.uvgui.Administrator

     文件      71557  2020-07-18 17:57  红外遥控点灯\test.uvgui_Administrator.bak

     文件       5042  2020-07-18 18:08  红外遥控点灯\test.uvopt

     文件      13424  2018-07-30 22:37  红外遥控点灯\test.uvproj

     目录          0  2020-10-14 16:27  红外遥控点灯

----------- ---------  ---------- -----  ----

               259489                    14


评论

共有 条评论