单片机及通信接口实验报告_第1页
单片机及通信接口实验报告_第2页
单片机及通信接口实验报告_第3页
单片机及通信接口实验报告_第4页
单片机及通信接口实验报告_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 China University of Petroleum 单片机及通信接口实验报告 通信09-3班 实验二MSP43基本时钟模块及低功耗结构 一、实验目的 掌握MSP430单片机基本时钟模块的原理及使用方法 二、实验原理 3.1 MSP430X1XX系列时钟模块 Hole: XT2 Otd laior The XT2 Os曰怙til is tkJL (jlracrl.曲 JASP+SOaIIxa ur M3P430 1 2m wven The LFXT1CLK 祖 sed in pltcc of KT2OJC 从图中可以看出,它有3个时钟输入源: (1) LFXT1CLK由低频时钟晶体产生

2、的低频时钟源,由标准高频晶体或陶 瓷谐振器产生的高频时钟源以及外接时钟信号源。 XT2CLK由标准晶体或陶瓷谐振器产生,外接450KHz8MF时钟信号源。 (3) DCOCLK片内可以数字控制的RC振荡器。 基础时钟模块可以提供3种时钟信号: (1) ACL(辅助时钟)ACL是LFXT1CL信号经1, 2, 4, 8分频后得到的。分 频系数可选,有参数DIVA控制oALCI可由软件选作各个外围模块的时钟信号。 (2) MCLJ系统主时钟)MCLK由软件选择来自LFXT1CL,T2CL,COCL三 者之一,然后经1, 2, 4, 8分频得到。分频系数由DIVM控制。MCL主要用 于CPI和系统

3、(3)SML(子系统时钟)可由软件选择来自LFXT1CLI,XT2CLK DCOCLK三 者之一,然后经1, 2, 4, 8分频得到。分频系数由DIVS控制。MCL主要用于 各 外围模块。 3.2低速晶体振荡 器 低速晶体振荡器在 MSP430FLAS系列的每一个器件中都能找到。一般是指 32768HZ勺时钟晶体,同时将所需两个小电容也集成在内部。 这样可降低系统成 本,同时降低系统功耗。LFXT振荡器在发生有效的PU(后开始工作,一次有效的 PUC言号可以将SR寄存器(状态寄存器)的OscOff位复位,即允许LFXT1作。 LFXT1CLI信号没有用作SMCL或MCL信号,则可以用软件将 O

4、scOff位置 以禁 止LFXT1T作。LFXT1的结构如下图所示: F1XX系列的LFXT1振荡 器 当使用32768Hz的晶体时只须连到相应的引脚,两个小电容已经集成在 芯 片内部。应注意:这时LFXT1工作在低频模式,XTS位应复位。同时LFXT1振 荡 器也可以外接频率较高的高速晶体振荡器或陶瓷振荡器,以工作在高速模 式;这 时XTS位置位,同时两个引脚还要外接电容,电容大小根据晶体或振荡器 的特性来选择。 3.3高速晶体振荡 器 高速振荡器主要存在于F13X, F14X, F4XX等器件,一般称之为第二振荡器 XT2,它产生时钟信号XT2CLK它的工作特性与LFXT1振荡器工作在高频

5、模式是 类似。下图是TX2振荡器的控制逻辑。如果XT2CLK信号没用做MDLK SMCL时钟 信号,则可以用XT2Off控制位关闭XT2;如果CPUOff=0, SELM=2则XT2CLK用 做MDLK寸钟;如果 SCG仁且SELS=1, XT2CLI用做SMCL时钟。 XT2OT XT20ff cpuofr SELM.1 SELMO SCG1 SELS 3.4 DCO振荡器 XT2振荡器的控制逻辑 MSP430FLAS系列的两个外部振荡器产生的时钟信号都可以经1 , 2, 4,8 分频后用作系统主时钟 MCLK当振荡器失效时,DCOS荡器会自动被选做MCLK 的时钟源;上电复位时,不对时钟模

6、块进行任何设置,不加外部振荡器,DC振 荡器也会选做MCLK勺时钟源,频率在800K左右。 DC振荡器实质上是一个可数字控制的RC振荡器。因为RC振荡器的频率会 随着温度和工作电压的变化而变化,所以同一型号芯片产生的频率有所不同。 但 同时DC濒率可通过DCO MOD Rsel等控制位用软件调节,这又增加了振 荡器频率的稳定性。 三、实验设 备 名称 指标 数量 微机 1台 JTAG下载器(带并口下载线) 1套 MSP430系统最小板 1个 万用表 1个 工具 1盒 四、实验内 容 1用低频晶振产生辅助时钟 ACLK并输出,用示波器观察输出波形并记录其波 形和频率。 设MCLK=XT1将ACL

7、由 P2.0输出程序如下: #i nclude void ma in (void) un sig ned int i; WDTCTL = WDTPW + WDTHOLD停/止 看门狗 P2DIR |= 0X01; / 设置 P2.0 为输出 P2SEL |= 0X01; / 设置 P2.0 为 MCL 输出 BCSCTL1 /设置XTS为有效 低频输出 do IFG1 /清除振荡器失效标志 for(i = OxFF;iO;i-); /稳定时间 2用高速晶体振荡器产生系统时钟 MCLI并输出,用示波器观察输出波形并记 录其波形和频率。 设MCLK=XT2将MCL由5.4输出程序如下: #i nc

8、lude void ma in (void) un sig ned int i; WDTCTL = WDTPW + WDTHOLD停/止看门狗 P5DIR |= 0X10; / 设置 P5.4 为输出 P5SEL |= 0X10; / 设置 P5.4 为 MCL 输出 BCSCTL1 设置 XT2为有效 do IFG1 /清除振荡器失效标志 for(i = 0 xFF;i0;i-); /稳定时间 while(IFG1 /如果振荡器失效标志存在则继续循环。 BCSCTL2 |= SELM1; / 设置 MCLK = XT2 for(;); 3用高速晶体振荡器产生子系统时钟 SMCLI并输出,用示

9、波器观察输出波形 并记录其波形和频率。 设SMCLK=XT2将MCL由5.5输出程序如下: #i nclude void ma in (void) un sig ned int i; WDTCTL = WDTPW + WDTHOLD停/止 看门狗 P5DIR |= 0X11; / 设置 P5.5 为输出 P5SEL |= 0X11; / 设置 P5.5 为 SMCL输出 BCSCTL1 设置 XT2为有效 do IFG1 /清除振荡器失效标志 for(i = 0 xFF;i0;i-); /稳定时间 while(IFG1 /如果振荡器失效标志存在则继续循环。 BCSCTL2 |= SELM1;

10、/ 设置 MCLK = XT2 for(;); 4用DCO作为系统时钟MCLK并输出,用示波器观察输出波形并记录其波形和频 率。固定 MDD.0MOD.it 0100, Rsel.0Rsel.2 为010,观察 DCO的改变对 DCO振 荡器产生频率的影响。并填写下表: DCO 000 001 010 011 100 101 110 111 频率(kHz) 5用DCO作为系统时钟MCLK并输出,用示波器观察输出波形并记录其波形和频 率。固定 DCO.ODCO.为 010, Rsel.0Rsel.2 为 010,观察 MO的改变对 DCO振 荡器产生频率的影响。并填写下表: MOD 0000 0

11、001 0010 0011 0100 0101 0110 0111 频率(kHz) MOD :1000 1001 1010 1011 1100 M101 1110 1111: 频率(kHz) 6用DCO作为系统时钟MCLK并输出,用示波器观察输出波形并记录其波形和频 率。固定 DCO.0DCO.为 010, MOD.0MOD为 0100,观察 Rsel 的改变对 DCO振 荡器产生频率的影响。并填写下表: Rsel 000 001 010 011 100 101 110 111 频率(kHz) 实验三 MSP430端口和看门狗定时器实 验 一、实验目的 1掌握MSP430 I/O 端口的原理和

12、用 法。 2掌握MSP430看门狗定时器的原理和用 法。 二、试验原理 3.1、MSP430 I/O 端口的基本 原理 1.端口 P1和P2这些端口都具有中断能力,且每个端口的八个引脚共用一 个中断向量。P1DIR , P2DIRP1和P2端口输入/输出方向寄存器 P1IN, P2IN P1和P2端口输入寄存器 P1DIR, P2DIRP1和P2端口输出寄存器P1OUT P2OUTP1和P2端口中断使能寄存器 P1IES , P2IESP1和P2端 口中断触发沿选择寄存器 P1IFG , P2IFG P1和P2端口中断标志寄存器 P1SEL, P2SEL P1和P2端口功能选择寄存器 2 端口

13、 P3,P4,P5 和P6 这些端口没有中断能力,其余功能与P1和P2 一样,能实现输入/输出功能 和外围模块功能。每个端口有4个寄存器供用户使用。用户可通过这4个寄存器 对他们进行访问和控制。 PnDIR Pn端口输入/输出方向寄存 器Pn IN Pr端口输入寄存器 Pn OUT Pn端口输出寄存器 PnSEL Pn端口功能选择寄存 器 3.2、MSP430看门狗定时器的基本原 理 主要功能是:当程序发生故障时能使受控系统重新启动。 如果WDT超过 所 规定的时间,即发生系统复位。如果系统不需要看门狗功能,也可将他当定 时器 使用,当到达WDT所定时的时间定时器模式将产生中断请求时,能产生中

14、 断. (1)看门狗模式 可通过VDTCT寄存器中的TMSE控制位设置TMLEL=1工作在看门狗模式。 看门狗的原理:看门狗定时器设置一定时时间,此时间是所有用户程序执行 完该程序的一个时间,设置好定时时间之后,所有用户程序必须在该时间内将 看 门狗计数器的值清零,使计数器重新计数;如果CPU执行程序正确,则看门 狗计 数器时钟能在规定的时间内被用户程序清零;而当CPU执行程序跑飞 (PC值指 向用户程序之外),看门狗计数器得不到清零,发生溢出,导致CPU复位,CPU 又会重新运行用户程序。所以,使用时,以防止超过设定的定时时间,用户软 件 必须周期性地在WDTCT的CNTC位写1,使得看门狗

15、计数器复位。 (2)定时器模式 设置TMSEL=1,WD!作在定时器模式。定时时间可用软件对VDTTC寄存器 的CNTC置位进行初始化,WD将按设定的周期产生中断请求,中断请求得到服 务后,中断标志将自动清除。 (3)关闭看门狗模式 当系统不需要WDT寸设置HOLD=1可关闭WDT,这时看门狗计数器停止工作, 可节省功耗。 三、实验设 备 名称 指标 数量 微机 1台 JTAG下载器(带并口下载线) 1套 MSP430系统最小板 1个 万用表 1个 工具 1盒 四、试验内容 1利用P3.1产生方波,并用P1.7接收P3.1产生的方波来产生中断。中断内容 为使P3.3闪烁 #i nclude v

16、oid ma in (void) WDTCTL=WDTPW+WDTHOLD; P3OUT =0 x00; P3引脚低电平 P3DIR |=0 xff; P3方向输出 P1OUT=0 x00; P1IES |=0 x00; / 上升沿触发 P1IFG= 0 x00; /因为P1IES设置会使中断标志置位,故清零。 P1IE |=0 xff; / P1 模块中断允许 _EINT(); /系统中断允许 int i; for(;) for(i=1;i=32000;i+); P3OUT A=0 x02; /P3.1每隔8000个机器指令周期产生一次跳变 #pragma vector = PORT1_VE

17、CTOR _in terrupt void P1_I nterrupt(void) 厂_ if (P1IFG=0 x80) / 如果 P1.7 中断 P1IFG=0 x00; /中断标志清除 P3OUT a= 0 x08; / P3.3 输出变化 else P1IFG=0 x00; / 非p1.7 中断处理 2利用看门狗的定时器功能产生一方波,周期为 0.5S,占空比为1: 1。 #i nclude Un sig ned char coun t=0; void ma in (void) WDTCTL = WDT_MDLY_0_5; IE1 |= WDTIE; P1DIR |=0 x01; _E

18、INT(); for(;) _BIS_SR(CPUOff); _NOP(); #pragmavector = WDT_VECTOR _in terrupt void watchdog_timer(void) 厂_ coun t+; if(cou nt=500) P1OUT A= 0 x01; coun t=0; 3利用看门狗的看门狗功能产生一方波。分别使用ACLK和SMCL作为看门狗的 时钟。 #i nclude Un sig ned char coun t=0; void ma in (void) WDTCTL = WDT_MRST_0_5; IE1 |= WDTIE; P1DIR |=0

19、x01; _EINT(); for(;) _BIS_SR(CPUOff); _NOP(); #pragmavector = WDT_VECTOR _in terrupt void watchdog_timer(void) 厂_ MOV #WDTPW+WDTHOLD, if(cou nt=500) P1OUT a= 0 x01; coun t=0; 实验四MSP430 16位定时器A实验 一、实验目的 1掌握定时器A的定时器功能及4种工作模式 2掌握定时器A的捕获/比较模块功能 3掌握定时器A的输出单元和8种输出模式 二、实验原理 结构原理图4.1中,可以将Timer_A分解成:计数器、捕获/比

20、较寄存器及 输 出单元。其中,计数器部分完成时钟源的选择与分频、模式控制及计数等功能;捕 获/比较寄存器用于捕获事件发生或产生的时间间隔;输出单元用于产生用户 需要的输出信号。 1 Timer_A的寄存器 图4.1 Timer_A的结构原理图 (1)TACTI控制寄存器 TACT寄存器中含有全部的Timer_A控制位。该寄存器在POR言号后全部复 位,但在PUC言号后不受影响。该寄存器众各位的定义如下: 15 10 9 8 7 6 5 4 3 2 1 0 未用 SSEL1 SSEL0 ID1 ID0 MC1 MC0 未用 CLR TAIE TAIFG (2)TAR 16位计数器内容 执行计数的

21、单元,是计数器的主体。可读可写,但要注意:当计数时钟不 是MCLK寸,写入应该在计数器停止时写,因为它与 CPU寸钟不同步。 (3)CCTL捕获/比较寄存器 X为捕获/比较模块序号,在寄存器中各位名称中的 X也一样。该寄存器在 po信号后全部复位,但在puC言号后不受影响 该寄存器的各位定义如下: 1514 1312 11 10 9 8 7 6 5 4 3 2 1 0 CAPTMOD10 CCIS1 0 SCS SCCI CAP OUTMOD XCCIEX CCIX OUT COV CCIFGX (4) CCRX捕获/比较寄存器 在捕获/比较寄存器模块中,可读可写。在捕获方式时,硬件自动将计数

22、 器TAR中的数据写入该寄存器。在比较方式时,用户程序根据需要定时时间长 短,配合定时器工作方式及定时器输入信号,写入该寄存器相应的数据。 (5)TAIV中断向量寄存器 该寄存器用于确定中断 请求的中断源。各位定义如下: 15 - 5 41 0 0 -0 中断向量 0 2定时器模式 Timer_A共有4种工作模式,由控制寄存器TACTI中MD0和MC1两位决定。 (1)停止模式 (2)增计数模式 (3)连续计数模式 (4)增/减计数模式 3捕获比较模块 用CCTL沖的CAPX选择捕获模式或比较模式,用CCMX和CCMX选择捕获 条 件。捕获/比较模块的结构如图4.13所示。 CCIx 图4.1

23、3捕获/比较模块的逻辑结构 (1)捕获模式 (2)比较模式 4输出单元 每个捕获/比较模块都包含一个输出单元,用于产生输出信 号。每个输出单 元有8种工作模式,可产生基于EQUX勺多种信号。所有的输出模式如下: 输出模式0 输出模式。输出模式1置位模式。 输出模式2 PWM翻转/复位模式。 输出模式3 PWM置位/复位模式 输出模式4翻转模式。 输出模式5 复位模式。 输出模式6 PWM翻转/复位模式。 输出模式7 PWM复位/置位模式 三、实验设备 名称 指标 数量 微机 1台 JTAG下载器(带并口下载线) 1套 MSP430系统最小板 1个 万用表 1个 工具 1盒 330欧姆电阻 DI

24、P 若干 细导线 若干 四、试验内容 1用增计数模式产生一个周期为0.5S的方波 #i nclude Un sig ned char coun t=0; void ma in (void) WDTCTL = WDTPW + WDTHOLD;停止看门狗 P3DIR |= 0 x06; / P3.1设置为输出 CCTL0 = CCIE; / CCR0 中断允许 CCR0 = 20000; TACTL = TASSEL_2 + TACLR +MC_1; /定时器A寸钟源为SMCL,计数器清零, 增计数模式 _BIS_SR(LPM0_bits + GIE); / En ter LPM0 w/ in t

25、errupt #pragma vector=TIMERA0_VECTOR _in terrupt void Timer_A (void) coun t+; If(cou nt=10) P3OUT A= 0 x02; / P3.1 取反 coun t=0; 2用连续计数模式同时产生两个周期分别为 0.1S和1S的方波。 #i nclude un sig ned int coun t=0; void ma in (void) WDTCTL = WDTPW + WDTHOLD停 止看门狗 P3DIR |= 0 x06; / P3.1、P3.2设置为输出。 CCTL0 = CCIE; / CCR0 中

26、断允许 CCR0 = 40000; TACTL = TASSEL_2 + TACLR + MC_2 + TAIE; / 定时器 A时钟源为 SMCLK 计数 器清零,连续计数模式,溢出中断允许。 _BIS_SR(LPM3_bits + GIE); r #pragma vector=TIMERAO_VECTOR _in terrupt void Timer_A (void) 厂_ P3OUT A= 0 x02; / P3.1 取反 #pragma vector=TIMERA1_VECTOR _in terrupt void Timer_A(void) 厂_ switch( TAIV ) case

27、 2: break; case 4: break; case 10: coun t+; if(coun t=6) coun t=0; P3OUT a= 0 x04; /P3.2 取反 break; 3用增减计数模式产生一个周期为0.5S的对称方波。 #i nclude un sig ned int coun t=5; void ma in (void) WDTCTL = WDTPW + WDTHOLD停 止看门狗 P3DIR |= 0 x06; / P3.1、P3.2设置为输出。 CCTL0 = CCIE; / CCR0 中断允许 CCR0 = 20000; TACTL = TASSEL_2

28、+ TACLR + MC_3 + TAIE; / 定时器 A时钟源为 SMCLK 计数 器清零,增减计数模式,溢出中断允许。 _BIS_SR(LPM3_bits + GIE); r #pragma vector=TIMERA1_VECTOR _in terrupt void Timer_A(void) 厂_ switch( TAIV ) case 2: break; case 4: break; case 10: coun t+; if(coun t=5) coun t=0; P3OUT A= 0 x04; /P3.2 取反 break; 4使用P3.1产生一个周期小于0.1S的方波,并使用定

29、时器A的捕获功能测量其 频率。 #i nclude un sig ned in t lastCCR0,lastCCR1 unsigned int j=0; /测得信号周期为 j*(1/100K) un sig ned int k=0; /测得信号占空比为:k/j un sig ned in t lastCCR0=0; unsigned int lastCCR1=0; void ma in (void) WDTCTL=WDTPW+WDTHC停DW 门狗 TACTL =TASSEL_2+ID_3+MC_2+TACLR; MCL分频,连续模式,计数器清空 CCTL0=CM_3 + CCIS_0 +

30、SCS + CAP + CCIE; /上升沿和下降沿均捕获,异步捕 获,捕获模式,捕获中断允许 CCTL1=CM_1 + CCIS_1 + SCS + CAP + CCIE; / 上升沿,异步,捕获,捕获中断 允许 lastCCR0 = 0; lastCCRI = 0; P1DIR=0 x00; P1SEL=0 xff; P3DIR=0 xFF; P3OUT=0 x00; _EINT(); for(;) for(i=0;i10000;i+) _NOP(); P3OUTA=0 x02; /产生捕获信号源 #pragma vector=TIMERA1_VECTOR /定时器中断捕获 _in ter

31、rupt void TIMER_A(void) 厂_ switch(TAIV) case 2:P3OUD=0 x04; j=CCR1-lastCCR1; /两次上升沿间隔 lastCCRI = CCR1; break; case 4: break; case 10: P3OUTA=0 x02; break; #pragma vector=TIMERA0_VECTOR CCF捕获产生中断 _in terrupt void TIMER_cc(void) 厂_ /如果输入信号为低电平,则表明是下降沿产生的捕获,前一次捕获的是上升沿, 这一次捕获和上一次捕获之差即为高电平的时间。 if(SCCI0 /

32、上下升沿间隔 lastCCR0 = CCR0; 5利用Timer_A输出周期为512 /32768 = 15.625ms、占空比分别为75唏口 25%的 PW矩形波。 #i nclude void ma in (void) WDTCTL = WDTPW +WDTHOL 停止看门狗 TACTL = TASSEL0 + TACLR; / ACLK,清除 TAR CCTL0=0 x00; /默认值,比较器模式 CCTL仁0 x00; /默认值,比较器模式 CCR0 = 512-1; / PWM 周期 CCTL1 = OUTMOD_7; CCR1 = 384; / 占空比 384/512=0.75 C

33、CTL2 = OUTMOD_7; CCR2 = 128; / 占空比 128/512=0.25 P1DIR |= 0 x04; / P1.2 输出 P1SEL |= 0 x04; / P1.2 TA1 out P2DIR |= 0 x01; / P2.0 输出 P2SEL |= 0 x01; / P2.0 TA2 out TACTL |= MC0; / Timer_A增计数模式 for (;) _BIS_SR(LPM3_bits); / 进入 LPM3 _NOP(); 实验五MSP43比较器A实验 一、实验目的 掌握MSP43比较器A的原理和用法。 二、实验原理 比较器A(Comparator

34、_A)是一个实现模拟电压比较的外围模块,可实现模数转换 的功能。它有一个模拟比较器、参考电压发生器和输出滤波器、两个模拟量输入端 CA0 和CA1及一些控制单元组成。 比较器A由3个寄存器控制,如下表。寄存器被安排在字节空间,因此必须使用字 节方式予以访问。 寄存器缩写类型地址初始状态 控制寄存器1 CACTL1读/写059h复位 控制寄存器2 CACTL2读/写05Ah复位 端口禁止寄存器CAPD读/写05Bh复位 (1)CACTL1控制寄存器1 7 6 5 (4) 3 2 1 0 CAEX CARSE L CAREF 1(0) CAON CAIES CAIE CAIFG (2)CACTL2

35、控制寄存器2 7 6 5 4 3 2 1 0 CACTL2.7 CACTL2. 6 CACTL2. 5 CACTL2. 4 P2CA1 P2CA0 CAF CAOUT (3)CAPD端口禁止寄存器。 三、实验设备 名称指标数量 微机1台 JTAGF载器(带并口下载线)1套 MSP43系统最小板1个 万用表1个 工具1盒 示波器1台 四、试验内容 1输出模拟比较器的参考电压源。 2电压检测:P2.3输入的未知电压接到比较器 A正端,片内参考电压0.25VCC接到比 较 器A负端,如果未知电压大于0.25Vcc,P1.0置位,否则P1.0复位。 五、试验程序 利用比较器A的中断,实现当输入P2.3

36、的电压高于0.5VCC时,使P3.3置位,亮,当P2.3 的电 压低于0.5VCC时,使P3.3复位,灭。 #i nclude MSP430 x14x.h void main (void) WDTCTL = WDTPW + WDTHOLDf停止看门狗 P2SEL |= 0 x08; /P2.3设置为比较器输入 CA1 P3DIR |= 0 x08; /P3.3设置为输出 P3OUT /P3.3 输出低电平 CACTL1 = CARSEL +CAEX+CAREF1 + CAON ; 0.5Vc加到正端,打开比较器 CACTL2 = P2CA0; /P2.3加到比较器负端 while(1) if(

37、CAOUT else P3OUT 实验六MSP430 FLASH存储器读写实验 一、实验目的 掌握MSP430FLAS存储器读写的方法。 二、实验原理 FLASH存储器模块是FLASH型器件都有的一个模块,它主要用作程序代码、数据 表格以及用户信息等的存储,可多次擦除和写入数据,也可在系统写入或在应用中 写 入。块写入可用于在FLAS H段中的一个连续存储区域写入一系列的数据。一个块为 64 字节长度。开始在0XX00H 0XX40H, 0XX80H和0XXC0等地址,结束在0XX3FH, 0XX3FH 0XXBFH和0XXFFH等地址。 对FLASH模块有3种操作:读,擦除,写。其中读很简单

38、,可使用各种寻址方 式,借助指令就可轻松完成。而擦除和写入就不一样了,需要按其固有的操作过程, 通过控制FLASH模块的3个控制字中的相应位完成,只有控制位的唯一组合才能实 现 相应的功能。下表所示为正确的控制位组合。 表 编程与擦除控制位 功能BLKWR T WRT Meras Erase BUSY WAIT Lock 字或字节写入0 1 0 0 0 0 0 块写入1 1 0 0 0 1 0 段擦除并写入0 0 0 1 0 0 0 擦除AB以夕卜段0 0 1 0 0 0 0 全部擦除并写入0 0 1 1 0 0 在上表以外的控制位组合下操作 FLASH模块会引起非法访问,将标志位 ACCVI

39、FG置位。在表中所列各功能被执行期间(BUSY=1,对FLASH进行读操作,都是不对的, 这时出现在数据总线的数总是3FFFH FLASH模块在POR信号后,处于缺省的读模式, 不需对控制位作任何操作,就可读出其中数据。 注意:在进行FLASH操作期间一定要关闭看门狗定时器和所有中断。 程序一:判断标志位后写入数据。 TEST_BUSY1 BIT #BUSY,等待不忙 MOV #FWKEY清除 Lock 位 MOV #(FWKEY+WRT设置允许编程位 MOV 保存转换结果 TEST_BUSY2 BIT #BUSY,复位允许编程位 XOR #(FXKEY+LOCK)锁定,保护数据 程序二:不用

40、判断标志位直接写入数据序列。 #i nclude “ msp430 x11x1.h” ;/主程序 / RESET MOV #300H SP ;定义堆栈指针 StopWDT MOV #WDTPW+WDTHOLDDTCTL 关闭看门狗 Main Loop: CALL #WRITE_SEGA调用子程序:将内存地 ;址240H后32字节写入段A ;/写 段 A 子 程 序 / WRITE_SEGA DINT ;禁止中断 TIMING MOV #FWKEY+FSSEL0+FN定义 MCL,2分频 ERASE_SEGAMOV #FWKE,空写启动擦除 PROG_SEGAMOV #FWKEY+WR允许写 F

41、LASH MOV #240H R6 ;将要写的源数据的开始地址 MOV #1080H R5 ;将要写入的目的开始地址 PROG_LI MOV.B 0(R6),0(R5);将源数据写入到目的地址 INC R5 ;增加目的地址 INC R6 ;增加源地址 CMP #(1080H+32), R5 ;写完了吗? JNE PROG_L1;没有完则继续 MOV #FWKEY+LOC Lock=1 所定写入的数据 EINT ;开中断 RET ;/中 断 向 量 表 / ORG 0FFFEH DW RESET END 程序三:段擦除举例。实际段擦除在“程序二”中已用到。 ; / / TIMING MOV #F

42、WKEY+FSSELO+FN定义 MCLK 2分频 ERASE_SEGAMOV #FWKEY Lock=0 MOV #FWKEY+ERAS允许擦除 MOV #0 空写启动擦除,1080H ;为信息段A的起始地址 ;/擦除信息段 AB以外的其他全部段 / TIMING MOV #FWKEY+FSSEL0+FN定义 MCL,2 分频 ERASE_SEGAMOV #FWKE, Lock=0 MOV #FWKEY+MERASZCTL1 ;允许擦除 MOV #0 空写启动擦除 ;/擦 除 所 有 全 部 段 / TIMING MOV #FWKEY+FSSEL0+FN定义 MCL,2 分频 ERASE_SEGAMOV #FWKE, Lock=0 MOV #FWKEY+MERAS+E, CTL; 允许擦除 MOV #0 空写启动擦除 三、实验设备 名称指标数量 微机1台 JTAGF载器(带并口下载线)1套 MSP43系统最小板1个 万用表1个 工具1盒 示波器1台 四、试验内容 1先擦除信息段A,再将段A全写0,然后擦除段B,再将段A中的所有数据传到段 Bo #i nclude double data8; int add; void write_S

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论