這對於熟悉C的人應該很容易回答。我想在LCD上顯示一個變量的前一個值(在微控制器上接收UART(RS-232)的寄存器)。這是我當前的實現,它工作正常。但我想知道是否有辦法在我的中斷程序中花費更少的時間。目前,外設配置爲在UART饋送中收到一個新字符後立即跳轉到中斷程序。建議任何人?顯示先前接收到的UART值
//Initialization
char U1RX_data = '\0';
char p0_U1RX_data = '\0';
char p1_U1RX_data = '\0';
char p2_U1RX_data = '\0';
char p3_U1RX_data = '\0';
char p4_U1RX_data = '\0';
char p5_U1RX_data = '\0';
char p6_U1RX_data = '\0';
char p7_U1RX_data = '\0';
char U1buf[] = {p7_U1RX_data, p6_U1RX_data, p5_U1RX_data,
p4_U1RX_data, p3_U1RX_data, p2_U1RX_data,
p1_U1RX_data, p0_U1RX_data, U1RX_data, '\0'};
disp_string(-61, 17, 1, U1buf); //X, Y, mode, string
void _U1RXInterrupt(void){
p7_U1RX_data = p6_U1RX_data;
p6_U1RX_data = p5_U1RX_data;
p5_U1RX_data = p4_U1RX_data;
p4_U1RX_data = p3_U1RX_data;
p3_U1RX_data = p2_U1RX_data;
p2_U1RX_data = p1_U1RX_data;
p1_U1RX_data = p0_U1RX_data;
p0_U1RX_data = U1RX_data;
U1RX_data = U1RXREG;
IFS0bits.U1RXIF = 0;
}
感謝您的所有答案。我會看看循環緩衝區。奇怪的是,這是在一個頻率爲7.3 MHz的dsPIC30F4013上進行的。在這種情況下,優化可能不是必需的,但如果遇到問題,我會知道如何去做。 – JcMaco 2009-11-26 21:59:52