第二讲点亮LED.PDFVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第二讲点亮LED

第二讲 点亮LED 一、配置 具体配置和连接按照第一讲中进行。由实验板上的标识可以看出,LED 共有两个,LED1 连 接P1.0,LED2 连接P1.6 二、程序结构 这是软件初始生成的程序 其引入的头文件io430.h 是一个通用头文件,它会根据所选用的device 的不同,来调取不同 芯片的具体头文件。 打开io430.h,即可看到 它会根据define 内容不同,加入其他头文件 为方便使用和学习,我们直接使用msp430g2553.h 由此,我们即可随时打开msp430g2553.h,查看此芯片相关寄存器可配置内容,方便学习和 使用。 从下图所示的标准比特的定义中,我们可以看到 因此,我们在程序编写的过程中,可以使用BITx 来对每一位io 进行操作。 另外,遇到不明白含义的定义,可以在头文件中搜索 好了,这个先讲到这里,我们继续看程序。 这是程序中第一个语句,刚刚接触的同学确实不明白它的含义 这时候,就在头文件里面搜索一下吧 根据头文件的说明,这是看门狗定时器。 在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰, 造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工 作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进 行实时监测的考虑,就有了看门狗。 由于我们此时不需要使用,就先把它关掉。因为它的默认设置中,程序开始执行到一定时间 就会自动复位,会影响我们的使用。 接下来 到此,程序结束。 三、I/O 介绍 I/O,是INPUT/OUTPUT 的简写,即输入输出。我们使用的MSP430G2553 共有两组 I/O 口,即P1.0-P1.7,P2.0-P2.5。如对于P1,它的输入输出值分别存储在P1IN 和P1OUT 两个8 位寄存器中,其中 P1.0 对应最低位,P1.7 对应最高位。且对于8 位寄存器,仅最高位为 1 时其值为0x80,仅最低位为1 时其值为0x01 。 当然,同一个I/O 口不能同时进行输入、输出,每一时刻只能进行一项工作,并由P1DIR 寄存器控制,其中1 为输出,0 为输入。P1DIR 默认值为0x00,即全为输入。使用时,可以 采用头文件中的宏定义来增强可读性,如P1DIR=BIT0+BIT4,即将P1.0,P1.4 设置为输出,其 他位输入。 需要注意的是,msp430 系列单片机不支持位操作,即不能操作如P1^2=1。因此,为了 仅对个别位进行操作时,采用|=,= ,^= 。 如P1OUT|=BIT3; 将P1.3 置1,而其他位不变 P1OUT=~BIT2; 将P1.2 置0,其他位不变 P1OUT^=BIT4; 将P1.4 取反,其他位不变 当然,也可以直接计算所需的值,如我们需要第0 位和第三位为高,其余为低,可以直接赋 值P1OUT=0x09;这里0x09 是16 进制表示,对应的2 进制。 四、点亮LED 我们进入正题,点亮LED。在此实验板上,LED1 的正极连接到了P1.0,负极接470 Ω电 阻接地。因此,要点亮 LED1,就要给 P1.0 置为高电平。(在其他场合,要根据具体连接方 式,不能认为P1.0 都是LED,也不能认为LED 都是置1 才会亮) 修改程序如下: 为了在程序运行后不会复位,在最后加入死循环while(1) ,使其停在这里。 另外,去掉return,并将main 改为void 类型,以消除warning 编译通过,可以下载运行 单击Go,全速运行,看到LED1 点亮 点击break 暂停运行,可以看到程序停在while(1)处 这时,我们打开register 窗口,观察单片机内寄存器 可以看到P1OUT 的值已经被我们改变,P1.0 为1,其他为0 五、LED 闪烁 顾名思义,LED 闪烁自然是LED 等交替亮灭。但是,如果直接对控制LED 的IO 口循环 取反,则会因为闪烁过快,看不出闪烁效果。为此,要加入延时程序,使其每隔一段时间取 反一次。 延时一般有两种实现方式,空循环或定时延时。空循环使用for ,while 实现,简单但延 时时间不准确;定时延时要使用定时器,时延准确但实现较为复杂。简单起见,我们使用空 循环。 这样即是最简单的延时函数,通过参数大小控制时延时间。 再修改main 函数 这样,LED 闪

文档评论(0)

shaofang00 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档