STC15系列 8系列解码红外遥控器(NEC协议)(12mhz)

news/2025/2/12 21:52:55/

本次解码过程,使用【外部中断0】,【定时器0】相互组合

废话少续,直接上源代码,只需要简单修改,即可完成配置

/*=================================================================================//		功    能:STC8系列,15系列,中断解码红外NEC协议(12mhz)//		整    理:北聿 QQ:QKnA4147		日	期:2022.06.23===================================================================================*/#include <STC8Fxx.h>
#include <math.h>
#include <stdio.h>
#include <intrins.h>#define uchar unsigned charuchar irtime;									//红外接收时间
uchar startflag;	 							//启动接收
uchar irdata[33]; 								//存放33位(引导码1+2组用户码16+2组数据码16)
uchar bitnum;									//第几位码
uchar irreceok;									//表示红外接收完毕的标志位
uchar ircode[4];								//存放4组码
uchar irprosok;									//判断是否存储完成void Initload(void)								//12.000MHz
{TMOD = 0x02;								//定时器0方式2TL0 = 0x00;									//设置定时初值 0TH0 = 0x00;									//设置定时初值 0ET0 = 1; 									//定时器中断打开TR0 = 1;									//定时器0开始计时IT0 = 1;									//设置为下降沿触发EX0 = 1;									//打开外部中断EA = 1;										//总中断打开
}void timer0 () interrupt 1
{irtime++;									//最大255  红外时间
}void int0 () interrupt 0						//p3.2//接收红外信号处理
{static unsigned char bitnum;            static bit startflag;if(startflag){if(irtime<58&&irtime>=33)				//晶振12Mhz,小于15mm且大于8.4msbitnum = 0;								//第1位码irdata[bitnum] = irtime;				//先装引导码irtime = 0;bitnum++;	if(bitnum==33)							//等于33,接收完{bitnum = 0;	irreceok = 1; 			}}else{startflag = 1;irtime = 0;								//红外时间清零}
}void irpros(void)								//存储接收码
{uchar k,i,j;uchar cord,value;k = 1;										//不取引导码,从第1个开始for(j=0;j<4;j++){for(i=1;i<=8;i++){cord=irdata[k];	  if(cord>7)value|=0x80;					//高位相或if(i<8){value>>=1;}	k++;}ircode[j] = value;value=0;}irprosok = 1; 	
}void led(void)
{	//0xA8用户码一,0xDE用户码二(或用户码一的反码),0x01按键码,0xFE常用于按键码反码if((ircode[0] == 0xA8)&&(ircode[1] == 0xDE)&&(ircode[2] == 0x01)&&(ircode[3] == 0xFE)){//此处要是执行的功能}ircode[0]=0; ircode[1]=0; ircode[2]=0; ircode[3]=0; 
}void main(void)
{	Initload();while(1){if(irreceok)							//判断红外是否接收完{irpros();irreceok = 0;}if(irprosok){led();}}
}


http://www.ppmy.cn/news/496353.html

相关文章

STC15F2K60S2单片机

iap15f2k60s2是我们蓝桥杯8051d单片机开发板上的芯片&#xff0c;但是我们在keil4仿真软件里所引用的头文件是stc15f2k60s2。因为在单片机中&#xff0c;IAP和STC是同一系列产品。IAP和STC的最大区别在于&#xff1a;IAP可以将用户程序中的FLASH当做EEPROM使用&#xff0c;虽然…

KeilC51使用教程

1 点击桌面上的Keil uVision4图标&#xff0c;出现启动画面&#xff1a; 2. 点击“project — New uVision Project”新建一个工程&#xff1a; 3. 给这个工程取个名, 然后保存&#xff0c; 工程的后缀为uvporj。 4.弹出一个框&#xff0c;在CPU类型下我们找到并选中…

对于reg51.h、reg52.h、regx52.h、stc15f2k60s2.h的思考

早在学习51单片机时就在想这几个头文件到底有什么区别&#xff0c;在不同的地方有不同的用法。现在再回过头来看心中不禁了然。 reg52.h和stc15f2k60s2.h对于使用蓝桥杯的板子&#xff0c;都可以正常使用&#xff0c;但是又有一些区别&#xff0c;简单来说&#xff0c;我们单片…

MCS-51单片机 特殊功能寄存器(SFR)

在80C51单片机中设置了与片内RAM统一编址的21个特殊功能寄存器&#xff08;SFR&#xff09;。访问SFR只允许使用直接寻址方式。特殊功能寄存器&#xff08;SFR&#xff09;每一位的定义和作用与单片机各部件直接相关。 1. 与运算器相关的寄存器&#xff08;3个&#xff09; ①累…

keil c51 关键字

一&#xff1a;KeilCx51扩展的关键字&#xff1a; •at •alien •bdata •bit •code •compac •data •far •idata •interrupt •large •pdata •priority •reentrant •sbit •sfr •sfr16 •small •task •using •xdata 二&#xff1a;C51扩展关键字说明 1、_at…

XC5VLX30T-2FF323I Virtex-5 LXT FPGA IC 产品参数

概述 Virtex-5 FPGA有-3&#xff0c;-2&#xff0c;-1速度等级&#xff0c;其中-3具有最高的性能。Virtex-5 FPGA直流和交流特性指定为商业和工业级别。除工作温度范围外&#xff0c;除非另有说明&#xff0c;所有直流和交流电气参数对于特定转速等级是相同的(即-1转速等级的工…

stc15f2k60s2.h

#ifndef __STC15F2K60S2_H_ #define __STC15F2K60S2_H_/ //注意: STC15W4K32S4系列的芯片,上电后所有与PWM相关的IO口均为 // 高阻态,需将这些口设置为准双向口或强推挽模式方可正常使用 //相关IO: P0.6/P0.7/P1.6/P1.7/P2.1/P2.2 // P2.3/P2.7/P3.7/P4.2/P4.4/P4.…

KGE性能指标:MRR,MR,HITS@1,HITS@3,HITS@10

本文将介绍用于衡量知识图谱嵌入&#xff08;Knowledge Graph Embedding&#xff0c;KGE&#xff09;模型性能中最常用的几个指标&#xff1a;MRR&#xff0c;MR&#xff0c;HITS1&#xff0c;HITS3&#xff0c;HITS10。 一、MRR MRR的全称是Mean Reciprocal Ranking&#xff0…