3.(2917a)《 短信收发模块 TC35i 的外围电路设计》P38
单片机控制 TC35 模块发送端消息的程序实例如下:
. //串口初始化
# include <c8051f020.h> //c8051f020 单片机寄存器定义
# include <string.h> //基本字符操作函数
# include <stdio.h> //标准输入输出函数
void InitCom()
{
SCON0 = 0x50; //串口 0 方式 1,8 位 UART,允许接收
SCON1 = 0x50; //串口 1 方式 1,8 位 UART,允许接收
TMOD = 0x20; //定时器 1,方式 2,8 位重载
PCON |= 0x90; //SMOD0=1,SMOD1=1
TH1 = 256-(sysclk / bandrate / 16); //根据波特率设定定时器 1 重载,两个串
口都由 T1 控制 Sysclk= 11095200,bandrate=19200
CKCON |= 0x10; //定时器 1 使用 SYSCLK 为时基
TR1=1; //启动定时器 1
TI0=1; //TX0 准备好
SCON1 |= 1<<1; //TX1 准备好
}
//控制手机模块发送短消息(程序片断)
do{
cmd = printf (tmp,"at+cmgs=%d",length);//形成命令数组
for (i=0;i<cmd; i++){ //发送命令字符串
SBUF0=tmp[i];
while (!TI0); //判断字符是否发完
TI0=0; // 清 TI0
} //end for
} //end do
i=0;
//接收返回信息
while (!(SCON1 & (1 << 0))); //等待触发 RI1,即 SCON1.0
ans[i] = SBUF1;
SCON1 &= ~(1 << 0); //清 RI1 标志
i++;
{
//判断 TC35 状态是否正确 (程序略)
}
i=0;
for (i=0; i<smslength; i++) { //发送 pdu 数据
SBUF0 = smsdata[i];
While (!TI0); //判断字符是否发完
TI0=0;
}
{