📄 rsdocument.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 InitUART(void)
{
unsigned int iTest; //设置的中间量
__asm("INT OFF");
//IOB2 口为外部中断的输入,设置为带下拉的输入口。
//在IOB口中IOB7为RX IOB10为TX
iTest = *P_IOB_Dir;
iTest |= 0x0400;
iTest &= 0xff7f;
*P_IOB_Dir = iTest;
iTest = *P_IOB_Attrib;
iTest |= 0x0480;
*P_IOB_Attrib = iTest;
// iTest = 0x0004;
// *P_IOB_Data = iTest;
*P_SystemClock=0x0088; //系统时钟设置为49.152MHz,并使晶振处于强振状态之下
//设置串行口 9600 SystemClock:24.576MHz
*P_UART_BaudScalarLow = 0x00;
*P_UART_BaudScalarHigh = 0x05;
*P_UART_Command1 = 0x80; //使能接收中断,而不打开发送中断
*P_UART_Command2 = 0xc0; //使能接收发送管脚
__asm("FIQ OFF"); //
__asm("IRQ ON");
}
//=============================================================
// 函数名称: 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) //接到到数据非零,则置位表示有数据
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)
// 入口参数: uiNumber 要发送的8位数据个数
// 出口参数: 无
// 注意事项: 仅为用户模型
//=============================================================
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 + -