- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
MSP430实验报告
姓名:
学号:
一、实验目的:
掌握msp430单片机的程序编写和运行过程。
掌握IAREmbeddedWorkbench程序的编译和运行。
二、实验内容:
实现流水灯以三种流动方式和四种流动速度的不同组合而进行点
亮亮流动流动,同时每改变一次流水方式,蜂鸣器响一次。
三、使用串口:
P2口,P6口
四、蜂鸣器实现:
通过定义Timer()函数,并在每次改变流水方式时调用Timer()
函数,通过对p6接口的设置,来达到蜂鸣器声音的实现。
五、实验代码:
//BoardConfig.h//
typedefunsignedcharuchar;
typedefunsignedintuint;
//控制位的宏定义
#defineCtrl_OutP3DIR|=BIT3+BIT6+BIT7;
#defineCtrl_0P3OUT=~(BIT3+BIT6+BIT7)
#defineSRCLK_1P3OUT|=BIT7
#defineSRCLK_0P3OUT=~BIT7
#defineSER_1P3OUT|=BIT6
#defineSER_0P3OUT=~BIT6
#defineRCLK_1P3OUT|=BIT3
#defineRCLK_0P3OUT=~BIT3
//板上资源配置函数
voidBoardConfig(ucharcmd)
{
uchari;
Ctrl_Out;
Ctrl_0;
for(i=0;i8;i++)
{
SRCLK_0;
if(cmd0x80)SER_1;
elseSER_0;
SRCLK_1;
cmd=1;
}
RCLK_1;
_NOP();
RCLK_0;
}
主函数:
#include#includemsp430x14x.hmsp430x14x.h
voidTimer(void);
voiddelay(intz);
uinti=0,j=0,dir=0;ucharstep=0xff;
uintflag=0,speed=0;//flag--灯光流动方式,speed--灯光流动速度
voidmain(void)
{
WDTCTL=WDTPW+WDTHOLD;//关闭看门狗
BoardConfig(0xf0);
CCTL0=CCIE;//使能CCR0中断
CCR0=50000;
TACTL=TASSEL_2+ID_3+MC_1;//定时器A的时钟源选择SMCLK,增计
数模式
P2DIR=0xff;//设置P2口方向为输出
P2OUT=0xff;
P6DIR|=BIT7;//蜂鸣器对应IO设置为输出
_EINT();//使能全局中断
LPM0;//CPU进入LPM0模式
}
函数名称:Timer_A
功能:定时器A的中断服务函数,在这里通过标志
控制流水灯的流动方向和流动速度
参数:无
返回值:无
#pragmavector=TIMERA0_VECTOR
__interruptvoidTimer_A(void)
{
if(flag==0)
{
P2OUT=~(0x80(i++));//灯的点亮顺序D8-D1
}
elseif(flag==1)
{
P2OUT=~(0x01(i++
文档评论(0)