📄 sio.c
字号:
#include<REG51.h>
#include </C51/string.h>
#include "sio.h"
//extern MSG_BUF can_in[1];
unsigned char rs232_in[8];
unsigned char send_NO;
#define OSC 20000000L /* Oscillator Frequency */
static void com_isr (void) interrupt 4 using 2
{
//------------------------------------------------
//Received data interrupt.
//------------------------------------------------
EA=0;
if (RI != 0)
{
RI = 0;
rs232_in[0] = SBUF;
}
//------------------------------------------------
//Transmitted data interrupt.
//------------------------------------------------
if (TI != 0)
{
TI = 0;
// if (send_NO <= can_in.LEN)
// {
// SBUF = can_in.BUF[send_NO];
// send_NO++;
// }
}
EA=1;
}
//--------------------------------------------------------------------------
//--------------------------------------------------------------------------
void com_initialize (void)
{
//------------------------------------------------
//Setup TIMER1 to generate the proper baud rate.
//------------------------------------------------
com_baudrate (19200);
//------------------------------------------------
//Clear com buffer indexes.
//------------------------------------------------
EA = 0; // Disable Interrupts
//------------------------------------------------
//Setup serial port registers.
//------------------------------------------------
SM0 = 0; SM1 = 1; // serial port MODE 1
SM2 = 0;
REN = 1; // enable serial receiver
TI = 0; // clear transmit interrupt
RI = 0; // clear receiver interrupt
ES = 1; // enable serial interrupts
PS = 0; // set serial interrupts to low priority
EA = 1; // Enable Interrupts
}
//-----------------------------------------------------------------------
//----------------------------------------------------------------------
void com_baudrate (unsigned baudrate)
{
EA = 0; // Disable Interrupts
//------------------------------------------------
//Clear transmit interrupt and buffer.
//------------------------------------------------*/
TI = 0; // clear transmit interrupt */
/*------------------------------------------------
Set timer 1 up as a baud rate generator.
------------------------------------------------*/
TR1 = 0; // stop timer 1
ET1 = 0; // disable timer 1 interrupt
PCON |= 0x80; // 0x80=SMOD: set serial baudrate doubler
TMOD &= ~0xF0; // clear timer 1 mode bits
TMOD |= 0x20; // put timer 1 into MODE 2
TH1 = (unsigned char) (256 - (OSC / (16L * 12L * baudrate)));
TH1 = 0xFd;//38400
//TH1 = 0xF5;//9600
TR1 = 1; // start timer 1
EA = 1; // Enable Interrupts
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -