游客
主题
回帖0
积分40
阅读权限1
注册时间2012-8-5
最后登录1970-1-1
在线时间 小时
|
还没用到刚才超级版主说的\0判断完毕,写了个固定字节的程序,但是发送后显示是乱码...很无奈...
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define SCAN P1
sbit HC138_A=P2^0;
sbit HC138_B=P2^1;
sbit HC138_C=P2^2;
sbit HC138_D=P2^3;
sbit SHCP=P1^0;
sbit STCP=P1^1;
sbit DR=P1^2;
sbit DR1=P1^3;
sbit ENT=P1^4;
uint word;
uchar move;
uchar line;
uchar speed=12;
uchar BUF[12];
uchar disp[64]={0},num=0;
unsigned char ReData,SenData;
void loadline()
{
uchar s;
for(s=0;s<5;s++)
{
BUF[2*s]=disp[word+1+32*s+2*line];
BUF[2*s+1]=disp[word+32*s+2*line];
}
}
void sendline()
{
char s,p;
uchar inc,k,j;
if(move<8)
inc=0;
else inc=1;
for(s=0+inc;s<=7+inc;s++)
{
if(move<8)
j=move;
else j=move-8;
k=(BUF[s]<<j)|(BUF[s+1]>>(8-j));
for(p=0;p<8;p++)
{ DR=(k&0x80);
SHCP=0;
SHCP=1;
k<<=1;
}
}
}
void Delay(uchar us)
{
while(--us);
}
void dis()
{
for(line=0;line<16;line++)
{
loadline();
sendline();
STCP=1;
STCP=0;
HC138_A=line&0x01;
HC138_B=line&0x02;
HC138_C=line&0x04;
HC138_D=line&0x08;
Delay(1);
}
}
void ser_int (void) interrupt 4 using 1
{
if(RI == 1)
{
RI = 0;
disp[num]=SBUF;
num++;
}
}
void main()
{
SCON = 0x50;
TMOD|= 0x20;
PCON|= 0x80;
TH1 = 0xF3;
TL1 = 0xF3;
TR1 = 1;
ES = 1;
EA = 1;
while(1)
{
while(word<64)
{
while(move<16)
{
dis();
move++;
}
move=0;
word=word+32;
}
word=0;
}
}
不知道问题出在哪里...请高手指正,也欢迎小白咱们一起讨论呀~~ |
|