打印

这个怎么每次返回数据的第一位啊?

[复制链接]
1206|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
517650971|  楼主 | 2011-7-3 23:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg52.h>
#define uchar unsigned char
uchar table[3]={0,0,0};
uchar 标志寄存器;
void main()
{

TMOD = 0x20;
    PCON = 0x00;
    SCON = 0x50;

    TH1 = 0xFd;     //设置波特率 9600
    TL1 = 0xFd;
    TR1 = 1;
//启动定时器1

ES = 1;
   
//开串口中断

EA = 1;

while(1)

{

if(标志寄存器==1)

{

标志寄存器=0;

ES=0;

SBUF=table[0];

   
while(!TI);

SBUF=table[1];

while(!TI);

SBUF=table[2];

while(!TI);

TI=0;

ES=1;

}

}
}
void jieshou() interrupt 4
{

static uchar i=3;

EA=0;

if(RI==1)   //当硬件接收到一个数据时,RI会置位

{

table[i]=SBUF;


RI = 0;  

if(i==0) i=3;
                标志寄存器=1;  

i--;


}

EA=1;
}

相关帖子

沙发
毅如靳往| | 2011-7-4 00:01 | 只看该作者
没怎么学过51,如果想返回数据的第一位,可是用一个变量,然后除以变量长度减1的十的倍数,就是365的话除以100就是3,应该就行了,不知道是不是符合楼主的问题

使用特权

评论回复
板凳
517650971|  楼主 | 2011-7-4 10:54 | 只看该作者
不是啊   我想让他返回三位   可是他就返回三个第一位的数字

使用特权

评论回复
地板
joyme| | 2011-7-4 15:55 | 只看该作者
每次while(!TI)
后加TI = 0;

使用特权

评论回复
5
liang7143| | 2011-7-4 16:38 | 只看该作者
ls正解
另外 还有一个错误
static uchar i=3;
即第一次运行的时候 i=3
然后执行
table[i]=SBUF;
这里操作数组 会出现越界

使用特权

评论回复
6
hkjc004| | 2011-7-4 19:24 | 只看该作者
:lol

使用特权

评论回复
7
hkjc004| | 2011-7-4 19:25 | 只看该作者
:L

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

40

帖子

1

粉丝