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

📄 gsm.lst

📁 实现机于通讯芯片的电话接听 拨出 以及来电振领提示
💻 LST
📖 第 1 页 / 共 3 页
字号:
    0137 F409      BNE	0x0139
    0138 C0C1      RJMP	0x01FA
(0104) 		{
(0105) 		        cmd_flag=0;
    0139 2422      CLR	R2
    013A 92200068  STS	cmd_flag,R2
(0106) 				cmd_num=0;
    013C 92200061  STS	cmd_num,R2
(0107) 		        if(buf[1]==0x08 && buf[2]==0x31 && buf[3]==0x30 )//如果接受到握手请求[0x01 0x08 0x31 0x30 0xff]
    013E 918000FB  LDS	R24,buf+1
    0140 3088      CPI	R24,0x8
    0141 F461      BNE	0x014E
    0142 918000FC  LDS	R24,buf+2
    0144 3381      CPI	R24,0x31
    0145 F441      BNE	0x014E
    0146 918000FD  LDS	R24,buf+3
    0148 3380      CPI	R24,0x30
    0149 F421      BNE	0x014E
(0108) 				{
(0109) 					 PWRON;
    014A B388      IN	R24,0x18
    014B 7D8F      ANDI	R24,0xDF
    014C BB88      OUT	0x18,R24
(0110) 			    }
    014D C0AC      RJMP	0x01FA
(0111) 				else if (buf[1]==0x06 && buf[2]==0x34  &&buf[3]==0xff)  //软件Mute键
    014E 918000FB  LDS	R24,buf+1
    0150 3086      CPI	R24,6
    0151 F481      BNE	0x0162
    0152 918000FC  LDS	R24,buf+2
    0154 3384      CPI	R24,0x34
    0155 F461      BNE	0x0162
    0156 918000FD  LDS	R24,buf+3
    0158 3F8F      CPI	R24,0xFF
    0159 F441      BNE	0x0162
(0112) 		    	{ 
(0113) 					 muteon=1;
    015A E081      LDI	R24,1
    015B 938000C1  STS	muteon,R24
(0114) 					 Delay(15);
    015D E00F      LDI	R16,0xF
    015E E010      LDI	R17,0
    015F DF51      RCALL	_Delay
(0115) 				     PWROFF;
    0160 9AC5      SBI	0x18,5
(0116) 				}
    0161 C098      RJMP	0x01FA
(0117) 				else if (buf[1]==0x06 && buf[2]==0x35 &&buf[3]==0xff)  //软件Mute按下
    0162 918000FB  LDS	R24,buf+1
    0164 3086      CPI	R24,6
    0165 F481      BNE	0x0176
    0166 918000FC  LDS	R24,buf+2
    0168 3385      CPI	R24,0x35
    0169 F461      BNE	0x0176
    016A 918000FD  LDS	R24,buf+3
    016C 3F8F      CPI	R24,0xFF
    016D F441      BNE	0x0176
(0118) 		    	{
(0119) 					 muteoff=1;
    016E E081      LDI	R24,1
    016F 938000C2  STS	muteoff,R24
(0120) 					 Delay(15);
    0171 E00F      LDI	R16,0xF
    0172 E010      LDI	R17,0
    0173 DF3D      RCALL	_Delay
(0121) 				     PWROFF;
    0174 9AC5      SBI	0x18,5
(0122) 				}
    0175 C084      RJMP	0x01FA
(0123) 			    else if (buf[1]==0x06 && buf[2]==0x31 &&buf[3]==0xff)  //按下hook on键
    0176 918000FB  LDS	R24,buf+1
    0178 3086      CPI	R24,6
    0179 F4C1      BNE	0x0192
    017A 918000FC  LDS	R24,buf+2
    017C 3381      CPI	R24,0x31
    017D F4A1      BNE	0x0192
    017E 918000FD  LDS	R24,buf+3
    0180 3F8F      CPI	R24,0xFF
    0181 F481      BNE	0x0192
(0124) 		    	{ 
(0125) 				     Usart_Command("ata",3); //设置来电显示
    0182 E023      LDI	R18,3
    0183 E030      LDI	R19,0
    0184 EC0B      LDI	R16,0xCB
    0185 E010      LDI	R17,0
    0186 DF05      RCALL	_Usart_Command
(0126)                      Usart_Tx(0x0d); 
    0187 E00D      LDI	R16,0xD
    0188 E010      LDI	R17,0
    0189 DEF0      RCALL	_Usart_Tx
(0127) 					 hookon=1;
    018A E081      LDI	R24,1
    018B 938000BF  STS	hookon,R24
(0128) 					 Delay(15);
    018D E00F      LDI	R16,0xF
    018E E010      LDI	R17,0
    018F DF21      RCALL	_Delay
(0129) 				     PWROFF;
    0190 9AC5      SBI	0x18,5
(0130) 				}
    0191 C068      RJMP	0x01FA
(0131) 		 	    else if (buf[1]==0x06 && buf[2]==0x32 && buf[3]==0xff)//按下hook off键
    0192 918000FB  LDS	R24,buf+1
    0194 3086      CPI	R24,6
    0195 F4C1      BNE	0x01AE
    0196 918000FC  LDS	R24,buf+2
    0198 3382      CPI	R24,0x32
    0199 F4A1      BNE	0x01AE
    019A 918000FD  LDS	R24,buf+3
    019C 3F8F      CPI	R24,0xFF
    019D F481      BNE	0x01AE
(0132) 		    	{
(0133) 				     Usart_Command("ath",3); //设置来电显示
    019E E023      LDI	R18,3
    019F E030      LDI	R19,0
    01A0 EC07      LDI	R16,0xC7
    01A1 E010      LDI	R17,0
    01A2 DEE9      RCALL	_Usart_Command
(0134)                      Usart_Tx(0x0d);
    01A3 E00D      LDI	R16,0xD
    01A4 E010      LDI	R17,0
    01A5 DED4      RCALL	_Usart_Tx
(0135) 					 hookoff=1;
    01A6 E081      LDI	R24,1
    01A7 938000C0  STS	hookoff,R24
(0136) 					 Delay(15);
    01A9 E00F      LDI	R16,0xF
    01AA E010      LDI	R17,0
    01AB DF05      RCALL	_Delay
(0137) 					 PWROFF;
    01AC 9AC5      SBI	0x18,5
(0138) 				}
    01AD C04C      RJMP	0x01FA
(0139) 				else if (buf[1]==0x02) //拨号
    01AE 918000FB  LDS	R24,buf+1
    01B0 3082      CPI	R24,2
    01B1 F009      BEQ	0x01B3
    01B2 C047      RJMP	0x01FA
(0140) 				{
(0141) 					for(xk=0;xk<18;xk++)
    01B3 2422      CLR	R2
    01B4 92200064  STS	xk,R2
    01B6 C024      RJMP	0x01DB
(0142) 					{
(0143) 					  if(buf[xk+2]==0xff)
    01B7 D21F      RCALL	0x03D7
    01B8 8180      LDD	R24,Z+0
    01B9 3F8F      CPI	R24,0xFF
    01BA F421      BNE	0x01BF
(0144) 					  {
(0145) 					    num_end_flag=1;
    01BB E081      LDI	R24,1
    01BC 93800086  STS	num_end_flag,R24
(0146) 						break;
    01BE C021      RJMP	0x01E0
(0147) 					  }
(0148) 					  if(buf[xk+2] !=0x01 && buf[xk+2] !=0x02)
    01BF D217      RCALL	0x03D7
    01C0 8180      LDD	R24,Z+0
    01C1 3081      CPI	R24,1
    01C2 F099      BEQ	0x01D6
    01C3 D213      RCALL	0x03D7
    01C4 8180      LDD	R24,Z+0
    01C5 3082      CPI	R24,2
    01C6 F079      BEQ	0x01D6
    01C7 D20F      RCALL	0x03D7
(0149) 					  {
(0150) 					     telnum[num]=buf[xk+2];
    01C8 8020      LDD	R2,Z+0
    01C9 EE8A      LDI	R24,0xEA
    01CA E090      LDI	R25,0
    01CB 91E00085  LDS	R30,num
    01CD 27FF      CLR	R31
    01CE 0FE8      ADD	R30,R24
    01CF 1FF9      ADC	R31,R25
    01D0 8220      STD	Z+0,R2
(0151) 						 num++;
    01D1 91800085  LDS	R24,num
    01D3 5F8F      SUBI	R24,0xFF
    01D4 93800085  STS	num,R24
    01D6 91800064  LDS	R24,xk
    01D8 5F8F      SUBI	R24,0xFF
    01D9 93800064  STS	xk,R24
    01DB 91800064  LDS	R24,xk
    01DD 3182      CPI	R24,0x12
    01DE F408      BCC	0x01E0
    01DF CFD7      RJMP	0x01B7
(0152) 					  }
(0153) 					}
(0154) 					if(num_end_flag)
    01E0 90200086  LDS	R2,num_end_flag
    01E2 2022      TST	R2
    01E3 F0B1      BEQ	0x01FA
(0155) 					{
(0156) 					  Usart_Command("ATD",3);
    01E4 E023      LDI	R18,3
    01E5 E030      LDI	R19,0
    01E6 EC03      LDI	R16,0xC3
    01E7 E010      LDI	R17,0
    01E8 DEA3      RCALL	_Usart_Command
(0157) 					  Usart_Command(telnum,num);
    01E9 91200085  LDS	R18,num
    01EB 2733      CLR	R19
    01EC EE0A      LDI	R16,0xEA
    01ED E010      LDI	R17,0
    01EE DE9D      RCALL	_Usart_Command
(0158) 					  Usart_Tx(';');
    01EF E30B      LDI	R16,0x3B
    01F0 E010      LDI	R17,0
    01F1 DE88      RCALL	_Usart_Tx
(0159) 					  Usart_Tx(0x0d);
    01F2 E00D      LDI	R16,0xD
    01F3 E010      LDI	R17,0
    01F4 DE85      RCALL	_Usart_Tx
(0160) 					  num_end_flag=0;
    01F5 2422      CLR	R2
    01F6 92200086  STS	num_end_flag,R2
(0161) 					  num=0;
    01F8 92200085  STS	num,R2
    01FA CEF3      RJMP	0x00EE
    01FB 9508      RET
_TWI_ISR:
    01FC 922A      ST	R2,-Y
    01FD 923A      ST	R3,-Y
    01FE 930A      ST	R16,-Y
    01FF 931A      ST	R17,-Y
    0200 938A      ST	R24,-Y
    0201 939A      ST	R25,-Y
    0202 93EA      ST	R30,-Y
    0203 93FA      ST	R31,-Y
    0204 B62F      IN	R2,0x3F
    0205 922A      ST	R2,-Y
FILE: C:\DOCUME~1\Rooger\桌面\GSM_PHONE\iic.c
(0001) /************************************iic.c**************************
(0002) *iic.c负责同上层软件之间的通讯
(0003) *iic在NPI中处于两种工作方式 从机接收模式以及从机发送模式
(0004) *从机接收模式 在通讯过程中 应答主机请求 并将数据保存到相应数组以便主程序判断
(0005) *从机发送模式 通过pwr拉高请求主机接收数据 然后根据主机应答发送数据
(0006) ********************************************************************/
(0007) #include <iom8v.h>
(0008) #include <macros.h>
(0009) #include "iic.h"
(0010) #include "define.h"
(0011) 
(0012) extern uchar buf[15]; //pc同i2c交互数据存放处
(0013) extern uchar cmd;//i2c数据缓存
(0014) extern uchar cmd_num;//i2c数据计数
(0015) extern uchar flag; //
(0016) extern uchar *data;
(0017) extern uchar j;
(0018) extern uchar req_flag,start_flag,vision_flag,cmd_flag;
(0019) //*****************************************************************************/
(0020) #pragma interrupt_handler TWI_ISR:18
(0021) void TWI_ISR(void)
(0022) { 
(0023)         //TWI被控接收器模式中断处理
(0024)         switch (TestAck()) 
    0206 B101      IN	R16,0x01
    0207 2711      CLR	R17
    0208 7F08      ANDI	R16,0xF8
    0209 7010      ANDI	R17,0
    020A 3900      CPI	R16,0x90
    020B E0E0      LDI	R30,0
    020C 071E      CPC	R17,R30
    020D F409      BNE	0x020F
    020E C0F0      RJMP	0x02FF
    020F E980      LDI	R24,0x90
    0210 E090      LDI	R25,0
    0211 1780      CP	R24,R16
    0212 0791      CPC	R25,R17
    0213 F40C      BGE	0x0215
    0214 C030      RJMP	0x0245
    0215 3700      CPI	R16,0x70
    0216 E0E0      LDI	R30,0
    0217 071E      CPC	R17,R30
    0218 F409      BNE	0x021A
    0219 C067      RJMP	0x0281
    021A E780      LDI	R24,0x70
    021B E090      LDI	R25,0
    021C 1780      CP	R24,R16
    021D 0791      CPC	R25,R17
    021E F084      BLT	0x022F
    021F 3600      CPI	R16,0x60
    0220 E0E0      LDI	R30,0
    0221 071E      CPC	R17,R30
    0222 F409      BNE	0x0224
    0223 C057      RJMP	0x027B
    0224 3600      CPI	R16,0x60
    0225 E0E0      LDI	R30,0
    0226 071E      CPC	R17,R30
    0227 F40C      BGE	0x0229
    0228 C15A      RJMP	0x0383
    0229 3608      CPI	R16,0x68
    022A E0E0      LDI	R30,0
    022B 071E      CPC	R17,R30
    022C F409      BNE	0x022E
    022D C050      RJMP	0x027E
    022E C154      RJMP	0x0383
    022F 3800      CPI	R16,0x80
    0230 E0E0      LDI	R30,0
    0231 071E      CPC	R17,R30
    0232 F409      BNE	0x0234
    0233 C053      RJMP	0x0287
    0234 E880      LDI	R24,0x80
    0235 E090      LDI	R25,0
    0236 1780      CP	R24,R16
    0237 0791      CPC	R25,R17
    0238 F034      BLT	0x023F
    0239 3708      CPI	R16,0x78
    023A E0E0      LDI	R30,0
    023B 071E      CPC	R17,R30
    023C F409      BNE	0x023E
    023D C046      RJMP	0x0284
    023E C144      RJMP	0x0383
    023F 3808      CPI	R16,0x88
    0240 E0E0      LDI	R30,0
    0241 071E      CPC	R17,R30
    0242 F409      BNE	0x0244
    0243 C07F      RJMP	0x02C3
    0244 C13E      RJMP	0x0383
    0245 3B00      CPI	R16,0xB0
    0246 E0E0      LDI	R30,0
    0247 071E      CPC	R17,R30
    0248 F409      BNE	0x024A
    0249 C12F      RJMP	0x0379
    024A EB80      LDI	R24,0xB0
    024B E090      LDI	R25,0
    024C 1780      CP	R24,R16
    024D 0791      CPC	R25,R17
    024E F0B4      BLT	0x0265
    024F 3A00      CPI	R16,0xA0
    0250 E0E0      LDI	R30,0
    0251 071E      CPC	R17,R30
    0252 F409      BNE	0x0254
    0253 C12D      RJMP	0x0381
    0254 EA80      LDI	R24,0xA0
    0255 E090      LDI	R25,0
    0256 1780      CP	R24,R16
    0257 0791      CPC	R25,R17
    0258 F034      BLT	0x025F
    0259 3908      CPI	R16,0x98
    025A E0E0      LDI	R30,0
    025B 071E      CPC	R17,R30
    025C F409      BNE	0x025E
    025D C0DD      RJMP	0x033B
    025E C124      RJMP	0x0383
    025F 3A08      CPI	R16,0xA8
    0260 E0E0      LDI	R30,0
    0261 071E      CPC	R17,R30
    0262 F409      BNE	0x0264
    0263 C113      RJMP	0x0377
    0264 C11E      RJMP	0x0383
    0265 3C00      CPI	R16,0xC0
    0266 E0E0      LDI	R30,0
    0267 071E      CPC	R17,R30
    0268 F409      BNE	0x026A
    0269 C113      RJMP	0x037D
    026A EC80      LDI	R24,0xC0
    026B E090      LDI	R25,0
    026C 1780      CP	R24,R16
    026D 0791      CPC	R25,R17
    026E F034      BLT	0x0275
    026F 3B08      CPI	R16,0xB8
    0270 E0E0      LDI	R30,0
    0271 071E      CPC	R17,R30
    0272 F409      BNE	0x0274
    0273 C107      RJMP	0x037B
    0274 C10E      RJMP	0x0383
    0275 3C08      CPI	R16,0xC8
    0276 E0E0      LDI	R30,0
    0277 071E      CPC	R17,R30
    0278 F409      BNE	0x027A
    0279 C105      RJMP	0x037F
    027A C108      RJMP	0x0383
(0025)         { 
(0026) 		        //从机接收
(0027)                 case SR_SLA_ACK:   //SR_SLA_ACK=0x60; SLA+W已经被接收ACK 已返回
(0028)                 {
(0029)                         Twi_ACK();
    027B EC85      LDI	R24,0xC5
    027C BF86      OUT	0x36,R24
(0030) 						break;
    027D C107      RJMP	0x0385
(0031)                 } 
(0032)                 case MT_SR_SLA_ACK://MT_SR_SLA_ACK=0x68;SLA+R/W 作为主机的仲裁失败;自己的SLA+W 已经被接收,ACK 已返回
(0033)                 { 
(0034)                         Twi_ACK();
    027E EC85      LDI	R24,0xC5
    027F BF86      OUT	0x36,R24
(0035)                         break; 
    0280 C104      RJMP	0x0385
(0036)                 }    
(0037)                 case SR_ALL_ACK://SR_ALL_ACK=0x70;接收到广播地址,ACK 已返回
(0038)                 {
(0039)                         Twi_ACK(); 
    0281 EC85      LDI	R24,0xC5
    0282 BF86      OUT	0x36,R24
(0040)                         break;
    0283 C101      RJMP	0x0385
(0041)                 } 
(0042)                 case MT_SR_ALL_ACK://MT_SR_ALL_ACK=0x78;SLA+R/W 作为主机的仲裁失败;接收到广播地址,ACK 已返回
(0043)                 {    
(0044) 				        Twi_ACK(); 
    0284 EC85      LDI	R24,0xC5
    0285 BF86      OUT	0x36,R24
(0045)                         break;   
    0286 C0FE      RJMP	0x0385
(0046)                 } 
(0047)                 case SR_DATA_ACK://SR_DATA_ACK=0X80;以前以自己的 SLA+W 被寻址;数据已经被接收,ACK 已返回
(0048)                 {
(0049) 				        cmd=TWDR;
    0287 B023      IN	R2,0x03
    0288 92200060  STS	cmd,R2
(0050) 						buf[cmd_num]=cmd;
    028A EF8A      LDI	R24,0xFA
    028B E090      LDI	R25,0
    028C 91E00061  LDS	R30,cmd_num
    028E 27FF      CLR	R31
    028F 0FE8      ADD	R30,R24
    0290 1FF9      ADC	R31,R25
    0291 8220      STD	Z+0,R2
(0051) 						cmd_num++;
    0292 91800061  LDS	R24,cmd_num
    0294 5F8F      SUBI	R24,0xFF
    0295 93800061  STS	cmd_num,R24
(0052) 						if(cmd==0x00 && cmd_num==2) //接收到主机请求数据结束位 置标记
    0297 90200060  LDS	R2,cmd
    0299 2022      TST	R2
    029A F441      BNE	0x02A3
    029B 3082      CPI	R24,2
    029C F431      BNE	0x02A3
(0053) 						{  
(0054) 						  PWRON;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -