串口调试

2019-03-24 18:38发布

我今天,做了这样一个实验,就是通过P1口的1,2,3,4的电平高低,来选择向串口输出的内容,但是在输出内容的最后总会有两个十六进制的00,不知道是什么原因,清大家帮忙看看
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
unsigned char flag,a,i;
uchar code table0[]={0x01,0x54,0x58,0x53,0x51,0x00,0x23,0x1f,0xf8};
uchar code table1[]={0x11,0x54,0x58,0x53,0x51,0x00,0x23,0x1f,0xf8};
uchar code table2[]={0x22,0x54,0x58,0x53,0x51,0x00,0x23,0x1f,0xf8};
uchar code table3[]={0x33,0x54,0x58,0x53,0x51,0x00,0x23,0x1f,0xf8};
sbit P10=P1^0;
sbit P11=P1^1;
sbit P12=P1^2;
sbit P13=P1^3;
void init()
{
    P10=1;
        P11=1;
        P12=1;
        P13=1;
    TMOD=0X20;
    TH1=0XFD;
    TL1=0XFD;
    TR1=1;
    REN=1;
    SM0=0;
    SM1=1;
    EA=1;
    ES=1;

}
void delayms(uint xms)
{
        uint i,j;
        for(i=xms;i>0;i--)
                for(j=110;j>0;j--);
}
void main()
{
    init();
    while(1)
    {
                if(P10==0&&P11==1&&P12==1&&P13==1)
                {
                        ES=0;
                    for(i=0;i<9;i++)
                    {
                                SBUF=table0;
                                while(!TI);
                                TI=0;
                                delayms(1000);
                }
                    SBUF=a;
                    while(!TI);
                    TI=0;
                    ES=1;
                }
                else if(P10==1&&P11==0&&P12==1&&P13==1)
                {
                        ES=0;
                    for(i=0;i<9;i++)
                    {
                                SBUF=table1;
                                while(!TI);
                                TI=0;
                }
                    SBUF=a;
                    while(!TI);
                    TI=0;
                    ES=1;
                }
                else if(P10==1&&P11==1&&P12==0&&P13==1)
                {
                        ES=0;
                    for(i=0;i<9;i++)
                    {
                                SBUF=table2;
                                while(!TI);
                                TI=0;
                }
                    SBUF=a;
                    while(!TI);
                    TI=0;
                    ES=1;               
                }
                else if(P10==1&&P11==1&&P12==1&&P13==0)
                {
                        ES=0;
                    for(i=0;i<9;i++)
                    {
                                SBUF=table3;
                                while(!TI);
                                TI=0;
                }
                    SBUF=a;
                    while(!TI);
                    TI=0;
                    ES=1;       
                }  
        }
}
当选择P10口为低电平时的输出结果,输出结果如下图所示,就是不知道输出数据结尾的两个00是怎么回事
选择P10口时的输出结果 选择P10口时的输出结果 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。