硬件 stc90c54rd+ sim300w sim卡 天线 lm2576 电容 电阻 电感若干
1 供电 stc90c54rd+ 5V sim300W 4.2V 峰值电流2A ;考虑用2576-5V 后接二极管 利用二极管压降给sim300供电 2 外围控制 ;单片机通电后p0.0输出一个2秒脉冲,sim300 pwkey脚拉低2秒使sim300开机 ;单片机检测p1.2脚是否为低电平如果是,从单片机txd脚输出一系列串行数据(AT指令)控制sim300向指定手机号码发送一条短信 3 串口发送AT指令(犹豫水平有限没有写单片机接收串行数据的部分) ; 1 单片机发送 “AT” "回车" 41H 54H 0DH 0AH 使sim300进入命令模式 2 单片机发送 "AT+IPR=2400""回车" 41H 54H 2BH 49H 50H 52H 3DH 32H 34 30H 30H 0DH 0AH 使sim300的波特率设定为2400 3 单片机发送 "AT+CMGF=0""回车" ASCII码不再罗嗦 告诉sim300发送短信模式为中文 4 单片机发送 "AT+CMGS=25""回车" 告诉sim300发送内容的长度 5 单片机发送" 0011000D91685198100802F70008A70A57FA7AD96709544A8B66""1AH" 给***发送“基站有告警”的短信
因为刚学对汇编熟悉一些所以用的是汇编
源代码
ORG 0000H
LJMP MAIN;上电,转向主程序
ORG 0023H
ORG 0030H;主程序
MAIN:
MOV TMOD,#20H;设T1工作方式2 定时器1作为波特率发生器
MOV TH1,#0F7H;赋记数初值 4M晶振波特率2400
MOV TL1,#0F7H;赋记数值
MOV PCON,#80H;设SMOD=1
MOV SCON,#0C0H;置串行口方式3,BU允许接收
AJMP WHETHER
WHETHER:SETB P1.2
JB P1.2,$
SETB TR1;启动定时器T1ACALL SENDAT
ACALL SENDAT
ACALL SENDIPR
ACALL SENDCMGFACALL SENDCMGS
ACALL SENDSMS
SENDAT: ;发送”AT“子程序
MOV A,#41H
MOV SBUF,A
JNB ti,$
CLR TI ;发送A
MOV A,#54H
MOV SBUF,A
JNB TI,$;
CLR TI ;发送T
MOV A,#0DH
MOV SBUF,A
JNB TI,$;
CLR TI
MOV A,#0AH
MOV SBUF,A
JNB TI,$;
CLR TI ;发送回车
NOP
NOP
ACALL DL2S
RET
SENDIPR:
MOV A,#41H
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,#54H
MOV SBUF,A
JNB TI,$;
CLR TI
MOV A,#2BH
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,#49H
MOV SBUF,A
JNB TI,$;
CLR TI
MOV A,#50H
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,#52H
MOV SBUF,A
JNB TI,$;
CLR TI
MOV A,#3DH
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,#32H
MOV SBUF,A
JNB TI,$;
CLR TI
MOV A,#34H
MOV SBUF,A
JNB TI,$;
CLR TI
MOV A,#30H
MOV SBUF,A
JNB TI,$;
CLR TI
MOV A,#30H
MOV SBUF,A
JNB TI,$;
CLR TI
MOV A,#0DH
MOV SBUF,A
JNB TI,$;
CLR TI
MOV A,#0AH
MOV SBUF,A
JNB TI,$;
CLR TI
ACALL DL2S
RET
SENDCMGF: ;发送AT+CMGF=0 中文模式
MOV A,#41H
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,#54H
MOV SBUF,A
JNB TI,$;
CLR TI
MOV A,#2BH
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,#43H
MOV SBUF,A
JNB TI,$;
CLR TI
MOV A,#4DH
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,#47H
MOV SBUF,A
JNB TI,$;
CLR TI
MOV A,#46H
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,#3DH
MOV SBUF,A
JNB TI,$;
CLR TI
MOV A,#30H
MOV SBUF,A
JNB TI,$;
CLR TI
MOV A,#0DH
MOV SBUF,A
JNB TI,$;
CLR TI
MOV A,#0AH
MOV SBUF,A
JNB TI,$;
CLR TI
ACALL DL2S
RET
SENDCMGS: ;发送AT+CMGS=25
MOV A,#41H
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,#54H
MOV SBUF,A
JNB TI,$;
CLR TI
MOV A,#2BH
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,#43H
MOV SBUF,A
JNB TI,$;
CLR TI
MOV A,#4DH
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,#47H
MOV SBUF,A
JNB TI,$;
CLR TI
MOV A,#53H
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,#3DH
MOV SBUF,A
JNB TI,$;
CLR TI
MOV A,#32H
MOV SBUF,A
JNB TI,$;
CLR TI
MOV A,#35H
MOV SBUF,A
JNB TI,$;
CLR TI
MOV A,#0DH
MOV SBUF,A
JNB TI,$;
CLR TI
MOV A,#0AH
MOV SBUF,A
JNB TI,$;
CLR TI
ACALL DL2S
RET
SENDSMS:
MOV DPTR,#SMS
LOOP_SEND:
CLR A
MOVC A,@A+DPTR
CJNE A,#'$',SEND_AAJMP WHETHER
SEND_A:
MOV SBUF,A;发送数据
JNB TI,$;
CLR TI
INC DPTR;指向后一个数据.LJMP LOOP_SEND;
RET
DL2S: ;延时2秒子程序
MOV R3,#50
LOOP: MOV R2,#25
LOOP1: MOV R1,#255
LOOP2:NOP
DJNZ R1,LOOP2
DJNZ R2,LOOP1
DJNZ R3,LOOP
RET
SMS : DB "0011000D91683195429389F80008A70A57FA7AD96709544A8B66",1AH,'$'
END
11
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|
|
|
|