📄 gsm_main.s
字号:
; cmd_num=0;
sts _cmd_num,R2
.dbline 70
; data=hand;//准备握手数据
ldi R24,<_hand
ldi R25,>_hand
sts _data+1,R25
sts _data,R24
.dbline 71
; }
L15:
.dbline 72
; if(vision_flag)//接收到请求ID命令
lds R2,_vision_flag
tst R2
breq L17
.dbline 73
; {
.dbline 74
; vision_flag=0;
clr R2
sts _vision_flag,R2
.dbline 75
; cmd_num=0;
sts _cmd_num,R2
.dbline 76
; data=idnum;//准备ID数据
ldi R24,<_idnum
ldi R25,>_idnum
sts _data+1,R25
sts _data,R24
.dbline 77
; }
L17:
.dbline 78
; if(req_flag)
lds R2,_req_flag
tst R2
breq L19
.dbline 79
; {
.dbline 80
; if(hookon) //Hook on置位
lds R2,_hookon
tst R2
breq L21
.dbline 81
; {
.dbline 82
; data=hkon;//准备hookon数据
ldi R24,<_hkon
ldi R25,>_hkon
sts _data+1,R25
sts _data,R24
.dbline 83
; hookon=0;
clr R2
sts _hookon,R2
.dbline 84
; }
rjmp L22
L21:
.dbline 85
; else if(hookoff)//hook off置位
lds R2,_hookoff
tst R2
breq L23
.dbline 86
; {
.dbline 87
; data=hkoff;//准备hook off数据
ldi R24,<_hkoff
ldi R25,>_hkoff
sts _data+1,R25
sts _data,R24
.dbline 88
; hookoff=0;
clr R2
sts _hookoff,R2
.dbline 89
; }
rjmp L24
L23:
.dbline 90
; else if(muteon) //静音关闭标记置位
lds R2,_muteon
tst R2
breq L25
.dbline 91
; {
.dbline 92
; data=mton;//准备静音数据
ldi R24,<_mton
ldi R25,>_mton
sts _data+1,R25
sts _data,R24
.dbline 93
; muteon=0;
clr R2
sts _muteon,R2
.dbline 94
; }
rjmp L26
L25:
.dbline 95
; else if(muteoff)//静音打开标记置位
lds R2,_muteoff
tst R2
breq L27
.dbline 96
; {
.dbline 97
; data=mtoff;//准备静音打开数据
ldi R24,<_mtoff
ldi R25,>_mtoff
sts _data+1,R25
sts _data,R24
.dbline 98
; muteoff=0;
clr R2
sts _muteoff,R2
.dbline 99
; }
L27:
L26:
L24:
L22:
.dbline 100
; req_flag=0;
clr R2
sts _req_flag,R2
.dbline 101
; cmd_num=0;
sts _cmd_num,R2
.dbline 102
; }
L19:
.dbline 103
; if(cmd_flag)
lds R2,_cmd_flag
tst R2
brne X3
rjmp L29
X3:
.dbline 104
; {
.dbline 105
; cmd_flag=0;
clr R2
sts _cmd_flag,R2
.dbline 106
; cmd_num=0;
sts _cmd_num,R2
.dbline 107
; if(buf[1]==0x08 && buf[2]==0x31 && buf[3]==0x30 )//如果接受到握手请求[0x01 0x08 0x31 0x30 0xff]
lds R24,_buf+1
cpi R24,8
brne L31
lds R24,_buf+2
cpi R24,49
brne L31
lds R24,_buf+3
cpi R24,48
brne L31
.dbline 108
; {
.dbline 109
; PWRON;
in R24,0x18
andi R24,223
out 0x18,R24
.dbline 110
; }
rjmp L32
L31:
.dbline 111
; else if (buf[1]==0x06 && buf[2]==0x34 &&buf[3]==0xff) //软件Mute键
lds R24,_buf+1
cpi R24,6
brne L36
lds R24,_buf+2
cpi R24,52
brne L36
lds R24,_buf+3
cpi R24,255
brne L36
.dbline 112
; {
.dbline 113
; muteon=1;
ldi R24,1
sts _muteon,R24
.dbline 114
; Delay(15);
ldi R16,15
ldi R17,0
rcall _Delay
.dbline 115
; PWROFF;
sbi 0x18,5
.dbline 116
; }
rjmp L37
L36:
.dbline 117
; else if (buf[1]==0x06 && buf[2]==0x35 &&buf[3]==0xff) //软件Mute按下
lds R24,_buf+1
cpi R24,6
brne L41
lds R24,_buf+2
cpi R24,53
brne L41
lds R24,_buf+3
cpi R24,255
brne L41
.dbline 118
; {
.dbline 119
; muteoff=1;
ldi R24,1
sts _muteoff,R24
.dbline 120
; Delay(15);
ldi R16,15
ldi R17,0
rcall _Delay
.dbline 121
; PWROFF;
sbi 0x18,5
.dbline 122
; }
rjmp L42
L41:
.dbline 123
; else if (buf[1]==0x06 && buf[2]==0x31 &&buf[3]==0xff) //按下hook on键
lds R24,_buf+1
cpi R24,6
brne L46
lds R24,_buf+2
cpi R24,49
brne L46
lds R24,_buf+3
cpi R24,255
brne L46
.dbline 124
; {
.dbline 125
; Usart_Command("ata",3); //设置来电显示
ldi R18,3
ldi R19,0
ldi R16,<L51
ldi R17,>L51
rcall _Usart_Command
.dbline 126
; Usart_Tx(0x0d);
ldi R16,13
ldi R17,0
rcall _Usart_Tx
.dbline 127
; hookon=1;
ldi R24,1
sts _hookon,R24
.dbline 128
; Delay(15);
ldi R16,15
ldi R17,0
rcall _Delay
.dbline 129
; PWROFF;
sbi 0x18,5
.dbline 130
; }
rjmp L47
L46:
.dbline 131
; else if (buf[1]==0x06 && buf[2]==0x32 && buf[3]==0xff)//按下hook off键
lds R24,_buf+1
cpi R24,6
brne L52
lds R24,_buf+2
cpi R24,50
brne L52
lds R24,_buf+3
cpi R24,255
brne L52
.dbline 132
; {
.dbline 133
; Usart_Command("ath",3); //设置来电显示
ldi R18,3
ldi R19,0
ldi R16,<L57
ldi R17,>L57
rcall _Usart_Command
.dbline 134
; Usart_Tx(0x0d);
ldi R16,13
ldi R17,0
rcall _Usart_Tx
.dbline 135
; hookoff=1;
ldi R24,1
sts _hookoff,R24
.dbline 136
; Delay(15);
ldi R16,15
ldi R17,0
rcall _Delay
.dbline 137
; PWROFF;
sbi 0x18,5
.dbline 138
; }
rjmp L53
L52:
.dbline 139
; else if (buf[1]==0x02) //拨号
lds R24,_buf+1
cpi R24,2
breq X4
rjmp L58
X4:
.dbline 140
; {
.dbline 141
; for(xk=0;xk<18;xk++)
clr R2
sts _xk,R2
rjmp L64
L61:
.dbline 142
; {
.dbline 143
; if(buf[xk+2]==0xff)
ldi R24,<_buf+2
ldi R25,>_buf+2
lds R30,_xk
clr R31
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,255
brne L65
.dbline 144
; {
.dbline 145
; num_end_flag=1;
ldi R24,1
sts _num_end_flag,R24
.dbline 146
; break;
rjmp L63
L65:
.dbline 148
; }
; if(buf[xk+2] !=0x01 && buf[xk+2] !=0x02)
ldi R24,<_buf+2
ldi R25,>_buf+2
lds R30,_xk
clr R31
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,1
breq L68
ldi R24,<_buf+2
ldi R25,>_buf+2
lds R30,_xk
clr R31
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,2
breq L68
.dbline 149
; {
.dbline 150
; telnum[num]=buf[xk+2];
ldi R24,<_buf+2
ldi R25,>_buf+2
lds R30,_xk
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
ldi R24,<_telnum
ldi R25,>_telnum
lds R30,_num
clr R31
add R30,R24
adc R31,R25
std z+0,R2
.dbline 151
; num++;
lds R24,_num
subi R24,255 ; addi 1
sts _num,R24
.dbline 152
; }
L68:
.dbline 153
L62:
.dbline 141
lds R24,_xk
subi R24,255 ; addi 1
sts _xk,R24
L64:
.dbline 141
lds R24,_xk
cpi R24,18
brsh X5
rjmp L61
X5:
L63:
.dbline 154
; }
; if(num_end_flag)
lds R2,_num_end_flag
tst R2
breq L73
.dbline 155
; {
.dbline 156
; Usart_Command("ATD",3);
ldi R18,3
ldi R19,0
ldi R16,<L75
ldi R17,>L75
rcall _Usart_Command
.dbline 157
; Usart_Command(telnum,num);
lds R18,_num
clr R19
ldi R16,<_telnum
ldi R17,>_telnum
rcall _Usart_Command
.dbline 158
; Usart_Tx(';');
ldi R16,59
ldi R17,0
rcall _Usart_Tx
.dbline 159
; Usart_Tx(0x0d);
ldi R16,13
ldi R17,0
rcall _Usart_Tx
.dbline 160
; num_end_flag=0;
clr R2
sts _num_end_flag,R2
.dbline 161
; num=0;
sts _num,R2
.dbline 162
; }
L73:
.dbline 163
; }
L58:
L53:
L47:
L42:
L37:
L32:
.dbline 164
; }//end if(cmd_flag)
L29:
.dbline 165
L13:
.dbline 64
rjmp L12
X2:
.dbline -2
L9:
.dbline 0 ; func end
ret
.dbend
.area bss(ram, con, rel)
.dbfile C:\DOCUME~1\Rooger\桌面\GSM_PHONE\gsm_main.c
_idnum::
.blkb 14
.dbsym e idnum _idnum A[14:14]c
_telnum::
.blkb 14
.dbsym e telnum _telnum A[14:14]c
_data::
.blkb 2
.dbsym e data _data pc
_buf::
.blkb 18
.dbsym e buf _buf A[18:18]c
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Rooger\桌面\GSM_PHONE\gsm_main.c
L75:
.blkb 4
.area idata
.byte 'A,'T,'D,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Rooger\桌面\GSM_PHONE\gsm_main.c
L57:
.blkb 4
.area idata
.byte 'a,'t,'h,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Rooger\桌面\GSM_PHONE\gsm_main.c
L51:
.blkb 4
.area idata
.byte 'a,'t,'a,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Rooger\桌面\GSM_PHONE\gsm_main.c
L11:
.blkb 10
.area idata
.byte 'A,'T,43,'C,'L,'I,'P,61,49,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Rooger\桌面\GSM_PHONE\gsm_main.c
L10:
.blkb 3
.area idata
.byte 'A,'T,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Rooger\桌面\GSM_PHONE\gsm_main.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -