2024/4/25 红外遥控代码

51完结撒花!!!

这块如果IR听不懂可以看看那个状态机的相关视频。

Int0.c 

#include <REGX52.H>void Int0_Init(void)
{IT0=1;IE0=0;EX0=1;EA=1;PX0=1;
}//void Int0_Routine(void)   interrupt 0
//{
//		Num++;
//}

Timer0.c 

#include <REGX52.H>/*** @brief  定时器0初始化,1毫秒@12.000MHz* @param  无* @retval 无*/
void Timer0_Init(void)         //10us
{TMOD &= 0xF0;		//设置定时器模式TMOD |= 0x01;		//设置定时器模式TL0 = 0xA4;		//设置定时初值TH0 = 0xFF;		//设置定时初值TF0 = 0;		//清除TF0标志TR0 = 1;		//定时器0不计时
}void Timer0SetCounter(unsigned int Value)//把传过来的十六位数据拆成两个八位存进寄存器,设置初始值(要拆掉才能存)
{TH0=Value/256;TL0=Value%256;
}unsigned int Timer0_GetCounter(void)//把定时器里变化后的数据拿出来,得到时间差
{return (TH0<<8)|TL0;
}void Timer0_Run(unsigned char Flag)//主函数里启动定时器的开关
{TR0=Flag;
}

IR.c 

#include <REGX52.H>
#include "Timer0.h"
#include "Int0.h"unsigned int IR_Time;
unsigned char IR_State;unsigned char IR_Data[4];
unsigned char IR_pData;unsigned char IR_DataFlag;
unsigned char IR_RepeatFlag;
unsigned char IR_Address;
unsigned char IR_Command;void IR_Init(void)
{Timer0_Init();Int0_Init();
}unsigned char IR_GetDataFlag(void)
{if(IR_DataFlag){IR_DataFlag=0;return 1;}return 0;
}unsigned char IR_GetRepeatFlag(void)
{if(IR_RepeatFlag){IR_RepeatFlag=0;return 1;}return 0;
}unsigned char IR_GetAddress(void)
{return IR_Address;
}unsigned char IR_GetCommand(void)
{return IR_Command;
}void Int0_Routine(void) interrupt 0
{if(IR_State==0){Timer0SetCounter(0);Timer0_Run(1);IR_State=1;}else if(IR_State==1){IR_Time=Timer0_GetCounter();Timer0SetCounter(0);if(IR_Time>12442-500&&IR_Time<12442+500){IR_State=2;}else if(IR_Time>10368-500&&IR_Time<10368+500){IR_RepeatFlag=1;Timer0_Run(0);IR_State=0;}else{IR_State=1;}}else if(IR_State==2){IR_Time=Timer0_GetCounter();Timer0SetCounter(0);if(IR_Time>1032-500&&IR_Time<1032+500){IR_Data[IR_pData/8]&=~(0x01<<(IR_pData%8));IR_pData++;}else if(IR_Time>2074-500&&IR_Time<2074+500){IR_Data[IR_pData/8]|=(0x01<<(IR_pData%8));IR_pData++;}else{IR_pData=0;IR_State=1;}if(IR_pData>=32){IR_pData=0;if((IR_Data[0]==~IR_Data[1])&&(IR_Data[2]==~IR_Data[3])){IR_Address=IR_Data[0];IR_Command=IR_Data[2];IR_DataFlag=1;}Timer0_Run(0);IR_State=0;}}
}

main.c 

#include <REGX52.H>
#include "LCD1602.h"
#include "Delay.h"
#include "IR.h"unsigned int Num;
unsigned char Address;
unsigned char Command;
void main()
{LCD_Init();LCD_ShowString(1,1,"ADDR  CMD  NUM");LCD_ShowString(2,1,"00    00   000");IR_Init();while(1){if(IR_GetDataFlag()|| IR_GetRepeatFlag()){Address=IR_GetAddress();Command=IR_GetCommand();LCD_ShowHexNum(2,1,Address,2);LCD_ShowHexNum(2,7,Command,2);if(Command==IR_VOL_MINUS){Num--;}if(Command==IR_VOL_ADD){Num++;}LCD_ShowNum(2,12,Num,3);}}
}

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/3267.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#中=> “Lambda运算符”

在C#中&#xff0c;> 符号被称为“Lambda运算符”或“Lambda箭头”。它用于连接Lambda表达式中的参数列表和表达式主体&#xff0c;表示函数的输入和输出关系。因此&#xff0c;Lambda运算符充当了将参数映射到表达式的箭头。 Lambda运算符的左侧是参数列表&#xff0c;它们…

GRASSHOPPER电池Expression

Grasshopper中如果要实现简单的条件if语句的效果&#xff0c;可以使用电池Expression。 举例&#xff1a;获取两个数的差值&#xff0c;永远用大数减去小数

代码随想录算法训练营day45

70. 爬楼梯 &#xff08;进阶&#xff09; 五部曲&#xff1a; dp数组下标及含义&#xff1a;爬到有i个台阶的楼顶&#xff0c;有dp[i]种方法dp数组初始化&#xff1a;dp[0]1递推公式&#xff1a;dp[i] dp[i - j]遍历方向&#xff1a;target放在外循环&#xff0c;将nums放在…

OpenUI在windows下部署使用

OpenUI OpenUI是一个基于Python的AI对话平台&#xff0c;支持接入多种AI模型。 通过聊天的方式来进行UI设计&#xff0c;你可以通过文字来描述你想要的UI界面&#xff0c;OpenUI可以帮你实时进行渲染出效果 安装OpenUI 这里预设你的电脑上已安装git、Python和pip&#xff0…

Migrations

Entity Framework的Migrations工具是一个版本控制和数据库迁移的系统&#xff0c;它允许开发者以编程方式管理数据库模式的变更。 在使用Entity Framework时&#xff0c;开发者可以通过代码先行&#xff08;Code First&#xff09;的方式定义数据模型&#xff0c;然后使用Migr…

OSI网络七层协议<随手笔记>

1.OSI OSI&#xff08;Open System Interconnect&#xff09;&#xff0c;即开放式系统互连。 一般都叫OSI参考模型&#xff0c;是ISO组织在1985年研究的网络互连模型。该体系结构标准定义了网络互连的七层框架&#xff08;物理层、数据链路层、网络层、传输层、会话层、表示层…

关于腾讯云ocr银行卡识别报错url_1.URL is not a constructor

使用腾讯云进行ocr银行卡识别报错url_1.URL is not a constructor的问题各位怎么解决的能否留言告知一二 在线代码调试可以&#xff0c;但是js使用报错url_1.URL is not a constructor export function ocr(dataUrl){//dataUrl已转换为base64// Depends on tencentcloud-sdk-n…

账号安全及应用

一、账号安全控制 1.1系统账号清理 将用户设置为无法登陆 锁定账户 删除账户 设定账户密码&#xff0c;本质锁定 锁定配置文件-chattr&#xff1a; -a 让文件或目录仅供附加用途。只能追加 -i 不得任意更动文件或目录。 1.2密码安全控制 chage 1.3历史命令 history&am…

练习-字符串逆序统计

需求 完成字符串的逆序以及统计 设计一个程序&#xff0c;要求只能输入长度低于31的字符串&#xff0c;否则提示用户重新输入 打印如下内容: 您输入的字符串:abcabc 长度:6 逆序后为:cbacba 字符统计结果:{a: 2, b: 2, c: 2} 分析 1. 输入字符串(while循环) 2. 字符串长度小…

考研数学精选题目015

题目 lim ⁡ n → ∞ sin ⁡ [ π ln ⁡ ( 2 n 1 ) − ln ⁡ ( 2 n ) ] \mathop {\lim }\limits_{n \to \infty } \sin \left[ {{\pi \over {\ln \left( {2n 1} \right) - \ln \left( {2n} \right)}}} \right] n→∞lim​sin[ln(2n1)−ln(2n)π​] 来源 东南大学真题 证明 li…

Oracle数据库锁表问题解决指南:查询、释放与监控

在Oracle数据库管理中&#xff0c;处理锁表问题和查询正在运行的SQL是常见的任务。以下是针对这些需求的详细解析和操作步骤。 1. 查询锁定的表和对应会话 当数据库中出现性能问题或某些操作无法完成时&#xff0c;首先需要确认是否有锁表现象。以下SQL查询可以帮助你识别当前…

Clickhouse离线安装教程

https://blog.51cto.com/u_15060531/4174350 1. 前置 1.1 检查服务器架构 服务器&#xff1a;Centos7.X 需要确保是否x86_64处理器构架、Linux并且支持SSE 4.2指令集 grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 …

怡宝母公司冲刺上市:产能未满仍要募资扩产,突击分红25亿元

又一家瓶装水企业冲刺上市。 近日&#xff0c;怡宝母公司华润饮料&#xff08;控股&#xff09;有限公司&#xff08;下称“华润饮料”&#xff09;递交招股书&#xff0c;准备在港交所主板上市&#xff0c;BofA securities&#xff08;美银证券&#xff09;、中银国际、中信证…

07.OSPF的七种LSA类型

OSPF的LSA类型 在OSPF协议中,使用LSA来传递路由信息和拓扑信息,因此了解不同的LSA的内容和其功能,对了解OSPF协议的路由形成有很大帮助。这里的OSPF是v2版本,只针对IPv4来讲。 描述一条LSA的三要素: ADV Router产生者路由器、link-ID 链路标识符、LSA类型。 LSA1:每个OS…

C++初阶学习第三弹——类与对象(上)——初始类与对象

前言&#xff1a; 在前面&#xff0c;我们已经初步学习了C的一些基本语法&#xff0c;比如内敛函数、函数重载、缺省参数、引用等等&#xff0c;接下来我们就将正式步入C的神圣殿堂&#xff0c;首先&#xff0c;先给你找个对象 目录 一、类与对象是什么&#xff1f; 二、类的各…

Git 工作原理

Git 工作原理 | CoderMast编程桅杆https://www.codermast.com/dev-tools/git/git-workspace-index-repo.html Workspace&#xff1a;工作区Index / Stage&#xff1a;暂存区Repository&#xff1a;仓库区&#xff08;或本地仓库&#xff09;Remote&#xff1a;远程仓库 Git 一…

conda安装InvalidVersionSpecError: Invalid version spec: =2.7问题解决

conda安装问题 &#xff11;&#xff0e;InvalidVersionSpecError: Invalid version spec: 2.7问题&#xff12;&#xff0e;CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://repo.anaconda.com/pkgs/main/linux-64/repodata.json.bz2>&#xff13;&#x…

【课设资源分享】基于jsp的俱乐部会员系统

这份毕业设计是关于“基于JSP的健身俱乐部会员管理系统的设计与实现”。设计的主要目标是提高健身俱乐部的工作效率&#xff0c;通过集中管理顾客、员工和健身设备&#xff0c;实现俱乐部管理的规范化和科学化 源代码及论文资源点此获取 毕业设计的技术实现总结&#xff1a; …

T1级,生产环境事故—Shell脚本一键备份K8s的YAML文件

大家好&#xff0c;我叫秋意零。 最近对公司进行日常运维工作时&#xff0c;出现了一个 T1 级别事故。导致公司的“酒云网”APP的无法使用。我和我领导一起搞了一个多小时&#xff0c;业务也停了一个多小时。 起因是&#xff1a;我的部门直系领导&#xff0c;叫我**删除一个 …

数据结构练习-线性表的顺序存储

----------------------------------------------------------------------------------------------------------------------------- 1. 具有n个元素的线性表采用顺序存储结构&#xff0c;在其第i个位置插入一个新元素的算法间复杂度为 ( )(1≤i≤n1) 。 …