MSP430单片机是一款高性能低功耗的16位单片机。我也是刚刚开始学习,希望和大家一起探讨探讨,大家一起学习。
论坛里大多都是51单片机的帖子。今天我来点新鲜的呵呵。
最简单的是51单片机,很简单,因为只有每组IO口一个寄存器,例如P1,不管输出还是输入,你都需要用同一个寄存器。
输入输出直接写 P1=xx 、xx=P1就是了。(xx是变量)
并且有方便的sbit 如sbit led=P1^2;通过这个语句让我们可以方便的进行位操作。
但是430单片机就不一样了。
430单片机的每组IO口至少有4个控制寄存器。我们操作它的引脚的步骤大约为
1、选择 io口功能,基本io或者其他模式(PxSEL)
2、设置方向寄存器(PxDIR)
3、读出外部输入值(PxIN)或者写入(PxOUT)
没有了方便的sbit 我们就只用通过c语言的 | & ^ 运算符来达到我们按位操作的目的了。
例如
P1DIR = 0X7F; //p1.7设置设置为输入状态,其他IO 口设置为输出状态
P1REN = 0x80;//p1.7上拉使能
P1OUT = 0x00; //p1口输出 0000 0000
或者 我们可以
P1DIR |= 0x80 ;//p1.7设置设置为输入状态,其他IO 口设置为不变
P1OUT |=0X80; //p1.7输出 1 0x80= 1000 0000
我们还可以
P1OUT &=~0X80; //p1.7 输出 0
如此 我们就做了和操作51单片机的IO口相同的操作了。
和学习51单片机的实验一样 首先就是闪烁灯。灯操作好了,基本的IO操作也就学会了。O(∩_∩)O~
上我的程序。
#include "io430.h" void main( void )
{
unsigned int i;
const unsigned int Delay=60000;//const 限制变量不可改变
WDTCTL = WDTPW +WDTHOLD; //关闭看门狗
P1DIR |=BIT0; //此处尽量用 位操作 以免影响其他的位 BIT0在头文件中有 如下语句 #define BIT0 (0x0001)
while(1)
{
i=Delay;
while(i--);
P1OUT |= BIT0;//置位 BIT0在头文件中有 如下语句 #define BIT0 (0x0001)
i=Delay;
while(i--);
P1OUT&=~BIT0;//清零 BIT0在头文件中有 如下语句 #define BIT0 (0x0001)
}
} 另外悄悄地透露,上次我在论坛发的数字万用表成品已经做好了,O(∩_∩)O~