h"
Pada pengaturan UARTX terdapat 2 mode yaitu mode
#include "init_peripherals.h"
#include "global_variables.h" Register dan mode Control.
#include "uart_funcs.h"
#include "bms_funcs.h" Fungsi #include adalah sebuah prosesor pengarah
yang mengatakan kepada kompiler untuk meletakan
void uart1_xmit(unsigned char data) kode dari header file kedalam program.
{
U1TXREG = (unsigned char)data;
Mode 20-2
while (U1STAbits.UTXBF){}
} bit 9 UTXBF: UARTx Transmit Buffer Full Status bit
(hanya dapat membaca tidak dapat mengirm atau
void Send_Data_to_GUI (unsigned int data) menerima karakter buffer)
{ 1 = Transmit buffer penuh
0 = Transmit buffer tidak penuh;
U1TXREG = (unsigned char)(data & 0x00ff); Setidaknya satu karakter lagi bisa ditulis
while (U1STAbits.UTXBF){}
Pada program yang digunakan adalah mode “0”.
U1TXREG = (unsigned char)((data >> 8) & 0xff);
while (U1STAbits.UTXBF){} Sehingga dapat menambahkan satu karakter dalam
} pengiriman maupun penerimaan data dari angka yang
disetting.
void send3byte(unsigned long int data)
{
U1TXREG = (unsigned char)(data & 0x00ff);
while (U1STAbits.UTXBF){}
U1TXREG = (unsigned char)((data >> 8) & 0xff);
while (U1STAbits.UTXBF){}
U1TXREG = (unsigned char)((data >> 16) & 0xff);
while (U1STAbits.UTXBF){}
}
a = ((buff&0xC000)>>14)|0x80;
b = ((buff&0x3F80)>>7)|0x80;
c = ((buff&0x007F))|0x80;
uart1_xmit(a);
uart1_xmit(b);
uart1_xmit(c);
}
// uart1_xmit('\n');
}
void loadData(void)
{
int i = 41;
dataPack [0] = V_pack1; //V1 __5
dataPack [1] = V_pack2; //V2 __5 a= (unsigned char)((hex_data>>8)&0xf);
dataPack [2] = V_pack3; //V3 __5 b =(unsigned char)((hex_data>>4)&0xf);
dataPack [3] = V_pack4; //V4 __5 c= (unsigned char)( hex_data&0xf);
dataPack [4] = V_pack5; //V5 __5
dataPack [5] = V_pack6; //V6 __5 if ((a>=0)&&(a<=9))
dataPack [6] = V_pack7; //V7 __5 {
dataPack [7] = V_BAT; //Vt __5 ascii_data[0]=a+0x30;
dataPack [8] = V_HVDC; //Vhc __5 }
dataPack [9] = iSystem; //It __5
dataPack [10] = pSystem; //P __5 else
dataPack [11] = T_pack1; //t1 __2 {
dataPack [12] = T_pack2; //t2 __2 ascii_data[0]=a+0x37;
dataPack [13] = T_pack3; //t3 __2 }
dataPack [14] = T_pack4; //t4 __2
dataPack [15] = T_pack5; //t5 __2 if ((b>=0)&&(b<=9))
dataPack [16] = T_pack6; //t6 __2 {
dataPack [17] = T_pack7; //t7 __2 ascii_data[1]=b+0x30;
dataPack [18] = FV_pack1; //Fv1 __1 }
dataPack [19] = FV_pack2; //Fv2 __1
dataPack [20] = FV_pack3; //Fv3 __1 else
dataPack [21] = FV_pack4; //Fv4 __1 {
dataPack [22] = FV_pack5; //Fv5 __1 ascii_data[1]=b+0x37;
dataPack [23] = FV_pack6; //Fv6 __1 }
dataPack [24] = FV_pack7; //Fv7 __1
dataPack [25] = FT_pack1; //Ft1 __1 if ((c>=0)&&(c<=9))
dataPack [26] = FT_pack2; //Ft2 __1 {
dataPack [27] = FT_pack3; //Ft3 __1 ascii_data[2]=c+0x30;
dataPack [28] = FT_pack4; //Ft4 __1 }
dataPack [29] = FT_pack5; //Ft5 __1
dataPack [30] = FT_pack6; //Ft6 __1 else
dataPack [31] = FT_pack7 ; //Ft7 __1 {
dataPack [32] = vSystemStat; //Vstat __1 ascii_data[2]=c+0x37;
dataPack [33] = iSystemStat; //Istat __1 }
dataPack [34] = SOC; //SOC __3
dataPack [35] = DOD; //DOD __3 }
//spare
for (i = 41; i < 63; i++) {
dataPack [i] = 0;
}