切换到宽版
  • 5034阅读
  • 0回复

[C51]Proteus单片机MSP430单片机入门实验1 闪烁灯 [复制链接]

上一主题 下一主题
离线dickdick117
 

发帖
656
M币
648
专家
-1
粉丝
11
只看楼主 倒序阅读 我要置顶 楼主  发表于: 2011-06-15
Proteus单片机MSP430单片机入门实验1 闪烁灯

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~
  

本文内容包含图片或附件,获取更多资讯,请 登录 后查看;或者 注册 成为会员获得更多权限
本帖最近打赏记录:共1条打赏 ,M币+5
快速回复
限80 字节
温馨提示:所有技术区严禁灌水,“沙发”“顶”字样;禁止广告贴;以免被删除
 
上一个 下一个