majtsdd 发表于 2013-10-11 11:24:23

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

majtsdd 发表于 2013-10-11 11:25:10

没事自己赞一个:lol

zzzddd9000 发表于 2013-10-11 13:12:48

430的库文件?

majtsdd 发表于 2013-10-11 14:07:00

今天做项目的时候发现用Arduino写代码的方法思路比较清晰,就穿上来了,就一个头文件

MAN 发表于 2013-10-11 17:09:51

majtsdd 发表于 2013-10-11 14:07 static/image/common/back.gif
今天做项目的时候发现用Arduino写代码的方法思路比较清晰,就穿上来了,就一个头文件

不错 和arduino ide怎么通信呢 移植bootloader?

majtsdd 发表于 2013-10-28 10:30:40

不知道啊:(

majtsdd 发表于 2013-10-28 10:31:15

我还是新手……
页: [1]
查看完整版本: Arduino在MSP单片机上的实现