请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号:MSP430F5528 您好,
我遇到了中断处理程序的问题。 维修中断后,它不会持续返回主程序,而是运行同一个ISR。
#include <MSP430.h>***********************************
//LCD初始化
//////////////
LCD功能声明
***********************************
CHAR数据;
int main (void)
{
WDTCTL = WDTPW + WDTHOLD; //停止WDT
LCD_init();
P4SEL = BIT4+BIT5; // WFP 3.4 ,5 = USI_A0 TXD/RXD
UCA1CTL1 |= UCSWRST; //**将状态机置于复位**
UCA1CTL1 || UCSSEL_2; // SMCLK
UCA1BR0 = 6; // 1MHz 9600 (请参阅用户指南)
UCA1BR1 = 0; // 1MHz 9600
UCA1MCTL = UCBRS_0 + UCBRF_13 + UCOS16;// Modln UCBRSx=0,UCBRFx=0,
//过度采样
UCA1CTL1 &=~UCSWRST; //**初始化USCI状态机**
UCA1IE |= UCRXIE; //启用USI_A0 RX中断
__bis_sr_register (LPM0_bits + GIE); //输入LPM0,中断启用
send_string(data);
}//
回显RXed字符,确认TX缓冲区已就绪,先
#if defined(__TI_Compiler_version__)|| defined(__IAR_systems_icc__)
#pragma vector=USI_A1_Vector
__interrupt USI_A1_ISR(#Elify_usiver_)
#endif
{
SWITCH(__EIN_RANGE(UCA1IV,4)){
案例0:break; //矢量0-无中断
情况2:
数据= UCA1RXBUF; //矢量2 - RXIFG
同时(!(UCA1IFG&UCTXIFG)); // USI_A0 TX缓冲器就绪?
UCA1TXBUF = 52; // TX -> RXed字符
中断;
情况4:中断; //矢量4 - TXIFG
默认值:中断;
}__BIC_SR_REGISTER
(LPM0_bits);
}
在上述程序中,我只想在LCD上显示接收到的数据,但它不执行该指令,