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

📄 exchange.c

📁 用VC编辑的一个MD5算法
💻 C
字号:
#include "exchange.h"
#include "ddsapi.h"
#include "globalparams.h"


#define bTx_232_INT_MASK 0x20

#define RX_BUFFER_LEN 15

BOOL ready = FALSE;
BYTE rx_buffer[RX_BUFFER_LEN] = "";
static volatile BYTE rx_index = 0;

#define TX_BUFFER_LEN 35
BYTE tx_buffer[TX_BUFFER_LEN] = "";
static BYTE tx_index = 0;

void OpenExchange(void)
{
  Rs_Timer_DisableInt();
  Rs_Timer_WritePeriod(RS232_BAUDRATE_PERIOD);
  Rs_Timer_Start();
  
  rx_index = 0;
  Rx_232_EnableInt();
  Rx_232_Start(RX8_PARITY_NONE); 
  
  tx_index = 0xFF;
  Tx_232_DisableInt();
  Tx_232_Start(TX8_PARITY_NONE);
  
  ready = FALSE;
}

void CloseExchange(void)
{
  Rs_Timer_Stop();  
}




#pragma interrupt_handler Rs232_Rx_handler;
void Rs232_Rx_handler(void)
{
  static BYTE ch = 0;
  
  ch = Rx_232_RX_BUFFER_REG;
  
  if (!(Rx_232_CONTROL_REG & RX8_RX_NO_ERROR))
  {
    if (  (ch == '\n'))
    {
      if (rx_index > 1) ready = FALSE;
      rx_buffer[rx_index] = 0;
      rx_index = 0;
    }
    else
    {
      if (rx_index < (RX_BUFFER_LEN-1))
      {
        rx_buffer[rx_index++] = ch;
      }
    }
  } 
}

#pragma interrupt_handler Rs232_Tx_handler;
void Rs232_Tx_handler(void)
{ 
  if (tx_buffer[tx_index])
  {
    Tx_232_TX_BUFFER_REG = tx_buffer[tx_index++];
  }
    else 
  {
    M8C_DisableIntMask (INT_MSK1, bTx_232_INT_MASK); 
    tx_index = 0xFF;
  }
}

void ExchangeSend(const BYTE *str)
{
  BYTE *ptr = tx_buffer, tx_count = 0;
  
  while(tx_index != 0xFF);  
  tx_index = tx_count= 0;
  
  while (*str)
  {
    *ptr++ = *str++;   
    if (++tx_count > (TX_BUFFER_LEN-2)) break;
  }
  *ptr = 0;
  
  Tx_232_EnableInt();
  Tx_232_SendData(tx_buffer[tx_index++]);
 
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -