#include "2407c.h"
void wait(int nWait);
void interrupt PHANTOM(void);
char cString[17]={"Hello PC!, Over|" }, cReceive, cBuffer[17], cAnswer[16] = {"Oh, you say"};
int bReceive,nLen;
main()
{
unsigned int uWork;
int i,k;
bReceive=0;
asm(" setc INTM");
asm(" clrc SXM");
asm(" clrc OVM");
WDCR=0x6f;
WDKEY=0x5555;
WDKEY=0xaaaa;
SCSR1=0x81fe;
uWork=(MCRA);
uWork|=0x03;
(MCRA)=uWork;
(SCICCR)=0x07;
(SCICTL1)=0x03;
(SCICTL2)=0x00;
(SCIHBAUD)=0x02;
(SCILBAUD)=0x08;
(SCICTL1)=0x23;
while ( 1 )
{
if ( bReceive==0 )
{
for ( i=0;i<16;i++ )
{
do
{
uWork=(SCICTL2);
} while ( uWork&0x0c0 != 0x0c0 );
(SCITXBUF)=cString[i];
wait(1024);
}
}
else
{
for ( i=0;i<10;i++ )
{
do
{
uWork=(SCICTL2);
} while ( uWork&0x0c0 != 0x0c0 );
(SCITXBUF)=cAnswer[i];
wait(1024);
}
do
{
uWork=(SCICTL2);
} while ( uWork&0x0c0 != 0x0c0 );
(SCITXBUF)='\"';
for ( i=0;i<nLen;i++ )
{
do
{
uWork=(SCICTL2);
} while ( uWork&0x0c0 != 0x0c0 );
(SCITXBUF)=cBuffer[i];
wait(1024);
}
do
{
uWork=(SCICTL2);
} while ( uWork&0x0c0 != 0x0c0 );
(SCITXBUF)='\"';
wait(1024);
for ( i=9;i<16;i++ )
{
do
{
uWork=(SCICTL2);
} while ( uWork&0x0c0 != 0x0c0 );
(SCITXBUF)=cString[i];
wait(1024);
}
}
k=0; bReceive=0;
while ( 1 )
{
do
{
uWork=(SCIRXST);
} while ( (uWork&0x40)==0 );
cReceive=(SCIRXBUF);
cBuffer[k]=cReceive;
if ( cReceive=='.' )
{
cBuffer[k+1]='\0';
nLen=k+1;
bReceive=1;
break;
}
k++; k%=16;
}
}
}
void wait(int nWait)
{
int i,j,k=0;
for ( i=0;i<nWait;i++ )
for ( j=0;j<64;j++ )
k++;
}
void interrupt PHANTOM(void)
{
static int phantom_count;
phantom_count ++;
return;
}
评论0