GPRS程序修改.docx
- 文档编号:3536680
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:23
- 大小:20.02KB
GPRS程序修改.docx
《GPRS程序修改.docx》由会员分享,可在线阅读,更多相关《GPRS程序修改.docx(23页珍藏版)》请在冰豆网上搜索。
GPRS程序修改
/****************************************************************************
*文件名:
UART.C的头文件
*功能:
作为UART.C的头文件,在程序调用的时候方便
*说明:
无
****************************************************************************/
#defineIN_UART
#include"config.h"//系统配置文件
/****************************************************************************
*名称:
UartMode
*功能:
UART0/UART1串口工作模式说明
*入口参数:
无
*出口参数:
无
****************************************************************************/
typedefstructUartMode
{uint8datab;//字长度,5/6/7/8
uint8stopb;//停止位,1/2
uint8parity;//奇偶校验位,0为无校验,1奇数校验,2为偶数校验
}UARTMODE;
/****************************************************************************
*名称:
UART_Ini()
*功能:
初始化UART0/UART1口
*入口参数:
baud/UARTMODE
*出口参数:
无
****************************************************************************/
externuint8UART_Ini(uint32baud,UARTMODEset);
volatileuint8rcv_new;//接收新数据标志
/****************************************************************************
*名称:
UART_SendStr()
*功能:
UART0/UART1口发送程序
*入口参数:
WhichUart/*str/strlen
*出口参数:
无
****************************************************************************/
externvoidUART_SendStr(uint8WhichUart,uint8*str,uint16strlen);
/****************************************************************************
*名称:
IRQ_UART0/IRQ_UART1
*功能:
UART0和UART1的接收中断函数
*入口参数:
无
*出口参数:
无
****************************************************************************/
#definercvbufsize020
#definercvbufsize120
externuint8rcv_buf0[rcvbufsize0];//*接收时可超越缓冲rcv_buf0数组界限,该缓冲能保存前n次未读取的数据。
externuint8rcv_buf1[rcvbufsize1];//*接受时可超越缓冲rcv_buf1数组界限,该缓冲能保存前n次未读取的数据。
externuint16rcv_byte_num0;
externuint16rcv_byte_num1;
externvoid__irqIRQ_UART0(void);
externvoid__irqIRQ_UART1(void);
/****************************************************************************
*名称:
DelayNS()
*功能:
长软件延时
*入口参数:
dly延时参数,值越大,延时越久
*出口参数:
无
****************************************************************************/
externvoidDelayNS(uint32dly);
/****************************************************************************
*名称:
HC595_SendDat()
*功能:
向74HC595发送一字节数据
*入口参数:
dat要发送的数据
*出口参数:
无
*说明:
发送数据时,高位先发送。
****************************************************************************/
externvoidHC595_SendDat(uint8dat);
/*此表为0--F的字模*/
constuint8DISP_TAB[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,
0x88,0x83,0xC6,0xA1,0x86,0x8E};
/****************************************************************************
*名称:
Led_Show()
*功能:
LED1--LED4显示相应的入口值(0--F)
*入口参数:
i要显示的数据
*出口参数:
无
****************************************************************************/
externvoidLed_Show(uint8i);
//LED流水灯1--2--4--8--4--2--1
externvoidLED_CONNECTING(void);
/****************************************************************************
*名称:
Gprs_Connection()
*功能:
启动GPRS服务
*入口参数:
无
*出口参数:
无
****************************************************************************/
externuint8Gprs_Connection(void);
/****************************************************************************
*名称:
Gprs_Apn()
*功能:
设置移动APN接口并激活PDP移动场景
*入口参数:
无
*出口参数:
无
****************************************************************************/
externuint8Gprs_Apn(void);
/****************************************************************************
*名称:
GprsServer_Start()
*功能:
与服务器连接、启动
*入口参数:
无
*出口参数:
无
****************************************************************************/
externuint8GprsServer_Start(void);
/****************************************************************************
*名称:
Gprs_Recever()
*功能:
GPRS模块接收SERVER发送来的数据
*入口参数:
无
*出口参数:
无
****************************************************************************/
externuint8Gprs_Recever(void);
/****************************************************************************
*名称:
Gprs_Send()
*功能:
GPRS模块发送来自PC的数据
*入口参数:
无
*出口参数:
无
****************************************************************************/
externuint8Gprs_Send(void);
#endif
/****************************************************************************
*文件名:
UART.C
*功能:
是一些常用函数的集合
*说明:
将跳线器JP4全部短接。
****************************************************************************/
#defineIN_UART
#include"config.h"
#defineSPI_CS(1<<29)/*P0.29*/
#defineSPI_DATA(1<<6)/*P0.6*/
#defineSPI_CLK(1<<4)/*P0.4*/
#defineSPI_IOCON(SPI_CS|SPI_DATA|SPI_CLK)/*SPI接口的I/O设置字*/
#defineLED_IOCON(0x0F<<22)/*LED1-4的I/O设置字*/
/****************************************************************************
*名称:
UartMode
*功能:
UART0/UART1串口工作模式说明
*入口参数:
无
*出口参数:
无
****************************************************************************/
typedefstructUartMode
{uint8datab;//字长度,5/6/7/8
uint8stopb;//停止位,1/2
uint8parity;//奇偶校验位,0为无校验,1奇数校验,2为偶数校验
}UARTMODE;
/****************************************************************************
*名称:
UART_Ini()
*功能:
初始化UART0/UART1口
*入口参数:
baud/UARTMODE
*出口参数:
无
****************************************************************************/
uint8UART_Ini(uint32baud,UARTMODEset)
{
uint32bak;
PINSEL0=0x00050005;//设置I/O连接到UART0/UART1
/*参数过滤*/
if((0==baud)||(baud>115200))return(0);
if((set.datab<5)||(set.datab>8))return(0);
if((0==set.stopb)||(set.stopb>2))return(0);
if(set.parity>4)return(0);
/*设置串口波特率*/
U0LCR=0x80;//DLAB位置1
U1LCR=0x80;
bak=(Fpclk>>4)/baud;
U0DLM=bak>>8;
U1DLM=bak>>8;
U0DLL=bak&0xff;
U1DLL=bak&0xff;
/*设置串口模式*/
bak=set.datab-5;//设置字长度
if(2==set.stopb)bak|=0x04;//判断是否为2位停止位
if(0!
=set.parity){set.parity=set.parity-1;bak|=0x08;}
bak|=set.parity<<4;//设置奇偶校验
U0LCR=bak;
U1LCR=bak;
return
(1);
}
/****************************************************************************
*名称:
UART_SendStr()
*功能:
UART0/UART1口发送程序
*入口参数:
WhichUart/*str/strlen
*出口参数:
无
****************************************************************************/
voidUART_SendStr(uint8WhichUart,uint8*str,uint16strlen)
{
if(WhichUart==0)
{
for(;strlen>0;strlen--)
{
U0THR=*str++;//发送数据
while((U0LSR&0x40)==0);//等待数据发送完毕
}
}
else
{
for(;strlen>0;strlen--)
{
U1THR=*str++;//发送数据
while((U1LSR&0x40)==0);//等待数据发送完毕
}
}
}
/****************************************************************************
*名称:
IRQ_UART0/IRQ_UART1
*功能:
UART0和UART1的接收中断函数
*入口参数:
无
*出口参数:
无
****************************************************************************/
#definercvbufsize020
#definercvbufsize120
uint8rcv_buf0[rcvbufsize0];//接收时可超越缓冲rcv_buf0数组界限,该缓冲能保存前n次未读取的数据。
uint8rcv_buf1[rcvbufsize1];//接受时可超越缓冲rcv_buf1数组界限,该缓冲能保存前n次未读取的数据。
uint16rcv_byte_num0;
uint16rcv_byte_num1;
/****************IRQ_UART0****************/
void__irqIRQ_UART0(void)
{
uint8i;
uint8int_type;
int_type=U0IIR&0x0F;
if(int_type==0x04)
{
for(i=0;i<8;i++)
{rcv_buf0[rcv_byte_num0]=U0RBR;
rcv_byte_num0++;
}
}
elseif(int_type==0x0C)
{rcv_buf0[rcv_byte_num0]=U0RBR;
rcv_byte_num0++;
}
VICVectAddr=0x00;//中断处理结束
}
/****************IRQ_UART1****************/
void__irqIRQ_UART1(void)
{
uint8i;
uint8int_type;
int_type=U1IIR&0x0F;
if(int_type==0x04)
{
for(i=0;i<8;i++)
{rcv_buf1[rcv_byte_num1]=U1RBR;
rcv_byte_num1++;
}
}
elseif(int_type==0x0C)
{rcv_buf1[rcv_byte_num1]=U1RBR;
rcv_byte_num1++;
}
VICVectAddr=0x00;//中断处理结束
}
/****************************************************************************
*名称:
DelayNS()
*功能:
长软件延时
*入口参数:
dly延时参数,值越大,延时越久
*出口参数:
无
****************************************************************************/
voidDelayNS(uint32dly)
{
uint32i;
for(;dly>0;dly--)
for(i=0;i<50000;i++);
}
/****************************************************************************
*名称:
HC595_SendDat()
*功能:
向74HC595发送一字节数据
*入口参数:
dat要发送的数据
*出口参数:
无
*说明:
发送数据时,高位先发送。
****************************************************************************/
voidHC595_SendDat(uint8dat)
{
uint8i;
IO0CLR=SPI_CS;//SPI_CS=0
for(i=0;i<8;i++)//发送8位数据
{IO0CLR=SPI_CLK;//SPI_CLK=0
/*设置SPI的DATA输出值*/
if((dat&0x80)!
=0)IO0SET=SPI_DATA;
elseIO0CLR=SPI_DATA;
dat<<=1;
IO0SET=SPI_CLK;//SPI_CLK=1
}
IO0SET=SPI_CS;//SPI_CS=1,输出显示数据
}
/****************************************************************************
*名称:
Led_Show()
*功能:
LED1--LED4显示相应的入口值(0--F)
*入口参数:
i要显示的数据
*出口参数:
无
****************************************************************************/
voidLed_Show(uint8i)
{
IO0SET=0x0F<<22;
IO0CLR=i<<22;//设置LED显示输出
}
voidLED_CONNECTING(void)//LED流水灯1--2--4--8--4--2--1
{
Led_Show
(1);
DelayNS(15);
Led_Show
(2);
DelayNS(15);
Led_Show(4);
DelayNS(15);
Led_Show(8);
DelayNS(15);
Led_Show(4);
DelayNS(15);
Led_Show
(2);
DelayNS(15);
}
voidLED_SEND(void)//LED流水灯1--2--4--8
{
Led_Show
(1);
DelayNS(15);
Led_Show
(2);
DelayNS(15);
Led_Show(4);
DelayNS(15);
Led_Show(8);
DelayNS(15);
}
voidLED_RECEVER(void)//LED流水灯8--4--2--1
{
Led_Show(8);
DelayNS(15);
Led_Show(4);
DelayNS(15);
Led_Show
(2);
DelayNS(15);
Led_Show
(1);
DelayNS(15);
}
/****************************************************************************
*名称:
Gprs_Connection()
*功能:
启动GPRS服务
*入口参数:
无
*出口参数:
无
****************************************************************************/
uint8Gprs_Connection(void)
{
uint8i,j,n;
uint8ret=0;
uint8RcvData[20];
uint8CGATT[12]={65,84,43,67,71,65,84,84,61,49,13,10};
for(n=0;n<5;n++)
{
LED_CONNECTING();
}
for(i=0;i<20;i++)
{
UART_SendStr(1,CGATT,12);
HC595_SendDat(0xF9);
LED_CONNECTING();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- GPRS 程序 修改