本帖最后由 dolin_wu 于 2010-2-4 21:57 编辑
用串口调试助手发送数据给单片机,发现不能发送大于255的数据,是因为它的数据发送位只有8位
导致只能发小于255的数,如果我要用电脑和单片机通信,怎么才能发送大于255的数据啊 ?要能够发送<255和大宇255的数都能发!
我的P0口接的是数码管,P2^7和P2^6接的是数码管的位选和段选,程序如下:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uint i=0;
uchar j;
sbit wela=P2^7;
sbit dula=P2^6;
uchar code tablenum[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uchar code tablewei[]={
0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f
};
void inti();
uchar swan,wan,qian,bai,shi,ge;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=50;y>0;y--);
}
void display(uchar swan,wan,qian,bai,shi,ge);
void main()
{
inti();
while(1)
{
display(swan,wan,qian,bai,shi,ge);
}
}
void inti()
{
TMOD=0x20;
TH1=0xf4;
TL1=0xf4;
TR1=1;
REN=1;
SM0=1;
SM1=1;
EA=1;
ES=1;
}
void sri() interrupt 4
{
RI=0;
i=SBUF;
swan=i/100000;
wan=i%100000/10000;
qian=i%100000%10000/1000;
bai=i%100000%10000%1000/100;
shi=i%100000%10000%1000%100/10;
ge=i%100000%10000%1000%10;
}
void display(uchar swan,wan,qian,bai,shi,ge)
{
uchar a=0;
dula=1;
P0=tablenum[swan];
dula=0;
P0=0xff;
wela=1;
P0=tablewei[a];
a++;
wela=0;
delay(5);
dula=1;
P0=tablenum[wan];
dula=0;
P0=0xff;
wela=1;
P0=tablewei[a];
a++;
wela=0;
delay(5);
dula=1;
P0=tablenum[qian];
dula=0;
P0=0xff;
wela=1;
P0=tablewei[a];
a++;
wela=0;
delay(5);
dula=1;
P0=tablenum[bai];
dula=0;
P0=0xff;
wela=1;
P0=tablewei[a];
a++;
wela=0;
delay(5);
dula=1;
P0=tablenum[shi];
dula=0;
P0=0xff;
wela=1;
P0=tablewei[a];
a++;
wela=0;
delay(5);
dula=1;
P0=tablenum[ge];
dula=0;
P0=0xff;
wela=1;
P0=tablewei[a];
a++;
wela=0;
delay(5);
if(a==5)
a=0;
} |