找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

AVR单片机向GPRS模块发送AT指令

[复制链接]
wangzhede 发表于 2012-4-13 22:40:14 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×

#include </io.h>
#include </iom128.h>
#include<stdlib.h>
#include<string.h>

#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long

#define clc 7372800
#define baud 9600
#define baud_setting   (uint)((ulong)clc/(16*(ulong)baud)-1)  //波特率计算公式
#define baud_h         (uchar)(baud_setting>>8)                 //提取高位
#define baud_l         (uchar)(baud_setting)                    //低位

void usart_init(void)
{
UCSR0A=0x00;                                 //单倍速模式
UCSR0B=0xF8;                                 //接收中断和发送中断允许                              
UCSR0C=(1<<UCSZ01)|(1<<UCSZ00);              //写UCSRC寄存器,异步通信无校验,8位数据1位停止位
UBRR0H=baud_h;                               //写波特率的值
UBRR0L=baud_l;
}

uchar get_char(void) //串口0接收字符
{
while(!(UCSR0A&(1<< RXC0)));
return UDR0;
}

void put_char(char c) //串口0发送字符
{
while(!(UCSR0A&(1<< UDRE0)));
UDR0=c;
}


void put_s(char *s)
{
while (*s)
{
  put_char(*s);
  s++;
}
//put_char(0x0a);//回车换行
put_char(0x0d);
}


char * AVR_usart_receives(uchar length)   
//接收长度为length的字符串并返回接收到的字符串

{
uchar i;     
char *string_temp;
    string_temp = (uchar *)malloc(length * sizeof(char));    //分配空间,并未初始化空间
         
    for(i = 0; i < length; i++)
     {
   string_temp[i] = get_char();
   if(i == length-1)
    string_temp[length] = "\0";  
   
  }
         
         return string_temp;   //用于返回接收到的字符串的指针
}

void IO_init()
{
    PORTE = 0xFF;                  //数据口为输出
    DDRE = 0xFF;
}

void main()
{
uchar data_recive;
char *r_string;
char *te = "OK";
uchar q;
IO_init();
usart_init();
while(strstr(r_string,te)==NULL)
{
  put_s("at");
  r_string = avr_usart_receives(2);
   if(strstr(r_string,te)!=NULL)
  {
   PORTE = 0x00;                  //若串口是接在单片机上,则PE口全部拉低
   put_s(r_string);                  //若串口是接在上位机,则在上位机(串口调试助手)上,显示出接收到的字符串
  }
}
  

}



*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-11-23 11:25 , Processed in 0.057342 second(s), 12 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表