求哪位大神帮忙将这个会变程序转换成C程序!!!!!!
系统程序采用汇编语言编程,主程序共调用如下五个子程序:
▪
设置短信息格式子程序:用来进行单片机GSM/CDMA
模块的握手过程和设置GSM/CDMA 模块的发送短信息的格式▪查已读短信子程序:一般用于系统重新启动时,设置系统密码
▪查未读短信子程序:系统工作期间,用户通过短信管理系统,主要功能是先检测密码,密码正确后,判断用户的指令,进行 修改密码,撤防,设防,查询状态等功能
▪发送匪警短信息子程序:执行发送匪警短信息功能
▪报警子程序:执行控制报警喇叭,拨号,发送短信息报警
1.系统主程序
ORG 0000H
SJMP START
ORG 0050H
START: NOP
CLEAR: MOV @R0,A ;系统缓冲一小段时间
DJNZ R0,CLEAR
MOV 89H,#20H ;波特率发生器T1工作在模式2上
MOV 98H,#50H ;串行口控制,工作方式1 + 允许接收
MOV 8DH,#253 ;定时器1中高8为放计数初值,或0FDH
MOV 8BH,#253 ;定时器1中低8位用于计数,(可不写)
SETB 0AFH ;中断总允许EA
SETB 0ACH ; 串行口中断允许ES
MOV 88H,#00H ;包括TR1,此处为了加强可靠性88H,TCON
SETB 8EH ;定时器1开始工作
MOV R6,#11H ;设防,11为设防标记
MAIN: NOP
SETB 0A0H
SETB 0A1H
SETB 0A2H
SETB 0A3H ;传感器输入端置1
NOP
CLR 0A4H ; 继电器输出端清零
CLR 97H ;匪警信号总线清零
SETB 90H
WRIT: JB 90H,BB ;判断K1是否按下,如果没有按下就等待
ACALL DELAY10 ;延时10毫秒消触点抖动
JB 90H,WRIT ;去除干扰信号
JNB 90H,$ ;等待按键松开
ACALL FAS1 ;发送匪警短信息
NOP
ACALL DELAY10
ACALL DELAY10
ACALL DELAY10
NOP
NOP
BB: ACALL SZ ;调用设置短信息格式
NOP
NOP
ACALL JS ;查已读短信
NOP
NOP
NOP
ACALL DELAY10
NOP
NOP
ACALL JS1 ;查未读短信
NOP
NOP
NOP
ACALL DELAY10
ACALL DELAY10
ACALL DELAY10
ACALL DELAY10
NOP
NOP
NOP
CJNE R6,#22H,CHAX ;判断是否撤防,22是撤防标记
AJMP MAIN
CHAX:
JNB 0A0H,JJJ
JNB 0A1H,JJJ
JNB 0A2H,JJJ
JNB 0A3H,JJJ ;传感器有报警信号,调用报警程序,采取报警动作
NOP
AJMP MAIN
JJJ: ACALL BAOJ ;调用报警子程序
AJMP MAIN
END
2.报警子程序
BAOJ: SETB 0A4H ;发出报警信号
NOP
ACALL FAS ;发送报警短信
NOP
NOP
ACALL DELAY10
ACALL DELAY10
ACALL DELAY10
NOP
ACALL BOH ;拨号报警
NOP
NOP
NOP
ACALL DELAY10
ACALL DELAY10
NOP
NOP
SJMP $
RET
3.设置短信息格式子程序
MOV A,#41H ;A的ASCII码
MOV 99H,A ;99H是缓冲区,把A的内容送缓冲区
JNB 99H,$ ;判断TI是否为1,不是则等待
CLR 99H
MOV A,#54H ;T的ASCII码
MOV 99H,A
JNB 99H,$ ;判断TI是否为1,不是则等待
CLR 99H
MOV A,#0DH ;回车的ASCII码
MOV 99H,A
JNB 99H,$ ;发送AT,回车结束
NOP
NOP
CLR 0AFH ;禁止总中断
KK1: CLR 98H ;接收中断RI清零
MOV A,99H ;99H是缓冲区,把缓冲区的内容送A
JNB 98H,$ ;判断RI是否为1,不是则等待
CJNE A,#4BH,KK1 ;接收到返回OK为结束
NOP
NOP
BBB: SETB 0AFH ;允许总中断
MOV DPTR,#GSM ;发送AT+CMGF=0
GM10: CLR 99H ;发送中断TI清零
MOV A,#00H
MOVC A,@A+DPTR
MOV 99H,A
JNB 99H,$
CJNE A,#0DH,GM20 ;判断是否是最后一个字节 ,不是则继续
SJMP GM30
GM20: INC DPTR
ACALL DELAY10
SJMP GM10
GM30: NOP
NOP
NOP
NOP
NOP
GSM: DB 41H,54H,2BH,43H,4DH,47H,46H,3DH,30H,0DH ;AT+CMGF=0
CLR 0AFH
KK: CLR 98H ;接收中断RI清零
MOV A,99H ;把缓冲区的内容送A
JNB 98H,$ ;如果RI为0说明发送没有完成,程序等待T
CJNE A,#4BH,KK ;接收到返回OK为结束
NOP
NOP
NOP
NOP
RET
4.拨号报警子程序
BOH: SETB 0AFH ;允许总中断
NOP
CLR 99H ;发送中断TI置零
MOV A,#41H ;41H是A的ASCII码
MOV 99H,A ;把发送字符送缓冲区
JNB 99H,$ ;如果TI为0说明发送没有完成,程序等待
CLR 99H
MOV A,#54H ;54H是T的ASCII码
MOV 99H,A ;把发送字符送缓冲区
JNB 99H,$ ;如果TI为0说明发送没有完成,程序等待
CLR 99H ;发送中断置零
MOV A,#44H ;44H是D的ASCII码
MOV 99H,A ;把发送字符送缓冲区
JNB 99H,$ ;如果TI为0说明发送没有完成,程序等待
MOV R0,#50H ;把电话号码的首地址数送R0
CM: CLR 99H
MOV A,@R0
MOV 99H,A
JNB 99H,$; ;如果TI为0说明发送没有完成,程序等待
INC R0
CJNE R0,#5AH,CM ;判断电话号码是否发送完毕,没有就继续
RET