工程下载链接:https://download.csdn.net/download/qq_45467083/12100424
本次实验实现了基于串口通信的表达式解析与计算功能,如下图所示,向单片机输入表达式:9*9*8 +9/3*6-3*8 * (1 * 5+4 * (2-2)+5)/(3-1 * 9)=
;(空格会自动忽略); 返回计算结果:706,等等。
实验配置了一个波特率为115200的串口UART,在接受缓存满和发送缓存空的时候都会产生中断。在接受中断中调用oneCharProcess(revChar_temp);
处理接受字符,在发送中断中发送待发送字符串。
中断服务程序如下:
/* ======== USCI A0/B0 TX Interrupt Handler Generation ======== */
#pragma vector = USCI_A1_VECTOR
__interrupt void USCI_A1_ISR(void){
switch(__even_in_range(UCA1IV,4)){
//user guide:36.4.14 UCAxIV Register
case 0:break;
case 2://接受数据
revChar_temp = UCA1RXBUF;
oneCharProcess(revChar_temp);
break; //vector 2 : RXIFG
case 4://发送数据
if(sendstr[str_index] != '\0'){
UCA1TXBUF = sendstr[str_index++];
}else{
str_index = 0;
}
break; //vector 4 : TXIFG
default: break;
}