发表于:2005-08-12 16:51:00
楼主
用1480芯片
mcu 80c320
用串口0,p1。6连DE
实现功能是:mcu收到串口内容,原样发出
结果,pc只要给单片机发一个字节
单片机就老是收到这个字节的内容,然后远远而不断的发出
表述好像不清楚,举个例子把
我用pc给mcu发0x30,mcu给pc总是发送0x30
这个程序在max485上可以使用。
ps,p1_1是给另一个芯片使用的。
程序如下
//0526
// COMMUNICATE OK
#include <reg320.h>
#include <absacc.h>
#define uchar unsigned char
#define uint unsigned int
sbit P1_1 =P1^1;
bit flag=0;
sbit max485rw =P1^6;
unsigned char a ;
void delay_50us();
void clock_initial (void);
void delay_5us();
void send(uchar x);
void receive();
void delay(int i);
////////////////////////////////////
void delay(int i)
{
int temp;
for (temp=i;temp>0;temp--);
}
void receive()
{
if(SBUF0==0){}
else
{
a=SBUF0;
flag=1;
}
if(SBUF0!=00)
{
ES0=0;
// while(RI==0);
a=SBUF0;
RI=0;
ES0=1;
send(a);
}
else
{
RI=0;
}
}
void send(unsigned char x)
{
max485rw=1;
delay(5);
SBUF0=x;
while (TI==0);
TI=0;
ES0=0;
max485rw=0;
delay(5);
ES0=1;
}
void spint(void) interrupt 4//serial port interrupt
{
receive();
}
/***************************主函数************************/
void main(void)
{
SP=0x80;
TMOD=0x20;
TH1=0xFD;
TL1=0xFD;
EA=0;
ES0=0;
PCON=0x00;
TR1=1;
SCON0=0x50;
IP=0x10;
WDCON=0x00;
ES0=1;
EA=1;
max485rw=0;
P1_1=0;
while(1)
{
P1_1=1;
delay_5us();
P1_1=0;
}
}