基于MSP430的红外发射程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//函数中所需头文件及其定义
#include "msp430x24x.h"
//延时子程序
void Delay1(unsigned int t)
{
unsigned int j;
while(t--)
{
for(j=0;j<100;j++);
}
}
//红外信号发出
void red_tr(unsigned int dat)
{
P2DIR |=BIT1+BIT3+BIT5+BIT7;
if(dat==1)
{
//输出0110
P2OUT &=~BIT1;
P2OUT |=BIT3;
P2OUT |=BIT5;
P2OUT &=~BIT7;
//延时后关闭输出
Delay1(500);
P2OUT &=~BIT1;
P2OUT &=~BIT3;
P2OUT &=~BIT5;
P2OUT &=~BIT7;
}
if(dat==2)
{
//输出0111
P2OUT &=~BIT1;
P2OUT |=BIT3;
P2OUT |=BIT5;
P2OUT |=BIT7;
//延时后关闭输出
Delay1(500);
P2OUT &=~BIT1;
P2OUT &=~BIT3;
P2OUT &=~BIT5;
P2OUT &=~BIT7;
}
if(dat==3)
{
//输出1000
P2OUT |= BIT7;
P2OUT &=~BIT5;
P2OUT &=~BIT3;
P2OUT &=~BIT1;
//延时后关闭输出
Delay1(500);
P2OUT &=~BIT1;
P2OUT &=~BIT3;
P2OUT &=~BIT5;
P2OUT &=~BIT7;
}
if(dat==4)
{
//输出1001
P2OUT |= BIT1;
P2OUT &=~BIT3;
P2OUT &=~BIT5;
P2OUT |=BIT7;
//延时后关闭输出
Delay1(500);
P2OUT &=~BIT1;
P2OUT &=~BIT3;
P2OUT &=~BIT5;
P2OUT &=~BIT7;
}
/*if(dat==5)
{
//输出1001
P2OUT |= BIT1+BIT7;
P2OUT &=~BIT5;
P2OUT &=~BIT3;
//延时后关闭输出
Delay1(600);
P2OUT &=~BIT1;
P2OUT &=~BIT3;
P2OUT &=~BIT5;
P2OUT &=~BIT7;
}
if(dat==6)
{
//输出0110
P1OUT |= BIT5+BIT6;
P1OUT &=~BIT4;
P1OUT &=~BIT7;
//延时后关闭输出
Delay1(600);
P1OUT &=~BIT4;
P1OUT &=~BIT5;
P1OUT &=~BIT6;
P1OUT &=~BIT7;
}
if(dat==7)
{
//输出0111
P1OUT |= BIT4+BIT5+BIT6;
P1OUT &=~BIT7;
//延时后关闭输出
Delay1(600);
P1OUT &=~BIT4;
P1OUT &=~BIT5;
P1OUT &=~BIT6;
P1OUT &=~BIT7;
}
if(dat==8)
{
//输出1000
P1OUT |= BIT7;
P1OUT &=~BIT4;
P1OUT &=~BIT5;
P1OUT &=~BIT6;
//延时后关闭输出
Delay1(600);
P1OUT &=~BIT4;
P1OUT &=~BIT5;
P1OUT &=~BIT6;
P1OUT &=~BIT7;
}*/
}
/************************************************************************************************************/
/* 函数功能:主函数模块 */
/* 功能描述:设置单片机芯片430F247的最基本的参数设置和函数初始化调用 */
/* 入口参数:void *
/
/* 函数名称:void main(void) */
/************************************************************************************************************/
void main( void )
{
unsigned int t = 0;
WDTCTL=WDTPW+WDTHOLD; //关看门狗
BCSCTL1 =CALBC1_1MHZ; //设定DCO 为1MHZ
DCOCTL =CALBC1_1MHZ;
volatile unsigned int n=0;
do //等待晶振稳定
{
IFG1 &=~OFIFG;
for(n=5000;n>0;n--);
} while(OFIFG&IFG1);
//开机延时大约10分钟
//for( t = 600; t > 0; t--)
Delay1(500);
red_tr(1); //发送0001,控制航模快速下降三秒钟
for( t = 60; t > 0; t--) //延时约一分钟开始发送第二个命令
Delay1(500);
red_tr(2); //发送0010,控制航模快速上升四秒钟
for( t = 60; t > 0; t--) //延时约一分钟开始发送第二个命令
Delay1(500);
red_tr(3); //发送0011,控制航模慢速下降6秒钟
for( t = 60; t > 0; t--) //延时约一分钟开始发送第二个命令
Delay1(500);
red_tr(4); //发送0100,控制航模慢速上升8秒钟
for( t = 60; t > 0; t--) //延时约一分钟开始发送第二个命令
Delay1(500);
}