📄 commdrv.c
字号:
/****************************************************************************
Copyright (c) 1999-2003 Grey Matter India Technologies Pvt.Ltd.
Module:
Author:
Created:
Modification History
*****************************************************************************/
#include <Reg51.h>
#include "CommDrv.h"
static void (*CommEvent)(BYTE);
WORD tempvar;
void disable()
{
EA = 0;
}
void enable()
{
EA = 1;
}
void CommInit(void)
{
PCON |= 0x80; // Divide by 32.
TMOD |= 0x20; // Timer1 Mode 2, 8-bit Reload.
SCON = 0x50; // 8-bit, 1 stop bit, REN enable.
TH1 = (256 - (XTAL/( 12L*16L * BAUDRATE))); //6 clock periods per machine cycle
TR1 = 1; // Start Timer
ES = 1; //Enable serial interrupts
TI = 0;
}
void BindCommEvent(FunctPtr func)
{
disable();
CommEvent = func;
enable();
}
void WriteComm(char c)
{
SBUF = c;
// while(TI != 1); //wait till the entire byte is transfered & TI flag is set
for(tempvar = 0; tempvar < 0xFFFF; tempvar++)
{
if(TI == 1)
break;
}
TI = 0;
}
void WriteCommStr(char* str) //reentrant
{
while(*str != '\0')
{
SBUF = *str++;
// while(TI != 1);
for(tempvar = 0; tempvar < 0xFFFF; tempvar++)
{
if(TI == 1)
break;
}
TI = 0;
}
}
void WriteCommStrHex(BYTE* hexdata, BYTE len) //reentrant
{
while(len--)
{
WriteCommHex(*hexdata);
hexdata++;
}
}
void WriteCommHex(BYTE hexdata) //reentrant
{
ConvertHex(hexdata >> 4);
ConvertHex(0x0F & hexdata);
WriteComm(' ');
}
void ConvertHex(BYTE hex)
{
switch(hex)
{
case 0:
WriteComm('0');
break;
case 1:
WriteComm('1');
break;
case 2:
WriteComm('2');
break;
case 3:
WriteComm('3');
break;
case 4:
WriteComm('4');
break;
case 5:
WriteComm('5');
break;
case 6:
WriteComm('6');
break;
case 7:
WriteComm('7');
break;
case 8:
WriteComm('8');
break;
case 9:
WriteComm('9');
break;
case 10:
WriteComm('A');
break;
case 11:
WriteComm('B');
break;
case 12:
WriteComm('C');
break;
case 13:
WriteComm('D');
break;
case 14:
WriteComm('E');
break;
case 15:
WriteComm('F');
break;
}
}
static void ComISR(void) interrupt 4
{
char c;
if(RI)
{
c = SBUF;
RI = 0;
CommEvent(c);
}
/* if(TI != 0)
{
TI = 0;
}
*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -