Arduino在MSP单片机上的实现
不怎么擅长表达,一切尽在不言中/*
作者:majtsdd
主题:Arduino在MSP单片机上的实现
时间:2013-10-11
备注:
盖头文件只含有函数
pinMode(Pin,Mode)
{
1.输出 OUTPUT
2.普通输入INPUT
3.上拉输入SETREFINPUT
4.下拉输入CLRREFINPUT
}
digitalWrite(Pin , Mode)
digitalRead(Pin)
端口对应系统配置端口
P1.00
P1.11
P1.22
P1.33
P1.44
P1.55
P1.66
P1.77
P2.08
P2.19
P2.210
P2.311
P2.412
P2.513
*/
#ifndef __PinModeConfig_H
#define __PinModeConfig_H
#include<msp430g2553.h>
#define OUTPUT 0
#define INPUT 1
#define SETREFINPUT 2
#define CLRREFINPUT 3
unsigned char volatile* portDIRRegister(char PinNum)
{
unsigned char volatile *Reg;
if(PinNum<8)
{
Reg=&(P1DIR);
}else
{
Reg=&(P2DIR);
}
return Reg;
}
#define HIGH 1
#define LOW0
unsigned char volatile*portOUTPUTRegister(char PinNum)
{
unsigned char volatile *Reg;
if(PinNum<8)
{
Reg=&(P1OUT);
}else
{
Reg=&(P2OUT);
}
return Reg;
}
unsigned char volatile*portRENRegister(char PinNum)
{
unsigned char volatile *Reg;
if(PinNum<8)
{
Reg=&(P1REN);
}else
{
Reg=&(P2REN);
}
return Reg;
}
unsigned char const volatile* portINPUTRegister(char PinNum)
{
unsigned char const volatile *Reg;
if(PinNum<8)
{
Reg=&(P1IN);
}else
{
Reg=&(P2IN);
}
return Reg;
}
unsigned charportGroupNum(char PinNum)
{
return 0x01<<(PinNum%8);
}
//////////////////////////////////////////////////////////////////////////////////////
void pinMode(char PinNum,char ConfigMode)
{
unsigned chardigitalPin;
unsigned char volatile *reg;
if(PinNum>13)
{
return;
}
reg=portDIRRegister(PinNum);
digitalPin=portGroupNum(PinNum);
switch(ConfigMode)
{
case INPUT:
*reg &=~digitalPin;
return;
case OUTPUT:
*reg |=digitalPin;
return;
case SETREFINPUT:
*reg &=~digitalPin;
reg=portOUTPUTRegister(PinNum);
*reg |=digitalPin;
reg=portRENRegister(PinNum);
*reg |=digitalPin;
return;
case CLRREFINPUT:
*reg &=~digitalPin;
reg=portOUTPUTRegister(PinNum);
*reg &=~digitalPin;
reg=portRENRegister(PinNum);
*reg |=digitalPin;
return;
default:return;
}
}
void digitalWrite(char PinNum,char PinState)
{
unsigned chardigitalPin;
unsigned char volatile *reg;
if(PinNum>13)
{
return;
}
reg=portOUTPUTRegister(PinNum);
digitalPin=portGroupNum(PinNum);
if(PinState==LOW)
{
*reg &=~digitalPin;
}else if(PinState==HIGH)
{
*reg |=digitalPin;
}else
{
return;
}
}
char digitalRead(char PinNum)
{
unsigned chardigitalPin;
unsigned char const volatile *reg;
reg=portINPUTRegister(PinNum);
digitalPin=portGroupNum(PinNum);
if(*reg&digitalPin)
{
return HIGH;
}else
{
return LOW;
}
}
#endif 没事自己赞一个:lol 430的库文件?
今天做项目的时候发现用Arduino写代码的方法思路比较清晰,就穿上来了,就一个头文件 majtsdd 发表于 2013-10-11 14:07 static/image/common/back.gif
今天做项目的时候发现用Arduino写代码的方法思路比较清晰,就穿上来了,就一个头文件
不错 和arduino ide怎么通信呢 移植bootloader? 不知道啊:( 我还是新手……
页:
[1]