找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1776|回复: 2
打印 上一主题 下一主题
收起左侧

大神看看我单片机串口程序那出问题了?

[复制链接]
跳转到指定楼层
楼主
#include<reg52.h>

#define BAUD 9600  //define后边不能使用分号

unsigned char rxdbuf=0;
unsigned char j=0;
unsigned char *p;
unsigned char flag=0;

unsigned char array1[]={1};
unsigned char array2[]={1,2};
unsigned char array3[]={1,2,3};
unsigned char array4[]={1,2,3,4,5,6,7,8};

void configbaud(unsigned int baud);

void main()
{        EA=1;
        configbaud(BAUD);
        while(1)
        {          if(flag)
                {        flag=0;
                        switch(rxdbuf)
                        {        case 1:        p=&array1[0];
                                                j=sizeof(p);
                                                TI=1;
                                                break;
                                case 2: p=array2;
                                                j=sizeof(p);
                                                TI=1;
                                                break;
                                case 3: p=array3;
                                                j=sizeof(p);
                                                TI=1;
                                                break;
                                case 4: p=array4;
                                                j=sizeof(p);
                                                TI=1;
                                                break;
                                default: break;        
                        }
                }
        }
               
}
void configbaud(unsigned int baud)
{        
        TH1=256-(11059200/2/16/12/baud);
        TL1=TH1;
        TMOD&=0x0F;
        TMOD|=0x20;
        TR1=1;
        ET1=0;
        SCON=0x50;
        ES=1;//打开串口中断。
}
void interruptuart()interrupt 4
{        if(RI)
        {        RI=0;
                flag=1;
                rxdbuf=SBUF;
        }
        if(TI)
        {        TI=0;
                if(j>0)
                {        SBUF=*p;//先对指针p取内容,在++;
                        j--;
                        p++;                        
                }
        }
}


程序的目的是在串口调试助手那输入一个1-4的数字后,根据输入的数据,返回指定的数组。
程序问题是我输入4(应该显示1-8数字)时,串口助手那只显示三个数(1-3),大神看看我程序那出问题了?



360反馈意见截图16270901436130.png (51.53 KB, 下载次数: 80)

360反馈意见截图16270901436130.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:97438 发表于 2016-9-26 14:36 | 只看该作者
j=sizeof(p);看清楚这句,结果是什么????
回复

使用道具 举报

板凳
ID:139821 发表于 2016-9-26 15:21 | 只看该作者
luoluoluo136 发表于 2016-9-26 14:36
j=sizeof(p);看清楚这句,结果是什么????

知道问题了。谢谢。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表