//******************************************************************************
// MSP430P149 Demo - DS18B20, Ultra-Low Pwr UART 9600 Echo ISR, 32kHz ACLK
//
// Description: Echo a received character, RX ISR used. Normal mode is LPM3,
// USART1 RX interrupt triggers TX Echo.
// ACLK = UCLK1 = LFXT1 = 32768, MCLK = SMCLK = DCO~ 800k
// Baud rate divider with 32768hz XTAL @9600 = 32768Hz/9600 = 3.41 (0003h 4Ah )
// //* An external watch crystal is required on XIN XOUT for ACLK *//
//
//
// MSP430F149
// -----------------
// /|\| XIN|-
// | | | 32kHz
// --|RST XOUT|-
// | |
// | |
// | P2.7 |<----TEMP_DQ
// | |
//
// Copyright (c) 2009.04 WH, All Rights Reserved.
// WebSite:www.smart-dz.cn
// Description : The DS18B20 module
// History :
// [Author] [Date] [Version] [Description]
// [1] dragonhzw 2009/04/09 Ver 1.0.0 Initial file.
//
// Built with IAR Assembler for MSP430V3.20A/W32 (3.20.1.9)
//******************************************************************************
#include <msp430x14x.h>
#include "Infrared.h"
//-------------------------------------------------------------------------------
unsigned char IR_State=IR_Idle;//接收状态变量,初值为空闲
unsigned char IR_Ready=0;//数据接收完标志
unsigned char IR_Repeat=0;//连发标志
unsigned char IR_Data[4]={0,0,0,0};//接收到的4字节数据
unsigned char Tmp;
unsigned char IRtimer=0;
//--------------------------------------------------------------------------------
/***FUNC+*********************************************************************/
/* Name : Port2INT */
/* Descrp : 端口1中断处理程序 */
/* Input : num. */
/* Output : None. */
/* Return : None. */
/***FUNC-*********************************************************************/
#pragma vector=PORT2_VECTOR
__interrupt void Port2INT(void)
{
unsigned int Count;
//红外线接收头中断
if(P2IFG&BIT7)
{
Count= TAR;//读取计数值
TACTL|=MC0+TACLR;//定时器B重新开始计数
switch(IR_State)
{
case IR_Idle:
{
IR_State = IR_WaitStart;
IRtimer = 11;
break;
}
case IR_WaitStart:
{
if((Count>ms_125)&&(Count<ms_15))
{//接收到引导码
IR_Data[0]=0;
IR_Data[1]=0;
IR_Data[2]=0;
IR_Data[3]=0;
Tmp=1;
IR_Repeat=0;
IR_State=IR_GetAddress;
}
else if((Count>ms_9)&&(Count<ms_125))
{//接收连发代码
IR_Repeat=1;
IR_State=IR_Idle;
}
else
{
IR_State=IR_Idle;
}
break;
}
case IR_GetAddress:
{
if(Count>ms_168)
{//接收到1
IR_Data[0]|=Tmp;
}
Tmp<<=1;
if(!Tmp)
{
IR_State=IR_GetAddressInv;
Tmp=1;
}
break;
}
case IR_GetAddressInv:
{
if(Count>ms_168)
{//接收到1
IR_Data[1]|=Tmp;
}
Tmp<<=1;
if(!Tmp)
{
IR_State=IR_GetData;
Tmp=1;
}
break;
}
case IR_GetData:
{
if(Count>ms_168)
{//接收到1
IR_Data[2]|=Tmp;
}
Tmp<<=1;
if(!Tmp)
{
IR_State=IR_GetDataInv;
Tmp=1;
}
break;
}
case IR_GetDataInv:
{
if(Count>ms_168)
{//接收到1
IR_Data[3]|=Tmp;
}
Tmp<<=1;
if(!Tmp)
{
if(((IR_Data[0]^IR_Data[1])==0xFF)&&((IR_Data[2]^IR_Data[3])==0xFF))
IR_Ready=1;//校验数据
IR_State=IR_Idle;
}
break;
}
default:
{
IR_State=IR_Idle;
break;
}
}
}
P2IFG=0x00;//清除中断标志位
}
/***FUNC+*********************************************************************/
/* Name : InitTimerA */
/* Descrp : 定时器A初始化 */
/* Input : num. */
/* Output : None. */
/* Return : None. */
/***FUNC-*********************************************************************/
void InitTimerA(void)
{
TACTL=TASSEL1+ID1+ID0+MC0+TACLR;//选择1/8SMCLK 增计数 清除TAR
TACCR0=65535;//时间间隔10ms
}
/***FUNC+*********************************************************************/
/* Name : InitTimerB */
/* Descrp : 定时器B初始化 */
/* Input : num. */
/* Output : None. */
/* Return : None. */
/***FUNC-*********************************************************************/
void InitTimerB(void)
{
TBCTL=TBSSEL1+ID1+ID0+MC0+TBCLR;//选择1/8SMCLK 增计数 清除TBR
TBCCTL0=CCIE;//CCR0中断允许 比较模式
TBCCR0=10000;//时间间隔10ms
}
/***FUNC+*********************************************************************/
/* Name : TimerBINT */
/* Descrp : 定时器B中断 */
/* Input : num. */
/* Output : None. */
/* Return : None. */
/***FUNC-*********************************************************************/
#pragma vector=TIMERB0_VECTOR
__interrupt void TimerBINT(void)
{
if(IRtimer)
{
IRtimer--;
}
else
{
IR_State = IR_Idle;//解码超时
}
}
基于msp430单片机的红外线遥控解码LCD 1602字符液晶显示实验
5星 · 超过95%的资源 需积分: 15 157 浏览量
2011-11-26
13:20:11
上传
评论 6
收藏 52KB ZIP 举报
xiankai
- 粉丝: 1
- 资源: 9
最新资源
- Windows 常见运行运行库32+64
- 基于3KW光伏并网单相逆变器设计(TMS320F28035控制板+显示板+STM32F103功率板)硬件(原理图+PCB)工程
- 正点原子HAL库 STM32F4 外部中断(学习自用附源码)
- delphi rzcombobox DropDownList 灰色背景改为白色
- sap sd.docsap sd.doc
- torch-1.10.2-cp38-cp38-win-amd64.whl
- 菜单栏实现增加数据,修改数据,查询数据,删除数据
- 全国省市区三级联动json文件,带code
- C8_全局&局部&static.zip
- Unity和安卓交互插件Unity调Android Native Goodies PRO
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈