Nguyên văn bởi han_nang_008
View Post
Thân,
while (1) {
if (flag) { //Neu co ket qua moi thi xuat ket qua
idx = (ADCValue >> 8); //Nibble cao nhat (chi co 2 bit)
U1TXREG = HexTable[idx]; //Chuyen thanh ky tu tuong ung
while (!U1STAbits.TRMT); //Cho den khi truyen xong ky tu
idx = ((ADCValue >> 4) & 0x000F); //Nibble thu hai
U1TXREG = HexTable[idx]; //Chuyen thanh ky tu tuong ung
while (!U1STAbits.TRMT); //Cho den khi truyen xong ky tu
idx = (ADCValue & 0x000F); //Nibble thap nhat
U1TXREG = HexTable[idx]; //Chuyen thanh ky tu tuong ung
while (!U1STAbits.TRMT); //Cho den khi truyen xong ky tu
U1TXREG = 0x0A; //Cap ky tu CR, LF
while (!U1STAbits.TRMT); //Cho den khi truyen xong ky tu
U1TXREG = 0x0D;
flag = 0; //Xoa co bao hieu co ket qua moi
};
//khai báo bien toan cuc
char chuoi[4];
unsigned char HexTable[] = "0123456789";
void so_to_chuoi(int so)
{
int idx;
int temp;
temp=so;
idx = ((temp >> 12) & 0x000F); //Nibble cao nhat (chi co 2 bit)
chuoi[0] = HexTable[idx];
idx = ((temp >> 8) & 0x000F); //Nibble cao nhat (chi co 2 bit)
chuoi[1] = HexTable[idx];
idx = ((temp >> 4) & 0x000F); //Nibble cao nhat (chi co 2 bit)
chuoi[2] = HexTable[idx]; //Chuyen thanh ky tu tuong ung
idx = (temp & 0x000F); //Nibble thu hai
chuoi[3]= HexTable[idx]; //Chuyen thanh ky tu tuong ung
}
void putdec( short int n )
{
unsigned char d4, d3, d2, d1, d0, q;
if (n < 0) {
putchar( '-' );
n = -n;
}
d1 = (n>>4) & 0xF;
d2 = (n>>8) & 0xF;
d3 = (n>>12) & 0xF;
d0 = 6*(d3 + d2 + d1) + (n & 0xF);
q = (d0 * 0xCD) >> 11;
d0 = d0 - 10*q;
d1 = q + 9*d3 + 5*d2 + d1;
q = (d1 * 0xCD) >> 11;
d1 = d1 - 10*q;
d2 = q + 2*d2;
q = (d2 * 0x1A) >> 8;
d2 = d2 - 10*q;
d3 = q + 4*d3;
d4 = (d3 * 0x1A) >> 8;
d3 = d3 - 10*d4;
putchar( d4 + '0' );
putchar( d3 + '0' );
putchar( d2 + '0' );
putchar( d1 + '0' );
putchar( d0 + '0' );
}
U2MODE = 0x8000; //Main I/O, 8-bit, no parity, 1 stop bit U2STA = 0x0400; //bit10=UTXEN, ngắt khi nhận 1 kí tự U2BRG = 32; //9600 bps @ Fcy = 5 MHz
void __attribute__((__interrupt__)) _U2RXInterrupt(void)
{
_U2RXIF = 0;
m++;
if (m==5)
{ putstr(U2RXREG);}
}
void __attribute__((__interrupt__)) _U2RXInterrupt(void)
{
_U2RXIF = 0;
m++;
dislayLCD(m);
}
Comment