msp430实用程序汇总(4)

2019-08-02 00:18

// Built with IAR Embedded Workbench Version: 3.42A

//******************************************************************************

#include #include \void main(void) {

WDTCTL = WDTPW + WDTHOLD; // Stop WDT BoardConfig(0xb8);

P3DIR |= BIT4; // P3.4 output

CCTL0 = CCIE; // CCR0 interrupt enabled CCR0 = 20000;

TACTL = TASSEL_2 + MC_1; // SMCLK, upmode

_BIS_SR(LPM0_bits + GIE); // Enter LPM0 w/ interrupt }

// Timer A0 interrupt service routine #pragma vector=TIMERA0_VECTOR __interrupt void Timer_A (void) {

P3OUT ^= BIT4; // Toggle P3.4 } //****************************************************************************** // MSP-FET430P140 Demo - Timer_A, Toggle P3.4, Overflow ISR, DCO SMCLK //

// Description: Toggle P3.4 using software and Timer_A overflow ISR. // In this example an ISR triggers when TA overflows. Inside the TA // overflow ISR P3.4 is toggled. Toggle rate is approximatlely 12Hz. // Proper use of the TAIV interrupt vector generator is demonstrated. // ACLK = n/a, MCLK = SMCLK = TACLK = default DCO ~800kHz //

// MSP430F149 // --------------- // /|\\| XIN|- // | | | // --|RST XOUT|- // | |

// | P3.4|-->LED //

// Dasheng

// LiTian Electronic Inc. // Feb 2008

// Built with IAR Embedded Workbench Version: 3.42A

//******************************************************************************

16

#include #include \void main(void) {

WDTCTL = WDTPW + WDTHOLD; // Stop WDT BoardConfig(0xb8);

P3DIR |= BIT4; // P3.4 output

TACTL = TASSEL_2 + MC_2 + TAIE; // SMCLK, contmode, interrupt

_BIS_SR(LPM0_bits + GIE); // Enter LPM0 w/ interrupt }

// Timer_A3 Interrupt Vector (TAIV) handler #pragma vector=TIMERA1_VECTOR __interrupt void Timer_A(void) {

switch( TAIV ) {

case 2: break; // CCR1 not used case 4: break; // CCR2 not used case 10: P3OUT ^= BIT4; // overflow break; } } //****************************************************************************** // MSP-FET430P140 Demo - Timer_A, Toggle P3.4, Overflow ISR, 32kHz ACLK //

// Description: Toggle P3.4 using software and the Timer_A overflow ISR. // In this example an ISR triggers when TA overflows. Inside the ISR P3.4 // is toggled. Toggle rate is exactly 0.5Hz. Proper use of the TAIV interrupt // vector generator is demonstrated.

// ACLK = TACLK = 32768Hz, MCLK = SMCLK = default DCO ~800kHz // //* An external watch crystal on XIN XOUT is required for ACLK *// //

// MSP430F149 // ---------------

// /|\\| XIN|-

// | | | 32kHz // --|RST XOUT|- // | | // | P3.4|-->LED //

// Dasheng

// LiTian Electronic Inc.

17

// Feb 2008

// Built with IAR Embedded Workbench Version: 3.42A

//******************************************************************************

#include #include \

void main(void) {

WDTCTL = WDTPW + WDTHOLD; // Stop WDT BoardConfig(0xb8);

P3DIR |= BIT4; // P3.4 output

TACTL = TASSEL_1 + MC_2 + TAIE; // ACLK, contmode, interrupt

_BIS_SR(LPM3_bits + GIE); // Enter LPM3 w/ interrupt }

// Timer_A3 Interrupt Vector (TAIV) handler #pragma vector=TIMERA1_VECTOR __interrupt void Timer_A(void) {

switch( TAIV ) {

case 2: break; // CCR1 not used case 4: break; // CCR2 not used case 10: P3OUT ^= BIT4; // overflow break; } }

#include #include \void main(void)

{

WDTCTL = WDTHOLD + WDTPW; // 关看门狗

BoardConfig(0xb0); //开流水灯,关数码管和电平转换 CACTL1 = CARSEL + CAREF0 + CAON ; // Vcc/4 = - cmp CACTL2 = P2CA0; // 使用 CA0 P2DIR = 0xff; P2OUT = 0xff;

while(1) {

18

if((CACTL2 | 0xfe) ==0xff)

{ // 比较电压是否超过0.25Vcc P2OUT &= ~BIT4;

CACTL1 &= 0xfe; // CAIFG = 0 } else {

P2OUT |= BIT4; } } } //**************************************************************************** // MSP-FET430P140 Demo - Flash In-System Programming, Copy SegA to SegB //

// Description: This program first erases flash seg A, then it increments all // values in seg A, then it erases seg B, then copies seg A to seg B. // Assumed MCLK 550kHz - 900kHz.

// //* Set Breakpoint on NOP in the Mainloop to avoid Stressing Flash *// //

// MSP430F149 // ----------------- // /|\\| XIN|- // | | | // --|RST XOUT|- // | | //

// M. Mitchell

// Texas Instruments Inc. // Feb 2005

// Built with IAR Embedded Workbench Version: 3.21A

//******************************************************************************

#include #include \

uchar value; // 8-bit value to write to segment A uchar DataBuffer[128];

// Function prototypes

void write_SegA (uchar value); void copy_A2B (void);

void main(void)

19

{

while(1) // Repeat forever

{

write_SegA(value++); // Write segment A, increment value BoardConfig(0xb8);

WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer

FCTL2 = FWKEY + FSSEL0 + FN0; // MCLK/2 for Flash Timing Generator value = 0; // Initialize value

copy_A2B(); _NOP(); } }

void write_SegA (uchar value) {

uchar *Flash_ptr; uint i;

Flash_ptr = (uchar *) 0x1080; FCTL1 = FWKEY + ERASE; FCTL3 = FWKEY; *Flash_ptr = 0;

FCTL1 = FWKEY + WRT;

for (i=0; i<128; i++)

{

*Flash_ptr++ = value; }

FCTL1 = FWKEY; FCTL3 = FWKEY + LOCK; }

void copy_A2B (void)

{

uchar *Flash_ptrA; uchar *Flash_ptrB; uint i;

Flash_ptrA = (uchar *) 0x1080; Flash_ptrB = (uchar *) 0x1000; FCTL1 = FWKEY + ERASE;

// Copy segment A to B // SET BREAKPOINT HERE // Flash pointer // Initialize Flash pointer // Set Erase bit

// Clear Lock bit

// Dummy write to erase Flash segment // Set WRT bit for write operation // Write value to flash // Clear WRT bit // Set LOCK bit // Segment A pointer // Segment B pointer // Initialize Flash segment A pointer // Initialize Flash segment B pointer // Set Erase bit

20


msp430实用程序汇总(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:海尔战略目标的实现与其人力资源管理间的关系

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: