⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 一个基于ARM单片机的红外解码的程序,红外时序通过串口发出,是红外解码的一个辅助助手,非常好用.
💻 C
字号:
//本程序针对引导码:9ms低->4.5ms高
//连发码:9ms低->2.25ms高
//0:0.565低->0.56高
//1:0.565低->1.125高
//数据位为32位,即4个字节
//的编码遥控器使用
//控制器芯片:NEC公司芯片6122/6121
//使用ARM资源:1个外部中断(本程序中使用EINT2),1个定时器,不用开中断(本程序中使用定时器1)
//通过串口发送解码后的数据,波特率:115200
//2007年5月6号

#include "config.h"
#include "irquart0.h"


uint32	Reddata;
uint8 KeyDown;
uint8 Redinfo;
void main(void)
{
	UARTMODE set;

	set.datab = 8;
	set.stopb = 1;
	set.parity = 0;

	rcv_new = 0;

	PINSEL0 |= 0x05;					  //设置IO连接到UART0
	PINSEL0=(PINSEL0&(~(3<<14)))|(3<<14);


	UART0_Init(115200,set);
	//U0FCR = 0x81;	//接收器触发点为8个字符
	U0FCR = 0x01;	//接收器触发点为1个字符

	U0IER = 0x01;	//接收中断开,发送中断关

	//串口0中断设置
	VICVectCntl0 = 0x20|0x06;
	VICVectAddr0 = (uint32)IRQ_UART0;
	VICIntEnable = 1<<0x06;

	/* 外部中断2初始化 */

	VICVectCntl5   = 0x20 | 16;			// 分配外部中断0到向量中断0
	VICVectAddr5   = (uint32)IRQ_Eint2;	// 设置中断服务程序地址
	VICIntEnable   = 1 << 16;			// 使能EINT2中断
	//EXTWAKE        = 0x01;				// 外部中断0唤醒芯片
	EXTINT         = 0x0f;				// 清除EINT所有中断标志
	EXTMODE		   = 0x04;				// EINT2为下降沿中断

//定时器1中断设置
	//T1TC  = 0;						
	T1PR  = 0;
	T1MCR = 0x00;						//禁止定时器1所有相关中断
	//T1MR0 = Fpclk/1580;				//中断时间设置 中断时间设置为600ms
	T1PR = Fpclk/100000;				//预分频寄存器定时时间为0.01ms
	T1TCR = 0x00;						//定时器计数器禁止计数

	//定时器1中断设置
	//VICVectCntl1 = 0x20|0x05;
	//VICVectAddr1 = (uint32)IRQ_Timer1;
	//VICIntEnable = 1<<0x05;

	VICIntSelect   = 0x00000000;		// 设置所有中断分配为IRQ中断

	KeyDown=0;
    UART0_SendByte('K');
	while(1)
	{
		if(KeyDown == 1)
		{
			Redinfo = Reddata;			//用户码
			UART0_SendByte(Redinfo);
			Reddata>>=8;				
			Redinfo = Reddata;			//用户反码
			UART0_SendByte(Redinfo);
			Reddata>>=8;				
			Redinfo = Reddata;			//键值数据字节
			UART0_SendByte(Redinfo);
			Reddata>>=8;				
			Redinfo = Reddata;			//键值数据反字节
			UART0_SendByte(Redinfo);
			KeyDown=0;
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -