返回信息流把pic和GSM模块进行通信。用MCU读取GSM模块中的短信内容,但是程序不对啊。字符串发送的时候没问题,字符串接受的时候怎么就有问题呢???
#include<p18f452.h>
#define char unsigned char
#define int unsigned int
#pragma config OSC = HS
#pragma config WDT =OFF
#pragma config LVP =OFF
char at[]="AT\r\n";
char text[]="AT+CMGF=1\r\n";//选择text
char DuQu[]="AT+CMGR=1\r\n";//发送读取短信的AT指令
char code[]="abcdef"; // 定义一个存放密码的数组
char key1[]="13581664267"; // 定义一个存放电话号码的数组
char key2[]; // 号码2
char key3[]; // 号码3
char key4[]; // 号码4
char key5[]; // 号码5
char TiShiFu[]; // 定义一个存放GSM模块返回的提示符的数组
char JieShou[150]; // 定义一个存放所有接受到的字符的数组
//*********************函数声明、定义部分***************
void init() //单片机初始化
{
TRISC=0XFF; // 控制C端口的输入输出
TXSTA=0x24; // 给发送寄存器赋值,使能打开 连续打开
RCSTA=0x90; // 给接收寄存器赋值
SPBRG=25; // 定义波特率大约为9600
INTCONbits.GIE=1; // 开放全局中断
INTCONbits.PEIE=1; // 开放第一外设中断
PIE1bits.RCIE=0; // 开放异步接收中断
}
void delay(int f)
{
int a,b;
for(a=f;a>0;a--)
for(b=110;b>0;b--);
}
void send(char data[],int length)
{
int h;
for(h=0;h<length-1;h++)
{
delay(1);
TXREG=data[h];
while(!TXSTAbits.TRMT);
delay(1);
}
}
void Recieve();
void fycode();
void unlock();
//***************************主函数************************
void main()
{
init(); // 调用初始化函数
send(at,sizeof(at));
delay(10);
send(text,sizeof(at));
delay(10);
send(DuQu,sizeof(DuQu));
Recieve();
}
//*****************************接收读取短信内容*************************************
void Recieve()
{int y=0;
int k=0;
int i=0;
for(k=0;k<150;k++) //将串口收到的字符存入数组
{ if(PIR1bits.RCIF=1)
JieShou[k]=RCREG;
}
for(i=0;i<12;i++) //对来信号码进行比对
{
if(JieShou[y+22]=key1[y])
{
y++;
if(y=sizeof(key1))
{
fycode();
}
else
main(); //号码错误,单片机进入睡眠
}
}
}
//*******************************校验密码的函数***************
void fycode ()
{ int y=0;
for(y=0;y<sizeof(code);)
{
if(JieShou[y+62]=code[y])
{
y++;
if(y=sizeof(code))
{
unlock();
}
else
main(); //号码错误,单片机进入睡眠
}
}
}
//*************************睡眠函数**********************
//******************************控制步进电机开锁的函数*******
void unlock()
{
TRISD=0;
PORTD=0x0f;
}
还有个问题 ,接收字符串的时候是不是非得要用中断呢?我这个没用中断的样子,有点晕。而且我用的MCC18编译器,之前用PICC编译器根本添加不了源文件。。。。。。MCC18的中断函数是该怎么写来着?
这是一条镜像帖。来源:北邮人论坛 / embedded-system / #9321同步于 2010/8/30
Embedded_System机器人发帖
PIC18 串口通信问题
wbzsdc
2010/8/30镜像同步0 回复
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。