//包含所需头文件
#include <ioM16v.h>
#include <macros.h>
/*------宏定义------*/
#include "12864.h"
#define Rcv_cap 100 //缓冲内容不能超过200个,搜索时不会先前搜
const uchar L[4] = {0x80,0x90,0x88,0x98};
uchar Rcv[Rcv_cap+1] = "ab"; //若缓冲足够变大,要改动程序
//const uchar AT[] = "AT\r";
//const uchar Settxt[] = "AT+CMGF=1\r";
uchar Sendtxt[] = "AT+CMGS=\"15986929180\"\r";
uchar Content[] = "How are you?\x1a";
uchar Phone[20] = ""; //11+4+4+1
uchar CPBW[35] = "AT+CPBW=1,\"";
uchar i_Rcv = 0;
uchar flagend = 0;
/*uchar key;
uchar pbefore = 0;
uchar pnext;*/
uchar Stc1[] = "GSM 发信息中....";
/*uchar Stc2[] = "电话簿:";
uchar Stc3[] = "1.发送短信";
uchar Stc4[] = "2.打电话";*/
//端口初始化
void port_init(void)
{
PORTA = 0x0f;
DDRA = 0x0f;
PORTB = 0x00;
DDRB = 0x00;
PORTC = 0x00;
DDRC = 0x00;
PORTD = 0x00;
DDRD = 0x00;
}
/*
//串口通信初始化
void usart_init(void)//9600
{
UCSRB = 0x00;//禁止中断
UCSRA = 0x00;
UCSRC = BIT(URSEL) | 0x06;
UBRRL = 0x33;
UBRRH = 0x00;
UCSRB = 0x98;
}*/
//串口通信初始化
void usart_init(void) //115200
{
UCSRB = 0x00;//禁止中断
UCSRA = 0x00;
UCSRC = BIT(URSEL) | 0x06;
UBRRL = 0x03;
UBRRH = 0x00;
UCSRB = 0x98;
}
void init_devices(void)
{
CLI(); //禁止所有中断
//cpu_init();
//delay_nms(200);
//lcm_init();
port_init();
lcd12864_init();
usart_init();
SEI();//开全局中断
}
//串行接收结束中断服务程序
#pragma interrupt_handler usart_rx_isr:12
void usart_rx_isr(void)
{
uchar temp;
temp = UDR;
if(i_Rcv>(Rcv_cap-1))
{
i_Rcv=0;
}
if((temp!=0x0d)&&(temp!=0x0a)) //
{
flagend = i_Rcv;
Rcv[i_Rcv] = temp;
i_Rcv++;
}
//flagend = i_Rcv;
}
//判断发送是否成功
uchar ISok(uchar *msure)
{
if((flagend-1)>flagend)
{
if((Rcv[flagend]==msure[1])&&(Rcv[Rcv_cap-1]==msure[0])) //大写
return 1;
else
return 0;
}
else if((Rcv[flagend]==msure[1])&&(Rcv[flagend-1]==msure[0]))
return 1;
else
return 0;
}
//发送
void USART_Transmit( unsigned char *T)
{
uchar i = 0;
while(T[i]) //length--,循环length次
{
while ( !( UCSRA & (1<<UDRE)) )
;
UDR = T[i];
i++;
}
}
void sendcmd(uchar *command,uchar *msure,uint t) //可以改进,用do while()
{static i=0;//用于观察发送AT指今的情况
while(!ISok(msure))
{
i++;
display_Num(1,0,i,3);
USART_Transmit(command);
delay_nms(t);
}
i=0;
//display(1,Rcv,0);
}
void clearf(void) //为下一次写指令做准备
{
uchar i;
i = flagend - 1;
if(i<flagend)
{
flagend = i;
}
else
flagend = Rcv_cap-1;
}
void read(uchar *porm ,uchar *num) //CMGR,CPBR,num有7个字符
{
uchar C[] = "AT+C = \r"; //等号后7个空
uchar i;
i_Rcv = 0;
C[4] = porm[0];
C[5] = porm[1];
C[6] = porm[2];
for(i=0;i<7;i++)
{
C[8+i] = num[i];
}
sendcmd(C,"OK",3000);
clearf();
}
//发信息
void sendsms(void)
{
uchar C[] = "AT+CMGS=\" \"\r"; //等号后7个空
uchar i;
i_Rcv = 0;
for(i=0;i<11;i++)
{
C[9+i] = Phone[i];
}
sendcmd(C,"\x3e\x20",500);
clearf();
sendcmd(Content,"OK",5000);
clearf();
}
/*
void call(void)
{
uchar C[] = "ATD \x3b\r"; //等号后7个空
uchar i;
i_Rcv = 0;
for(i=0;i<11;i++)
{
C[3+i] = Phone[i];
}
sendcmd(C,"OK",2000);
clearf();
}
void find1(uchar pos) //AT+CPBR=1,2+CPBR: 1,"6651177",129,"HOME"+CPBR: 2,"13760029591",129,"LI"
{
uchar i = 0;
//pos +=4;
while(Rcv[pos++]!=0x22);
while(Rcv[pos]!=0x22)
{
Phone[i++] = Rcv[pos];
pos++;
}
}
void rtelbook(void)
{
uchar num[] = "0000001";
clearline(1);
display_String(0,0,Stc2);
while(key!=15)
{
if((key==13)&&(num[6]>'1'))
{
num[6]--;
}
else if((key==14)&&(num[6]<'9'))
{
num[6]++;
}
if(key!=30)
{
read("PBR",num);
find1(0);
display(1,0,Phone,0);
}
key = key_scan();
if(key==10)
{
clearline(0);
clearline(1);
display_String(0,0,Stc3);
display_String(1,0,Stc4);
while(key!=15)
{
key = key_scan();
if(key==1)
{
sendsms();
}
else if(key==2)
{
call();
}
}
}
}
clearline(0);
clearline(1);
}
*/
void clearline(uchar i)
{
;
}
//主函数
void main(void)
{init_devices();
/*uint i=5,j=65530;
display_Num(0,0,1-2,5);*/
sendcmd("ATE0\r","OK",500);
clearf();
sendcmd("AT+CMGF=1\r","OK",500);
clearf();
display_String(0,0,Stc1);
while(1)
{sendsms();
delay_nms(10000);
//key = key_scan();
/* if(key==10)
{
rtelbook();
}*/
}
}
gsb.rar_发信息
版权申诉
78 浏览量
2022-09-23
08:29:54
上传
评论
收藏 60KB RAR 举报
JonSco
- 粉丝: 72
- 资源: 1万+
最新资源
- index.jsp
- Screenshot_20240521_090410_com.huawei.android.launcher.jpg
- 单文件制作工具 7.0.2.3851-x86-x64
- Linux命令.xmind
- 基于Transformer实现的跨域Cross-view实时Map-view语义分割算法-附项目源码-优质项目实战.zip
- linux常用命令大全-.zip
- 2024彩虹聚合DNS管理系统源码 管理系统快速开发平台 聚合平台管理.zip
- elasticsearch介绍-.zip
- nodejs安装及环境配置-.zip
- 谷歌浏览器自动化测试版113.0.5672.0(包含linux,windows32/64,mac三个版本,不会自动更新)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈