注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
wangwanzhao的个人空间 https://home.eeworld.com.cn/space-uid-394460.html [收藏] [复制] [分享] [RSS]
日志

串口调试

已有 375 次阅读2013-8-15 17:15

我今天,做了这样一个实验,就是通过P1口的1,2,3,4的电平高低,来选择向串口输出的内容,但是在输出内容的最后总会有两个十六进制的00,不知道是什么原因,清大家帮忙看看
#include
#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是怎么回事

本文含有来自论坛的附件或图片点击查看原帖附件。

本文来自论坛,点击查看完整帖子内容。

全部作者的其他最新日志
评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册