Trích VD 4.2:
Code:
#include "p30f4012.h"
_FOSC(CSW_FSCM_OFF & FRC_PLL4); //Clock = 32 MHz
_FWDT(WDT_OFF);
_FBORPOR(MCLR_EN & PBOR_OFF & PWMxL_ACT_HI & PWMxH_ACT_HI);
_FGS(CODE_PROT_OFF);
//Cac prototype cho cac chuong trinh con
void Init_UART1_Module(void);
//Cac bien toan cuc
unsigned short temp;
//------------------------------------------------------------------------------
//Chuong trinh chinh
int main(void) {
Init_UART1_Module(); //Khoi tao module UART1
while (1) {
if (U1STAbits.URXDA) { //Cho den khi nhan duoc mot ky tu
temp = U1RXREG; //Doc ky tu da nhan duoc vao temp
U1TXREG = temp + 1; //Gui tra ky tu da duoc sua doi (cong 1 vao)
};
};
}
//Chuong trinh con khoi tao module UART1
void Init_UART1_Module(void) {
U1MODE = 0x8000; //Main I/O, 8-bit, no parity, 1 stop bit
U1STA = 0x0400; //bit10=UTXEN
U1BRG = (((8000000/38400)/16)-1); //38400 bps @ Fcy = 8 MHz
}
Em chưa rõ là biến temp ở đây có phải sẽ nhận giá trị kiểu char? Nếu em muốn truyền từ PC xuống chip chuỗi "123456" thì mỗi lần nhận 1 kí tự, biến temp sẽ thay đổi.
Em muốn nhận luôn 123456 làm 1 hệ số k = 123456. Có hàm nào sẵn có thực hiện việc ghép nối này, hay mình phải viết riêng vậy anh Nam?