包含一个字符和两位数的值
Include one character with two digit value
下面的代码显示,检查硬件上 PORTB 的数字输出。那个 PORTB 有 UI1-UI12。
不短路时,值为1。
因此,如果没有短路,当我在超级终端中编写 UI5-UI7 时,它将显示 0x03(二进制 111 位)
这里是代码:
void decode(unsigned char* msg) {
AD1PCFGL = 0xFFFF; //set all analog pin to digital
int y, z, x;
unsigned char* lala[50];
if (strstr(msg, "UI") == msg) {//UI[2]-UI[6]
x = msg[2] - '0'; // char to integer
y = msg[6] - '0'; // char to integer
//UI[2]-UI[6]
int start = x - 1; //get offset, start from zero
int end = y; // end
int pinValue; // each pin value
int output_value=0; // result
int j = 0, i; // j, start from 0
for (i = start; i < end; i++) {
pinValue = ((PORTB & (1 << i)) > 0 )?1:0; // get current pin value from RB3, RB4, RB5, RB6, RB7->UI4, UI5, UI6, UI7, UI8
output_value |= (pinValue << j++);
}
sprintf(lala, "0x%X \r\n", output_value); //%02x(hex),%X(HEX)
sendString(lala);// send to Hyper-Terminal
}
}
如何将msg[2]和msg[6]包含为两位数?
因为从上面的代码来看,我在写UI10-UI12的时候出现了问题,给出了错误的结果。
下面的代码显示,检查硬件上 PORTB 的数字输出。那个 PORTB 有 UI1-UI12。 不短路时,值为1。
因此,如果没有短路,当我在超级终端中编写 UI5-UI7 时,它将显示 0x03(二进制 111 位)
这里是代码:
void decode(unsigned char* msg) {
AD1PCFGL = 0xFFFF; //set all analog pin to digital
int y, z, x;
unsigned char* lala[50];
if (strstr(msg, "UI") == msg) {//UI[2]-UI[6]
x = msg[2] - '0'; // char to integer
y = msg[6] - '0'; // char to integer
//UI[2]-UI[6]
int start = x - 1; //get offset, start from zero
int end = y; // end
int pinValue; // each pin value
int output_value=0; // result
int j = 0, i; // j, start from 0
for (i = start; i < end; i++) {
pinValue = ((PORTB & (1 << i)) > 0 )?1:0; // get current pin value from RB3, RB4, RB5, RB6, RB7->UI4, UI5, UI6, UI7, UI8
output_value |= (pinValue << j++);
}
sprintf(lala, "0x%X \r\n", output_value); //%02x(hex),%X(HEX)
sendString(lala);// send to Hyper-Terminal
}
}
如何将msg[2]和msg[6]包含为两位数? 因为从上面的代码来看,我在写UI10-UI12的时候出现了问题,给出了错误的结果。