在利用PC机的串口调试助手与单片机通信时,单片机与PC机是以ASCII码的形式通信的,比如发送1,其实发送的是字符1,如果在接收区以十六进制显示的话,是31(1的ASCII码)。具体如下:
1. 十六进制发送与十六进制显示都为选中,发送与接收的都是字符的形式;
2.如果以十六进制发送或者十六进制显示的话,就是以十六进制的ASCII码的形式发送或显示。
如果在串口调试助手中发送十六进制数字,以单片机的数码管显示的话,把十六进制ASCII码,换算成十进制ASCII码,然后显示在数码管上。以下是程序示例:(单片机开发板为普中科技的HC6800-EM3 v3.0)
/*************************
* 目标:以16进制发送一个1-255之间的任一数,当单片机收到后在数码管上动态显示出来
* 作者:panda
* 日期:2017/08/13
*************************/
#include
typedef unsigned int u16;
typedef unsigned char u8;
u16 temp;
u8 bai,shi,ge;
sbit a_138=P1^0; //138译码器的A,B,C端,用于控制数码管的位端
sbit b_138=P1^1;
sbit c_138=P1^2;
u8 code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0x00};
void delay(u16 z)
{
u8 x,y;
for(x=0;x<100;x++)
for(y=0;y