⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sio.c

📁 采用sja1000开发can总线的源代码
💻 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 + -