📄 gprs_cpu_port.c
字号:
/****************************************Copyright (c)**************************************************
** Guangzou ZLG-MCU Development Co.,LTD.
** graduate school
** http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name: GPRS_CPU_PORT.c
** Last modified Date: 2005-06-17
** Last Version: 1.0
** Descriptions: cpu port function of GPRS
**
**------------------------------------------------------------------------------------------------------
** Created by: Yehaoben
** Created date: 2005-06-17
** Version: 1.0
** Descriptions: The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
********************************************************************************************************/
#include "config.H"
/*********************************************************************************************************
** Function name: IRQ_UART
**
** Descriptions: UART interrupt server function
**
** input parameters: None
** Returned value: None
**
** Used global variables: None
** Calling modules: None
**
** Created by: Yehaoben
** Created Date: 2005/06/02
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
extern void ZLG_GPRS_RVC_HANDLE(uint8 i);
extern void ZLG_GPRS_RVC_HANDLE(uint8 i);
void IRQ_UART0(void)
{
uint16 temp16;
temp16 = rUFSTAT0;
if(temp16 & (1<<9))//Tx FIFO FULL
{
//ERR
}
else if((temp16 & 0x00f0) == 0 )//Tx FIFO == 0
{
//SEND DATA
}
if(temp16 & (1<<8))//Rx FIFO FULL
{
//REVICE DATA
}
else if(temp16 & 0x000f)//Rx FIFO > 0
{
//REVICE DATA
do
{
ZLG_GPRS_RVC_HANDLE(rURXH0);
} while(rUFSTAT0 & 0x000f);
}
temp16 = rUERSTAT0;//READ ERR STATUS
rSRCPND = 1<<28;
rSUBSRCPND = 0x05;
rINTPND = rINTPND;
}
/*********************************************************************************************************
** Function name: UART_Ini
**
** Descriptions: Initial uart
**
** input parameters: baud bandrate
** Returned value: None
**
** Used global variables: None
** Calling modules: None
**
** Created by: Yehaoben
** Created Date: 2005/06/02
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
uint8 UART_Ini(uint32 baud)
{
uint8 i;
VICVectAddr[28] = (uint32) IRQ_UART0;
// 设置中断控制器
rPRIORITY = 0x00000000; // 使用默认的固定的优先级
rINTMOD = 0x00000000; // 所有中断均为IRQ中断
rINTMSK = rINTMSK & (~(1<<28)); // 打开TIMER0中断允许
rINTSUBMSK = rINTSUBMSK & 0X7FA;// ENABLE ERR0,TXD0,RXD0
// IO口设置 (GPH3,GPH2)
rGPHUP = rGPHUP | (0x0F);
rGPHCON = (rGPHCON & (~0x000000FF)) | (0x000000AA);
// 串口模式设置
rUFCON0 = 0x97; // 8tx,8rx,reset fifo ,enable fifo
rUMCON0 = 0x01; // AFC(流控制)禁能
rULCON0 = 0x03; // 禁止IRDA,无奇偶校验,1位停止位,8位数据位
rUCON0 = 0x3c5; // 使用PCLK来生成波特率,发送中断为电平触发模式,接收中断为边沿触发模式,
// 禁止接收超时中断,使能接收错误中断,正常工作模式,中断或查询方式(非DMA)
// 串口波特率设置
rUBRDIV0=(int)(PCLK/16.0/baud + 0.5) -1;
for(i=0;i<100;i++);
return 1;
}
/*********************************************************************************************************
** Function name: ZLG_GPRS_Send_String
**
** Descriptions: Send string
**
** input parameters: char *:string pointer
** Returned value: None
**
** Used global variables: None
** Calling modules: None
**
** Created by: Yehaoben
** Created Date: 2005/06/02
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void ZLG_GPRS_Send_String(char * strptr)
{
uint8 i,j,k,l;
k = strlen(strptr);
l = 0;
do
{
j = (k > 8) ? 8 : k;
for(i=0; i<j; i++)
rUTXH0 = strptr[i + (l * 8)];
l++;
k = k - j;
while( (rUTRSTAT0 & 0X02) == 0 );
}while(k > 0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -