📄 main.s
字号:
clr R16
rjmp L32
L29:
.dbline 118
.dbline 119
ldi R24,<_RxBuf
ldi R25,>_RxBuf
mov R30,R16
clr R31
add R30,R24
adc R31,R25
clr R2
std z+0,R2
.dbline 120
L30:
.dbline 117
inc R16
L32:
.dbline 117
cpi R16,128
brlo L29
.dbline -2
L28:
.dbline 0 ; func end
ret
.dbsym r i 16 c
.dbend
.dbfunc e TxEnable _TxEnable fV
.even
_TxEnable::
.dbline -1
.dbline 126
; {
; RxBuf[i] = 0;
; }
; }
; /*-----------------------------------------------------------------------*/
; /////////////////////////// 串口发送使能 ////////////////////////////////
; /*-----------------------------------------------------------------------*/
; void TxEnable(void)
; {
.dbline 128
; //RxIndex = 0;
; UDR = TxBuf[0]; // 发送缓冲头送入串口发送寄存器,激活开始发送
lds R2,_TxBuf
out 0xc,R2
.dbline 129
; UCSRB |= ((1<<TXCIE));//|(1<<TXEN));
sbi 0xa,6
.dbline -2
L33:
.dbline 0 ; func end
ret
.dbend
.dbfunc e Put_AT_command _Put_AT_command fV
; count -> R20
; atlen -> R22
; atc -> R10,R11
.even
_Put_AT_command::
rcall push_gset3
mov R22,R18
movw R10,R16
.dbline -1
.dbline 135
; }
; /*-----------------------------------------------------------------------*/
; ///////////////////////////// 发送AT命令 /////////////////////////////////
; /*-----------------------------------------------------------------------*/
; void Put_AT_command(const unsigned char *atc, unsigned char atlen)
; {
.dbline 138
; unsigned char count;
;
; for(count = 0;count < atlen;count++) // AT命令窜移入发送缓冲
clr R20
rjmp L38
L35:
.dbline 139
.dbline 140
mov R30,R20
clr R31
add R30,R10
adc R31,R11
lpm R30,Z
ldi R24,<_TxBuf
ldi R25,>_TxBuf
mov R26,R20
clr R27
add R26,R24
adc R27,R25
st x,R30
.dbline 141
L36:
.dbline 138
inc R20
L38:
.dbline 138
cp R20,R22
brlo L35
.dbline 143
; {
; TxBuf[count] = atc[count];
; }
;
; TxBuf[atlen] = 0x0D; // 发送缓冲窜结尾加“回车”
ldi R24,<_TxBuf
ldi R25,>_TxBuf
mov R30,R22
clr R31
add R30,R24
adc R31,R25
ldi R24,13
std z+0,R24
.dbline 144
; TxBuf[atlen + 1] = 0x00; // 发送缓冲窜结束符号
ldi R24,<_TxBuf+1
ldi R25,>_TxBuf+1
mov R30,R22
clr R31
add R30,R24
adc R31,R25
clr R2
std z+0,R2
.dbline 146
;
; OkFlag = 0;
sts _OkFlag,R2
.dbline 147
; TxStatus = 0;
sts _TxStatus,R2
.dbline 148
; TxIndex = 1; // 发送指针偏移1
ldi R24,1
sts _TxIndex,R24
.dbline 149
; TxEnable(); // 激活发送
rcall _TxEnable
L40:
.dbline 150
L41:
.dbline 150
; while(!TxStatus); // 等代发送结束,发送缓冲指针为零则可以发送
lds R2,_TxStatus
tst R2
breq L40
.dbline 151
; DelayMs(20);
ldi R16,20
ldi R17,0
rcall _DelayMs
L43:
.dbline 152
L44:
.dbline 152
; while(!OkFlag); // 收到模块返回OK,命令结束
lds R2,_OkFlag
tst R2
breq L43
.dbline 153
; OkFlag = 0;
clr R2
sts _OkFlag,R2
.dbline -2
L34:
rcall pop_gset3
.dbline 0 ; func end
ret
.dbsym r count 20 c
.dbsym r atlen 22 c
.dbsym r atc 10 pkc
.dbend
.dbfunc e Put_AT_String _Put_AT_String fV
; count -> R20
; atlen -> R22
; atc -> R10,R11
.even
_Put_AT_String::
rcall push_gset3
mov R22,R18
movw R10,R16
.dbline -1
.dbline 161
;
; }
;
; /*-----------------------------------------------------------------------*/
; ///////////////////////// 从内存发送AT命令串 ////////////////////////////
; /*-----------------------------------------------------------------------*/
; void Put_AT_String(unsigned char *atc, unsigned char atlen)
; {
.dbline 164
; unsigned char count;
;
; for(count = 0;count < atlen;count++)
clr R20
rjmp L50
L47:
.dbline 165
.dbline 166
mov R30,R20
clr R31
add R30,R10
adc R31,R11
ldd R2,z+0
ldi R24,<_TxBuf
ldi R25,>_TxBuf
mov R30,R20
clr R31
add R30,R24
adc R31,R25
std z+0,R2
.dbline 167
L48:
.dbline 164
inc R20
L50:
.dbline 164
cp R20,R22
brlo L47
.dbline 169
; {
; TxBuf[count] = *(atc+count);
; }
;
; TxBuf[atlen] = 0x0D; // 发送缓冲窜结尾加“回车”
ldi R24,<_TxBuf
ldi R25,>_TxBuf
mov R30,R22
clr R31
add R30,R24
adc R31,R25
ldi R24,13
std z+0,R24
.dbline 170
; TxBuf[atlen + 1] = 0x00; // 发送缓冲窜结束符号
ldi R24,<_TxBuf+1
ldi R25,>_TxBuf+1
mov R30,R22
clr R31
add R30,R24
adc R31,R25
clr R2
std z+0,R2
.dbline 172
;
; OkFlag = 0;
sts _OkFlag,R2
.dbline 173
; TxStatus = 0;
sts _TxStatus,R2
.dbline 174
; TxIndex = 1; // 发送指针偏移1
ldi R24,1
sts _TxIndex,R24
.dbline 175
; TxEnable(); // 激活发送
rcall _TxEnable
L52:
.dbline 176
L53:
.dbline 176
; while(!TxStatus); // 等代发送结束,发送缓冲指针为零则可以发送
lds R2,_TxStatus
tst R2
breq L52
.dbline 177
; DelayMs(20);
ldi R16,20
ldi R17,0
rcall _DelayMs
L55:
.dbline 178
L56:
.dbline 178
; while(!OkFlag); // 收到模块返回OK,命令结束
lds R2,_OkFlag
tst R2
breq L55
.dbline 179
; OkFlag = 0;
clr R2
sts _OkFlag,R2
.dbline -2
L46:
rcall pop_gset3
.dbline 0 ; func end
ret
.dbsym r count 20 c
.dbsym r atlen 22 c
.dbsym r atc 10 pc
.dbend
.dbfunc e PutString _PutString fV
; count -> R20
; retflag -> R22
; length -> R10
; str -> R12,R13
.even
_PutString::
rcall push_gset4
mov R10,R18
movw R12,R16
ldd R22,y+8
.dbline -1
.dbline 185
; }
; /*-----------------------------------------------------------------------*/
; ///////////////////////// 向串口发送一串数据 ////////////////////////////
; /*-----------------------------------------------------------------------*/
; void PutString(unsigned char *str, unsigned char length,unsigned char retflag)
; {
.dbline 188
; unsigned char count;
;
; for(count = 0;count < length;count++)
clr R20
rjmp L62
L59:
.dbline 189
.dbline 190
mov R30,R20
clr R31
add R30,R12
adc R31,R13
ldd R2,z+0
ldi R24,<_TxBuf
ldi R25,>_TxBuf
mov R30,R20
clr R31
add R30,R24
adc R31,R25
std z+0,R2
.dbline 191
L60:
.dbline 188
inc R20
L62:
.dbline 188
cp R20,R10
brlo L59
.dbline 193
; {
; TxBuf[count] = *(str+count);
; }
;
; TxBuf[length] = 0x0D; // 发送缓冲窜结尾加“回车”
ldi R24,<_TxBuf
ldi R25,>_TxBuf
mov R30,R10
clr R31
add R30,R24
adc R31,R25
ldi R24,13
std z+0,R24
.dbline 194
; TxBuf[length+ 1] = 0x00; // 发送缓冲窜结束符号
ldi R24,<_TxBuf+1
ldi R25,>_TxBuf+1
mov R30,R10
clr R31
add R30,R24
adc R31,R25
clr R2
std z+0,R2
.dbline 196
;
; TxStatus = 0;
sts _TxStatus,R2
.dbline 197
; TxIndex = 1; // 发送指针偏移1
ldi R24,1
sts _TxIndex,R24
.dbline 198
; OkFlag = 0;
sts _OkFlag,R2
.dbline 199
; TxEnable();
rcall _TxEnable
L64:
.dbline 201
L65:
.dbline 201
; // 激活发送
; while(!TxStatus); // 等代发送结束,发送缓冲指针为零则可以发送
lds R2,_TxStatus
tst R2
breq L64
.dbline 202
; DelayMs(20);
ldi R16,20
ldi R17,0
rcall _DelayMs
.dbline 203
; if(retflag)
tst R22
breq L67
.dbline 204
; {
L69:
.dbline 205
L70:
.dbline 205
; while(!OkFlag); // 收到模块返回OK,命令结束
lds R2,_OkFlag
tst R2
breq L69
.dbline 206
; OkFlag = 0;
clr R2
sts _OkFlag,R2
.dbline 207
; }
rjmp L68
L67:
.dbline 209
.dbline 210
ldi R16,200
ldi R17,0
rcall _DelayMs
.dbline 211
clr R2
sts _OkFlag,R2
.dbline 212
L68:
.dbline -2
L58:
rcall pop_gset4
.dbline 0 ; func end
ret
.dbsym r count 20 c
.dbsym r retflag 22 c
.dbsym r length 10 c
.dbsym r str 12 pc
.dbend
.dbfunc e DialNum _DialNum fV
; i -> R10
; length -> R20
; count -> R22
.even
_DialNum::
rcall push_gset3
.dbline -1
.dbline 220
; else
; {
; DelayMs(200);
; OkFlag = 0;
; }
; }
; ////////////////////////////////////////////////////////////////////////////////
;
; /*-----------------------------------------------------------------------*/
; ////////////////////////// 拨号 ///////////////////////////
; /*-----------------------------------------------------------------------*/
; void DialNum(void)
; {
.dbline 221
; unsigned char i,count=0,length=0;
clr R22
.dbline 221
clr R20
rjmp L74
L73:
.dbline 224
.dbline 225
inc R20
.dbline 226
L74:
.dbline 223
;
; while ((PhoneNum[count++] != 0)) // 计算电话号码长度
mov R2,R22
clr R3
subi R22,255 ; addi 1
ldi R24,<_PhoneNum
ldi R25,>_PhoneNum
mov R30,R2
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
tst R2
brne L73
.dbline 228
; {
; length++;
; }
;
; TxBuf[0] = 'A';
ldi R24,65
sts _TxBuf,R24
.dbline 229
; TxBuf[1] = 'T';
ldi R24,84
sts _TxBuf+1,R24
.dbline 230
; TxBuf[2] = 'D';
ldi R24,68
sts _TxBuf+2,R24
.dbline 232
;
; i = 3;
ldi R24,3
mov R10,R24
.dbline 233
; for(count=0;count<length;count++)
clr R22
rjmp L81
L78:
.dbline 234
.dbline 235
mov R2,R10
clr R3
mov R24,R2
subi R24,255 ; addi 1
mov R10,R24
ldi R24,<_PhoneNum
ldi R25,>_PhoneNum
mov R30,R22
clr R31
add R30,R24
adc R31,R25
ldd R4,z+0
ldi R24,<_TxBuf
ldi R25,>_TxBuf
mov R30,R2
clr R31
add R30,R24
adc R31,R25
std z+0,R4
.dbline 236
L79:
.dbline 233
inc R22
L81:
.dbline 233
cp R22,R20
brlo L78
.dbline 238
; {
; TxBuf[i++] = PhoneNum[count];
; }
;
; TxBuf[length+3] = ';';
ldi R24,<_TxBuf+3
ldi R25,>_TxBuf+3
mov R30,R20
clr R31
add R30,R24
adc R31,R25
ldi R24,59
std z+0,R24
.dbline 239
; TxBuf[length+4] = 0x0D;
ldi R24,<_TxBuf+4
ldi R25,>_TxBuf+4
mov R30,R20
clr R31
add R30,R24
adc R31,R25
ldi R24,13
std z+0,R24
.dbline 241
;
; OkFlag = 0;
clr R2
sts _OkFlag,R2
.dbline 242
; TxStatus = 0;
sts _TxStatus,R2
.dbline 243
; TxIndex = 1; // 发送指针偏移1
ldi R24,1
sts _TxIndex,R24
.dbline 244
; TxEnable(); // 激活发送
rcall _TxEnable
L84:
.dbline 245
L85:
.dbline 245
; while(!TxStatus); // 等代发送结束,发送缓冲指针为零则可以发送
lds R2,_TxStatus
tst R2
breq L84
.dbline 246
; DelayMs(20);
ldi R16,20
ldi R17,0
rcall _DelayMs
.dbline 248
; //while(!OkFlag); // 收到模块返回OK,命令结束
; OkFlag = 0;
clr R2
sts _OkFlag,R2
.dbline -2
L72:
rcall pop_gset3
.dbline 0 ; func end
ret
.dbsym r i 10 c
.dbsym r length 20 c
.dbsym r count 22 c
.dbend
.dbfunc e StringCompare _StringCompare fc
; strlen -> R20
; str2 -> R18,R19
; str1 -> R16,R17
.even
_StringCompare::
rcall push_gset1
ldd R20,y+2
.dbline -1
.dbline 255
; }
;
; /*-----------------------------------------------------------------------*/
; ///////////////////////////// 比较两个串 /////////////////////////////////
; /*-----------------------------------------------------------------------*/
; unsigned char StringCompare(volatile unsigned char *str1,const unsigned char *str2,unsigned char strlen)
; {
rjmp L89
L88:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -