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

📄 rsdocument.c

📁 超声波测距程序
💻 C
字号:
//=============================================================
//  文件名称: RSDocument.c
//  实现功能: 串行通讯、各中断服务程序
//  完成日期:  2004,7,19
//==============================================================
#include "SPCE061V004.h"

#define	M_RX_FLAG			0x80
#define M_TX_FLAG			0x40


unsigned int uiRS_Buff;				//串行口接收数据缓存
unsigned int uiRS_ReciveFlag;		//串行口接收数据标识
unsigned int uiTX_Index;			//串行口发送数据缓冲区,发送数据的索引号
unsigned int uiTX_Data_Number;		//本次发送数据的个数	
unsigned int uiTX_Buff[5];			//发送数据缓冲区   暂时设定为10个8bit的数据区域			

//============================================================= 
// 函数名称:    IRQ7()
// 功能描述:	串行中断入口程序
// 语法格式:    void IRQ7(void)
// 入口参数:    无
// 出口参数:    无
// 注意事项:    仅为用户模型
//=============================================================
void IRQ7(void)__attribute__((ISR));
void IRQ7(void)
{
	unsigned int Temp;
	Temp = *P_UART_Command2;
	if(Temp & M_RX_FLAG)
	{								//接收中断
		uiRS_Buff=*P_UART_Data;
		if(uiRS_Buff==0x00aa)
			uiRS_ReciveFlag=1;
		else
			uiRS_ReciveFlag=0;
	}
	else
	{								//发送中断
		uiTX_Index++;
		if(uiTX_Index<uiTX_Data_Number)
		{
			if(uiTX_Index&0x0001) *P_UART_Data = uiTX_Buff[uiTX_Index>>1];
			else *P_UART_Data = (uiTX_Buff[uiTX_Index>>1])>>8;
		}
		else
		{							//缓冲区内数据发送完  关掉发送中断
			*P_UART_Command1 = 0x80; 
		}
	}
}

//============================================================= 
// 函数名称:    UART_SendChar(unsigned int uiNumber)
// 功能描述:	串行数据发送启动程序  (另:本函数为了适用于其它
//              用法,故用这个比较"笨"的方法,便于其它用途的扩展嘛:)
// 语法格式:    void UART_SendChar(unsigned itn uiNumber)
// 入口参数:    无
// 出口参数:    无
// 注意事项:    仅为用户模型
//=============================================================

void UART_SendChar(unsigned int uiNumber)
{
	uiTX_Data_Number = uiNumber;
	*P_UART_Data = uiTX_Buff[0]>>8; 
	uiTX_Index = 0;
	*P_UART_Command1 = 0xc0; 		//开发送中断
}

⌨️ 快捷键说明

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