|
#include <reg51.h>
#include <string.h>
#include <stdio.h>
#define STR_LEN 4
bit sendFlag;
unsigned char checksum;
unsigned char count3;
unsigned char inBUF[STR_LEN];
/** Initlize IE TCON SCON function **/
void initCOM(void)
{
SCON = 0x50; //SCON: serail mode 1, 8-bit UART, enable ucvr
TMOD = 0x20; //TMOD: timer 1, mode 2, 8-bit reload
PCON = 0x80; //SMOD=1;
TH1 = 0xF4; //Baud:4800 fosc=11.0592MHz
IE = 0x90; //interrupt enable
TR1 = 1; //Run
}
/** Send a char to MC **/
void sendChar(unsigned char ch)
{
SBUF = ch;
while(TI == 0);
TI = 0;
}
/** Send a String to MC **/
void sendString(unsigned char *str, char length)
{
char strlen = 0;
while(strlen < length)
{
sendChar( *(str+strlen) );
strlen ++;
}
}
/** COM receive message interrupt function**/
void inteReceive (void) interrupt 4 using 1
{
if(RI == 1)
{
unsigned char chr;
RI = 0;
chr=SBUF;
if(chr>127)
{
count3=0;
inBUF[count3]=chr;
checksum= chr-128;
}
else
{ count3++;
inBUF[count3]=chr;
checksum ^= chr;
if( (count3 == (STR_LEN-1) ) && ( !checksum ) )
{
sendFlag = 1;
}
}
}
}
int main(void)
{
initCOM();
if (sendFlag == 1) //sendFlag want to send message to MC
{
sendString(inBUF,STR_LEN);
sendFlag = 0;
}
}
|
|