⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gsm_main.s

📁 实现机于通讯芯片的电话接听 拨出 以及来电振领提示
💻 S
📖 第 1 页 / 共 2 页
字号:
; 			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 + -