搜索
bottom↓
回复: 2

请教高手M1280与TC35发短信的问题

[复制链接]

出0入0汤圆

发表于 2010-11-6 21:00:33 | 显示全部楼层 |阅读模式
编译环境是ICC代码如下:
uchar Uart_Buf[MAX_IN];  //接收缓冲区
uchar ReceverFlag=0;     //接收标志
uchar ReceCnt=0;           //接收计数
uchar Break[]="7044F60597D";// 你好
uchar SMS_Center_Pdu[]="3108200005F0"; //短信中心号码
uchar Phone_Num_Pdu[]="5110035372F5";  //目标手机号码
uchar Phone[]="15013035275";


//---------------发送ASCII码---------------
void Usart_Send(uchar dat)  //利用查询方式进行发送
{
  while(!(UCSR0A&0x20));     //等待发送缓冲器为空  
  UDR0=dat;
  while(!(UCSR0A&0x40));     //等待发送结束
  UCSR0A|=0x40;              //清零  
}

//---------------初始化---------------
void Usart_Init()
{
  UCSR0B=0x00;    //清零
  UCSR0A=0x00;
  //tmp=clk/16/baud-1;  
  UBRR0H=BAUD_H;  //设置波特率  宏定义时钟,波特率
  UBRR0L=BAUD_L;  
  UCSR0B=0x98;    //发送器、接收器、接收中断使能
  UCSR0C=0x06;
  Delayms(1000);    //设置帧格式
  SEI();         //全局中断开放 BIT(7);
   
}

//接收中断
#pragma interrupt_handler uart0_rx_isr:iv_USART0_RXC
void uart0_rx_isr(void)
{
Uart_Buf[ReceCnt]=UDR0;
ReceCnt++;
}

#pragma interrupt_handler uart0_tx_isr:iv_USART0_TXC
void uart0_tx_isr(void)
{
//character has been transmitted
}

//是否返回OK
uint check_return(uchar *r)
{      
    if(strcmp(Uart_Buf,r)==0)
           return 1;  
   else
           return 0;
}

/*----------------------------------------------------------------
函数功能: 发送命令到TC35I
----------------------------------------------------------------*/
void GSM_Send_AT(uchar *str)
{
  uchar len;
  len=strlen(str);
  while(len--)
  {
    Usart_Send(*str);
    str++;
  }
}

/*----------------------------------------------------------------
函数功能: 设置波特率
----------------------------------------------------------------*/
void GSM_Baund()
{
  GSM_Send_AT("AT+IPR=9600\r\n");
  Delayms(100);
while(check_return("OK"))
  {
    Delayms(100);
    GSM_Send_AT("AT+IPR=9600\r\n");
  }
  ReceCnt=0;
}

/*----------------------------------------------------------------
函数功能: GSM设置
----------------------------------------------------------------*/
void GSM_Set()
{
  GSM_Send_AT("AT\r\n");
  Delayms(100);     //发送指令到手机
  while(check_return("OK"))
  {
    Delayms(1000);
    GSM_Send_AT("AT\r\n");
  }
  flag|=0x01;                //GSM握手标志位
  ReceCnt=0;                 //Uart_Buf 清零
}

/*----------------------------------------------------------------
函数功能: 初始化GSM
----------------------------------------------------------------*/
void GSM_Init()
{
  GSM_Set();
  Delayms(10);
  GSM_Baund();
  Delayms(10);
}

/*-----------------------------------------------------------------
函数功能:  发送短信               
-----------------------------------------------------------------*/
void GSM_Send_SMS(uchar *p)      //短信的具体内容
{
  uchar temp=0;
  GSM_Send_AT("AT+CMGF=0\r\n");  //设置短信格式为用PDU格式
  Delayms(100);
  while(check_return("OK"))  
  {
    Delayms(500);
    GSM_Send_AT("AT+CMGF=0\r\n");
  }
  ReceCnt=0;
  Delayms(200);
  GSM_Send_AT("AT+CMGS=18\r\n");  //发送短消息的字节数
  Delayms(100);
  while(check_return(">"))
  {
    Delayms(500);
    GSM_Send_AT("AT+CMGS=18\r\n");
  }
  ReceCnt=0;
  Delayms(100);
  CLI();                          //全局中断关闭
  GSM_Send_AT("089168");       //固定,国际
  GSM_Send_AT(SMS_Center_Pdu); //短信中心
  GSM_Send_AT("11000B81");     //固定搭配
  GSM_Send_AT(Phone_Num_Pdu);  //对方号码
  GSM_Send_AT("0008A");        //固定
  GSM_Send_AT(p);              //短信的具体内容
  Usart_Send(0x1A);
  UCSR0B=UCSR0B|0x80;            //接收中断使能开放           
  SEI();                       //开全局中断
}
我用bootloader下到M1280里,TC35没有发出短信,请问是不是程序上的错误?我用串口调试工具发送AT指令可以发短信。
AT+CMGF=0 回车
AT+CMGS=18 回车
0891683108200005F011000B815110035372F50008A7044F60597D
1A(16进制发送)

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2010-11-7 19:35:53 | 显示全部楼层
没人回答?大家支持下新手吧。

出0入0汤圆

 楼主| 发表于 2010-11-10 09:27:36 | 显示全部楼层
要解决,只要关闭OK检测就好了。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 02:17

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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