点亮LED
理解代码需要知道msp430的寄存器和几个基本的逻辑运算。
寄存器说明:
① 方向寄存器(Direction Register, PxDIR) :方向寄存器的每一位控制着对应引脚的数据传输方向 。控制位数值的含义是,0 表示设置为输入方向; 1 表 示设置为输出方向,默认是输入方向。
② 输出寄存器(Output Register, PxOUT) : 当端口被配置为 IO 功能、且为输出方向时,在内部上 拉/下拉电阻被禁用的情况下,写入该寄存器中的值将 自动输出到相应的引脚上。 在使用内部上拉/下拉电阻的情况下,PxOUT 中的值指 示响应引脚使用的是上拉电阻还是下拉电阻。其中,0 表示使用的是下拉电阻; 1 表示使用的是上拉电阻。
③ 要把IO口方向先写入方向寄存器,再向输入寄存器写入管脚的电平高低情况。
运算说明:
①按位或操作符(|):|=是位操作运算符的一种,其形式为:a|=b
代表的含义为a=a|b;即把a和b做按位或(|)操作,度结果赋值给a。
②按位与运算符(&):参加运算的两个数据,按二进制位进行“与”运算。
运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1;
③取反运算符(~):参加运算的一个数据,按二进制位进行“取反”运算。
运算规则:~1=0; ~0=1;
#include "io430.h"
void main(void)
{
P2DIR|=BIT6; // 方向输出
P2OUT&=~BIT6; // 输出低电平
P2DIR|=BIT5; // 方向输出
P2OUT&=~BIT5; // 输出低电平
}
其仿真如下:
流水灯
①异或运算符(^):参加运算的两个数据,按二进制位进行“异或”运算。
运算规则:0^0=0; 0^1=1; 1^0=1; 1^1=0; 即:参加运算的两个对象,如果两个相应位为“异”(值不同),则该位结果为1,否则为0。
②P1OUT ^= BIT5;//进行异或运算,引脚电平翻转
#include "io430.h"
void delay_ms();//函数声明
void main(void)
{
P1DIR|=BIT5; // 方向输出
while(1)
{
P1OUT ^= BIT5;
delay_ms(100);
}
}
void delay_ms(int ms)
{
int i;
while(ms--)
{
for(i=0;i<80;i++);
}
}