-
大小: 174.88 KB文件类型: .rar金币: 1下载: 0 次发布日期: 2024-12-02
- 语言: 其他
- 标签: msp430F149
资源简介
简单的通过msp430操作1838T接收红外线遥控的代码
代码片段和文件信息
#include
#define uchar unsigned char
#define uint unsigned int
#define t_3ms5 2300
#define t_1ms 666
#define RDIN P1IN//红外线模块OUT所在的端口输入寄存器RD必须是有中断功能的端口
#define RDDIR P1DIR//红外线模块OUT所在的端口输入/输出方向寄存器
#define RDIES P1IES//红外线模块OUT所在的端口中断触发沿选择寄存器
#define RDIFG P1IFG//红外线模块OUT所在的端口中断标志寄存器
#define RDIE P1IE//红外线模块OUT所在的端口中断使能寄存器
#define RDbit BIT6//红外线模块OUT所在的端口的位
const uint RDbit_back=~RDbit;
uchar get_code[4] = {0};
uint timer;
#include “msp430.h“
void delay(uint time) //10ms--10000
{
while(time--);
}
uchar rd_dat()
{
uchar stat;
stat = RDIN;
return (stat);
}
uchar get_num()
{
uchar ijrddat=0;
//_DINT(); //关闭中断
for(j=0;j<4;j++)//16位的用户码,8位按键数据码以及8位按键数据码反码
{
//如是输出数据1,
//则先输出0.56ms的低电平,
//再输出1.69ms的高电平,共2.25ms;
//若是输出数据0,
//则先输出0.56ms的低电平,
//再输出0.565ms的高电平,共1.125ms
for(i=8;i>0;i--)
{
dat>>=1; //一位一位获得八位数据
do
rd=rd_dat();//获取红外线模块OUT所在的端口RD的值
while(!(rd & RDbit)); //等待低电平结束,出现高电平
set_timer_b0(); //开始检测高电平时间,打开定时器
do
rd=rd_dat();//获取红外线模块OUT所在的端口RD的值
while(rd & RDbit); //等待高电平结束,出现低电平
timer=TBR; //得到高电平时间
stop_timer_b0(); //关闭定时器
if(timer>t_1ms)dat=dat|0x80;//通过高电平时间判断该位数据是1
else dat=dat&0x7f; //通过高电平时间判断该位数据是0
}
get_code[j]=dat;
}
//_EINT();
return(get_code[2]); //获取按键数据码
}
void main( void )
{
WDTCTL = WDTPW + WDTHOLD; //关看门狗
P2DIR=0Xff;//P2全设为输出,控制LED灯
P2OUT=0Xff;//LED灯全灭
RDDIR |= (~RDbit);//将红外线模块OUT(P16)置为输入
P1IES|=RDbit;//
P1IFG&=(~RDbit);
P1IE|=RDbit;
//static uint i;//循环辅助变量,不知道为什么要静态局部变量才能正常工作
//uchar rd;//缓存红外线模块OUT所在的端口RD的值
//uchar dat_code=0;//缓存获取到的按键数据码
_EINT();
while(1)
{
//_BIS_SR(LPM3_bits+GIE);
uint ji;
for(j=0;j<2;j++)
{
for(i=0;i<10000;i++)
delay(10000);
if(j==1)
(P2OUT&=0xfe);
else
(P2OUT|=0x01);
}
}
}
# pragma vector = PORT1_VECTOR
__interrupt void P1_Interrupt(void)
{
_DINT();//关闭中断
if((RDIFG&RDbit)==RDbit)//若红外线模块OUT(P16)出现低电平
{
RDIFG&=RDbit_back;//清中断标志位
//static uint i;//循环辅助变量,不知道为什么要静态局部变量才能正常工作
uchar rd;//缓存红外线模块OUT所在的端口RD的值
uchar dat_code=0;//缓存获取到的按键数据码
delay(10);
rd=rd_dat();//获取红外线模块OUT所在的端口RD的值
if(rd & RDbit)//若红外线模块OUT(P16)确实出现低电平,开始识别,否则结束识别
{
RDIFG&=RDbit_back;//清中断标志位
_EINT();//开启中断
return;
}
do
{
rd=rd_dat();
}
while(!(rd & RDbit)); //等待9ms低电平结束,出现高电平
set_timer_b0();
do
{
rd=rd_dat();//获取红外线模块OUT所在的端口RD的值
}
while(rd & RDbit); //等待4.5ms高电平结束,出现低电平
timer=TBR;
stop_timer_b0(); //以上为处理引导码
if(timer {
delay(1000);
RDIFG&=RDbit_back;
_EINT();
return;
}
dat_code=get_num(); //取得按键数据码
switch(dat_code)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 17966 2011-01-07 00:38 红外线接收(完成2)\红外接收通过数码管显示键码\Backup of hwreceive.ewd
文件 47746 2011-01-07 00:38 红外线接收(完成2)\红外接收通过数码管显示键码\Backup of hwreceive.ewp
文件 19545 2010-12-27 13:58 红外线接收(完成2)\红外接收通过数码管显示键码\Debug\Exe\4.d43
文件 176 2011-01-04 18:59 红外线接收(完成2)\红外接收通过数码管显示键码\Debug\Obj\4.pbd
文件 23830 2010-12-27 13:58 红外线接收(完成2)\红外接收通过数码管显示键码\Debug\Obj\main.r43
文件 940 2014-02-11 22:49 红外线接收(完成2)\红外接收通过数码管显示键码\disp_4led.h
文件 2167 2014-03-12 21:43 红外线接收(完成2)\红外接收通过数码管显示键码\hwreceive.dep
文件 21406 2014-02-11 20:15 红外线接收(完成2)\红外接收通过数码管显示键码\hwreceive.ewd
文件 54028 2014-02-11 23:28 红外线接收(完成2)\红外接收通过数码管显示键码\hwreceive.ewp
文件 163 2011-01-07 00:38 红外线接收(完成2)\红外接收通过数码管显示键码\hwreceive.eww
文件 3916 2014-03-06 00:14 红外线接收(完成2)\红外接收通过数码管显示键码\main.c
文件 989 2014-03-05 21:55 红外线接收(完成2)\红外接收通过数码管显示键码\msp430.h
文件 1242 2010-12-17 13:59 红外线接收(完成2)\红外接收通过数码管显示键码\Release\Exe\4.txt
文件 1211 2014-03-06 00:14 红外线接收(完成2)\红外接收通过数码管显示键码\Release\Exe\hwreceive.txt
文件 107 2010-12-17 13:59 红外线接收(完成2)\红外接收通过数码管显示键码\Release\Obj\4.pbd
文件 65973 2014-03-12 21:43 红外线接收(完成2)\红外接收通过数码管显示键码\Release\Obj\hwreceive.pbd
文件 65973 2014-03-12 21:43 红外线接收(完成2)\红外接收通过数码管显示键码\Release\Obj\hwreceive.pbd.browse
文件 65973 2014-03-06 00:14 红外线接收(完成2)\红外接收通过数码管显示键码\Release\Obj\main.pbi
文件 9599 2014-03-06 00:14 红外线接收(完成2)\红外接收通过数码管显示键码\Release\Obj\main.pbi.cout
文件 10444 2014-03-06 00:14 红外线接收(完成2)\红外接收通过数码管显示键码\Release\Obj\main.r43
文件 3238 2011-01-04 18:59 红外线接收(完成2)\红外接收通过数码管显示键码\settings\12.wsdt
文件 2699 2011-01-04 18:59 红外线接收(完成2)\红外接收通过数码管显示键码\settings\4.cspy.bat
文件 16856 2011-01-04 18:59 红外线接收(完成2)\红外接收通过数码管显示键码\settings\4.dbgdt
文件 1120 2011-01-04 18:59 红外线接收(完成2)\红外接收通过数码管显示键码\settings\4.dni
文件 2664 2011-01-07 00:35 红外线接收(完成2)\红外接收通过数码管显示键码\settings\hwdecode.wsdt
文件 1348 2014-03-12 21:43 红外线接收(完成2)\红外接收通过数码管显示键码\settings\hwreceive.cspy.bat
文件 63 2014-03-12 21:43 红外线接收(完成2)\红外接收通过数码管显示键码\settings\hwreceive.dbgdt
文件 635 2014-03-12 21:43 红外线接收(完成2)\红外接收通过数码管显示键码\settings\hwreceive.dni
文件 3517 2014-03-12 21:43 红外线接收(完成2)\红外接收通过数码管显示键码\settings\hwreceive.wsdt
文件 678758 2004-01-03 01:04 红外线接收(完成2)\红外资料\电风扇红外发射.bmp
............此处省略19个文件信息
- 上一篇:38k单片机红外发送代码、keil
- 下一篇:佳能IP2780清零
相关资源
- [免费]msp430f149控制PS2键盘并用1602显示
- MSP430f149读sd FAT txt
- 初识畅学系列MSP430F149单片机开发板
- MSP430F149中文英文用户指南和英文数据
- MSP430F149最小系统板
- MSP430F149BSL编程无须仿真器资料(新版
- MSP430F149原理图库和PCB库
- MSP430F149原理图和封装集成库
- MSP430F149的无线温湿度环境实时监测系
- msp430f149flash读写
- ADS1115驱动程序
- MSP430F149与ESP8266串口通信
- 基于MSP430F149的LoRa点对点同通信测试程
- 基于MSP430F149的简易心电图仪设计
- msp430f149基于DS18b20测温并1602显示
- MSP430F149 ADC12 单通道多次采样工程文件
- MSP430F149开发板例程
- msp430f149电子罗盘代码
- MSP430F149封装 Altium designer 格式文件
- ads1115驱动,msp430f149单片机
- msp430f149与pcf8591
- 基于msp430f149做的mp3播放器
- msp430f149蓝牙通信AD12程序
- 基于msp430f149的ADXL345倾角传感器的测试
- MSP430F149中文资料
- ADC序列通道多次转换12864液晶程序ms
- MSP430F149单片机对继电器的控制程序和
- 基于MSP430F149单片机的语音播报模块使
- msp430f149 TFT屏 显示 240*320
- 用DS18B20测量温度并在12864液晶屏上显
评论
共有 条评论