找人编写一段基于MSP430F149的万能红外遥控程序,我有流程图!!价格好说

找人编写一段基于MSP430F149的万能红外遥控程序,我有流程图!!价格好说,第1张

红外遥控程序

#include "SPCE061AH"

#define LED_SEG 0x00ff //IOB0~IOB7

#define LED_DIG 0x3f00 //IOB8~IOB13

unsigned int Time=0,Code[40]={0},CodeNum=0;//计数器,32位码,码字计数

//extern unsigned int Time,CodeNum,Code[40];

unsigned int Star_Flag,First_IRQ;

//====================================================================================

//函数名称:unsigned getkey(void)

//函数功能:获得红外遥控器键值

//入口参数:无

//出口参数:无

//说明:适用于32位码字红外接收头及宏科万能遥控器

//====================================================================================

unsigned getkey(void)

{

unsigned int j=0;

unsigned int DateCode,key=0;

if(Code[0]==5) //判断头部是否是5;防止误接收

{ for(j=9;j<=14;j++)

{

P_Watchdog_Clear = 0x01;

if(Code[j]==1&&Code[j+1]==1&&Code[j+2]==1&&Code[j+3]==1&&Code[j+4]==1&&Code[j+5]==1&&Code[j+6]==0&&Code[j+7]==1)

{ //判断用户识别码是不是1111 1101

for(DateCode=0;DateCode<8;DateCode++)//若是,则开始接收八位数据码

{

Code[j+8+DateCode]<<=8;

key|=Code[j+8+DateCode];

key>>=1; //将八位二进制数倒序转成16进制

}

break;

}

}

Code[0]=0;//将头部清零

return key; //返回键值

}

else return(0);

}

//====================================================================

//函数名称:void IO_Init()

//函数功能:IO口初始化,主要是设置IOB2口,用于外中断

//入口参数:无

//出口参数:无

//====================================================================

void IO_Init()

{

P_IOB_Attrib&=0xfffb; //IOB2端口上拉电阻输入 外中断

P_IOB_Dir&=0xfffb;

P_TimerA_Ctrl=C_SourceA_32768Hz+C_SourceB_1; //TimerA:32768Hz

P_TimerA_Data=0xfffe;

P_INT_Ctrl=C_IRQ3_EXT1|C_IRQ1_TMA; // 外中断1,时基中断,定时中断

__asm("INT IRQ");

}

//=====================================================================

//函数名称:

//函数功能:中断函数

//入口参数:无

//出口参数:无

//=====================================================================

void IRQ3(void) __attribute__ ((ISR));

void IRQ3(void)

{

if(P_INT_Ctrl&C_IRQ3_EXT2)

{ //IRQ3_Ext1

P_INT_Clear=C_IRQ3_EXT2;

}

else if(P_INT_Ctrl&C_IRQ3_EXT1)

{//外中断1用于判断脉冲个数

if(!First_IRQ) {Time=0;First_IRQ=1;}//第一次外中断来时设置

else

{

if(Time>180&&Time<240) //判断起始码

{Star_Flag=1; CodeNum=0;Code[0]=5;CodeNum=1;Time=0;}//起始码来时设置

if(Star_Flag)//开始接收

{

if((Time>=10)&&(Time<25))Code[CodeNum]=0;//计数值设置

else if((Time>25)&&(Time<40))Code[CodeNum]=1;

CodeNum++;//码字计数器加1

Time=0;//计数值清零,以对下一个脉冲宽度进行计时

if(CodeNum>40) {CodeNum=0;Star_Flag=0;First_IRQ=0;}//脉冲个数判断,共32个,此处设为40,是为防止漏接收

}

}

P_INT_Clear=C_IRQ3_EXT1;

}

else

{

P_INT_Clear=C_IRQ3_KEY;//IRQ3_KeyWakeUp

}

}

void IRQ1(void) __attribute__ ((ISR));

void IRQ1(void)

{ Time++; //计数以获得脉冲宽度

P_INT_Clear=C_IRQ1_TMA; //clear INT flag

}

1、闹钟设置界面。

2、存储响闹时间。

3、时间中断,设置读取时间的flag

4、主程序中判断flag设置,读取时钟。

5、比较当前时钟在响闹时间范围内,输出闹铃(如果是蜂鸣器,给他一个输出频率的信号)。

以上就是关于找人编写一段基于MSP430F149的万能红外遥控程序,我有流程图!!价格好说全部的内容,包括:找人编写一段基于MSP430F149的万能红外遥控程序,我有流程图!!价格好说、基于msp430f149+ds1302+lcd1602的可调数字钟(带闹铃)的C语言程序,我现在程序已经写好了、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9825932.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存