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

📄 exchange.c

📁 测量脉搏的源码 Cypress公司使用 CY27443 完成相关的功能
💻 C
字号:
#include "PSoCApi.h"
#include <m8c.h>
#include "exchange.h"
#include "stdlib.h"
#include "utils.h"

#define BIM_CONTROL_PORT PRT1DR
#define BIM_TX_SEL_BIT 3
#define BIM_RX_SEL_BIT 2

#define TX_FUNCTION_REG_MODE1_BIT 4

#define START_BYTE 'S'
#define STOP_BYTE  'P'
#define XOR_MASK   0x00
#define INDEX_START_BYTE -1
#define INDEX_COMPLETE -2

volatile CHAR tx_index = INDEX_COMPLETE;
BYTE tx_count = 0;
BYTE *tx_buffer;

const char hex_table [] = 
  {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};


void Echange_Stop(void)
{
  TX_SERIAL_Stop();
  Baud_Start(); 
}

void Exchange_SendBuf(char *p_tx, BYTE count)
{ 
  while (INDEX_COMPLETE != tx_index);
  
  tx_count = count << 1;
  
  tx_buffer = p_tx; 
  tx_index = INDEX_START_BYTE;
}

void Exchange_Start(void)
{
  Baud_Start();
  CLEARBIT(TX_SERIAL_FUNC_REG, TX_FUNCTION_REG_MODE1_BIT); //set TX reg empty interrupt
  TX_SERIAL_Start(TX8_PARITY_NONE); 

  tx_index = INDEX_COMPLETE;      
  TX_SERIAL_EnableInt(); 
  TX_SERIAL_TX_BUFFER_REG = XOR_MASK;
}

void Exchange_Stop(void)
{   
  TX_SERIAL_DisableInt();
  TX_SERIAL_Stop(); 
}

#pragma interrupt_handler TX_SERIAL_handler;
void TX_SERIAL_handler (void)
{ 
  if (INDEX_COMPLETE == tx_index)
  {
    TX_SERIAL_TX_BUFFER_REG = XOR_MASK;
  }
    else 
  if (INDEX_START_BYTE == tx_index)
  {
    TX_SERIAL_TX_BUFFER_REG = XOR_MASK ^ START_BYTE;
    tx_index++;
  }
    else    
  if (tx_index < tx_count)  
  {
    TX_SERIAL_TX_BUFFER_REG = XOR_MASK ^((tx_index & 0x01) ? 
     (hex_table[tx_buffer[tx_index >> 1] & 0x0F]):((hex_table[tx_buffer[tx_index >>1] >> 4])));
     
     tx_index++;
  }
    else 
  if (tx_index == tx_count)  
  {
    TX_SERIAL_TX_BUFFER_REG = XOR_MASK ^ STOP_BYTE;
    tx_index++;
  }
    else
  if (tx_index == (tx_count+1))
  {
    tx_index = INDEX_COMPLETE;
    TX_SERIAL_TX_BUFFER_REG = XOR_MASK;
  }    
}


⌨️ 快捷键说明

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