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

📄 xmodem.lst

📁 AVR M16 Xmodem传输及发送彩信的实现
💻 LST
📖 第 1 页 / 共 4 页
字号:
(0485) 		case 8:
(0486) 				break;
(0487) 		case 17:
(0488) 				if(memcmp_self(receive_data,DATA_DOWNFINEOK,17)) //检测是否收到 Ok_Info_FileClose
(0489)                      receive_DOWNFINEOK = 1;
(0490) 				break;		
(0491) 		case 25:
(0492)                 if(memcmp_self(receive_data,DATA_DOWNFINE,25))    //检测是否收到 Ok_Info_FileUploadStarted 
(0493)                      receive_DOWNFINE = 1;
(0494) 				break;
(0495) 		case 29:
(0496) 			    if(memcmp_self(receive_data,DATA_CLIP,5)) //检测是否收到 Ok_Info_FileClose
(0497)                 {     receive_CLIP = 1;
(0498) 					  for(i=8;i<19;i++)
(0499) 					  dial_number[i-8]=receive_data[i];
(0500) 				}
(0501) 		default:
(0502) 				break;
(0503) 	}*/
(0504) }
(0505) 
(0506) 
(0507) 
(0508) //1MS的延时
(0509) void Delay(unsigned int Delay_MS)
(0510) {
     A0C C005      RJMP	0x0A12
(0511)         unsigned char i;
(0512) 	while(Delay_MS--)
(0513) 	{
(0514) 	   for(i=0;i<111;i++);
     A0D 2744      CLR	R20
     A0E C001      RJMP	0x0A10
     A0F 9543      INC	R20
     A10 364F      CPI	R20,0x6F
     A11 F3E8      BCS	0x0A0F
     A12 0118      MOVW	R2,R16
     A13 5001      SUBI	R16,1
     A14 4010      SBCI	R17,0
     A15 2022      TST	R2
     A16 F7B1      BNE	0x0A0D
     A17 2033      TST	R3
     A18 F7A1      BNE	0x0A0D
     A19 9149      LD	R20,Y+
     A1A 9508      RET
(0515) 	}
(0516) }
(0517) 
(0518) void sendcmd(unsigned char *by_Array)
(0519) {
_sendcmd:
  by_Array             --> R16
     A1B C007      RJMP	0x0A23
(0520) 	while(*by_Array)
(0521) 	{
(0522) 	 while (!( UCSRA & (1<<UDRE)));
     A1C 9B5D      SBIS	0x0B,5
     A1D CFFE      RJMP	0x0A1C
(0523) 	  UDR=*by_Array;
     A1E 01F8      MOVW	R30,R16
     A1F 8020      LDD	R2,Z+0
     A20 B82C      OUT	0x0C,R2
(0524) 	  by_Array++;
     A21 5F0F      SUBI	R16,0xFF
     A22 4F1F      SBCI	R17,0xFF
     A23 01F8      MOVW	R30,R16
     A24 8020      LDD	R2,Z+0
     A25 2022      TST	R2
     A26 F7A9      BNE	0x0A1C
     A27 9508      RET
(0525) 	}	
(0526) }
(0527) void mms_atsent(void)
(0528) {
(0529) receive_OK=0;
_mms_atsent:
     A28 2422      CLR	R2
     A29 9220 021A STS	receive_OK,R2
(0530) sendcmd("AT$MMSW=0\r\n") ;
     A2B E104      LDI	R16,0x14
     A2C E011      LDI	R17,1
     A2D DFED      RCALL	_sendcmd
(0531) while(receive_OK==0) ;
     A2E 9020 021A LDS	R2,receive_OK
     A30 2022      TST	R2
     A31 F3E1      BEQ	0x0A2E
(0532) Delay(10);
     A32 E00A      LDI	R16,0xA
     A33 E010      LDI	R17,0
     A34 DFD6      RCALL	_Delay
(0533) 
(0534) receive_DAYUHAO=0;
     A35 2422      CLR	R2
     A36 9220 0217 STS	receive_DAYUHAO,R2
(0535) sendcmd("AT$MMSW=1,1\r\n") ;
     A38 E006      LDI	R16,6
     A39 E011      LDI	R17,1
     A3A DFE0      RCALL	_sendcmd
(0536) while(receive_DAYUHAO==0) ;
     A3B 9020 0217 LDS	R2,receive_DAYUHAO
     A3D 2022      TST	R2
     A3E F3E1      BEQ	0x0A3B
(0537) receive_OK=0;
     A3F 2422      CLR	R2
     A40 9220 021A STS	receive_OK,R2
(0538) send_m_byte(dial_number,11);
     A42 E02B      LDI	R18,0xB
     A43 E030      LDI	R19,0
     A44 E700      LDI	R16,0x70
     A45 E010      LDI	R17,0
     A46 DDC1      RCALL	_send_m_byte
(0539) send_a_byte(ctrl_z);
     A47 E10A      LDI	R16,0x1A
     A48 DDBB      RCALL	_send_a_byte
(0540) while(receive_OK==0) ;
     A49 9020 021A LDS	R2,receive_OK
     A4B 2022      TST	R2
     A4C F3E1      BEQ	0x0A49
(0541) Delay(10);
     A4D E00A      LDI	R16,0xA
     A4E E010      LDI	R17,0
     A4F DFBB      RCALL	_Delay
(0542) 
(0543) receive_DAYUHAO=0;
     A50 2422      CLR	R2
     A51 9220 0217 STS	receive_DAYUHAO,R2
(0544) sendcmd("AT$MMSW=4,1\r\n");
     A53 EF08      LDI	R16,0xF8
     A54 E010      LDI	R17,0
     A55 DFC5      RCALL	_sendcmd
(0545) while(receive_DAYUHAO==0) ;
     A56 9020 0217 LDS	R2,receive_DAYUHAO
     A58 2022      TST	R2
     A59 F3E1      BEQ	0x0A56
(0546) receive_OK=0;
     A5A 2422      CLR	R2
     A5B 9220 021A STS	receive_OK,R2
(0547) sendcmd(subject);
     A5D E70C      LDI	R16,0x7C
     A5E E010      LDI	R17,0
     A5F DFBB      RCALL	_sendcmd
(0548) send_a_byte(ctrl_z);
     A60 E10A      LDI	R16,0x1A
     A61 DDA2      RCALL	_send_a_byte
(0549) while(receive_OK==0) ;
     A62 9020 021A LDS	R2,receive_OK
     A64 2022      TST	R2
     A65 F3E1      BEQ	0x0A62
(0550) Delay(10);
     A66 E00A      LDI	R16,0xA
     A67 E010      LDI	R17,0
     A68 DFA2      RCALL	_Delay
(0551) 
(0552) receive_DAYUHAO=0;
     A69 2422      CLR	R2
     A6A 9220 0217 STS	receive_DAYUHAO,R2
(0553) sendcmd("AT$MMSW=5,1,1\r\n");
     A6C EE08      LDI	R16,0xE8
     A6D E010      LDI	R17,0
     A6E DFAC      RCALL	_sendcmd
(0554) while(receive_DAYUHAO==0) ;
     A6F 9020 0217 LDS	R2,receive_DAYUHAO
     A71 2022      TST	R2
     A72 F3E1      BEQ	0x0A6F
(0555) receive_OK=0;
     A73 2422      CLR	R2
     A74 9220 021A STS	receive_OK,R2
(0556) sendcmd("mypicture");
     A76 ED0E      LDI	R16,0xDE
     A77 E010      LDI	R17,0
     A78 DFA2      RCALL	_sendcmd
(0557) send_a_byte(ctrl_z);
     A79 E10A      LDI	R16,0x1A
     A7A DD89      RCALL	_send_a_byte
(0558) while(receive_OK==0) ;
     A7B 9020 021A LDS	R2,receive_OK
     A7D 2022      TST	R2
     A7E F3E1      BEQ	0x0A7B
(0559) Delay(10);
     A7F E00A      LDI	R16,0xA
     A80 E010      LDI	R17,0
     A81 DF89      RCALL	_Delay
(0560) 
(0561) receive_OK=0;
     A82 2422      CLR	R2
     A83 9220 021A STS	receive_OK,R2
(0562) sendcmd("AT$MMSW=6,1,\"test.jpg\"\r\n");
     A85 EC05      LDI	R16,0xC5
     A86 E010      LDI	R17,0
     A87 DF93      RCALL	_sendcmd
(0563) while(receive_OK==0) ;
     A88 9020 021A LDS	R2,receive_OK
     A8A 2022      TST	R2
     A8B F3E1      BEQ	0x0A88
(0564) Delay(10);
     A8C E00A      LDI	R16,0xA
     A8D E010      LDI	R17,0
     A8E DF7C      RCALL	_Delay
(0565) 
(0566) receive_OK=0;
     A8F 2422      CLR	R2
     A90 9220 021A STS	receive_OK,R2
(0567) sendcmd("AT$MMSSEND\r\n");
     A92 EB08      LDI	R16,0xB8
     A93 E010      LDI	R17,0
     A94 DF86      RCALL	_sendcmd
(0568) while(receive_OK==0) ;
     A95 9020 021A LDS	R2,receive_OK
     A97 2022      TST	R2
     A98 F3E1      BEQ	0x0A95
(0569) Delay(10);
     A99 E00A      LDI	R16,0xA
     A9A E010      LDI	R17,0
     A9B DF6F      RCALL	_Delay
(0570) 
(0571) receive_MMSTRACE=0;
     A9C 2422      CLR	R2
     A9D 9220 0213 STS	receive_MMSTRACE,R2
(0572) while(receive_MMSTRACE==0) ;
     A9F 9020 0213 LDS	R2,receive_MMSTRACE
     AA1 2022      TST	R2
     AA2 F3E1      BEQ	0x0A9F
(0573) 
(0574) receive_OK=0;
     AA3 2422      CLR	R2
     AA4 9220 021A STS	receive_OK,R2
(0575) sendcmd(deletmms);
     AA6 E804      LDI	R16,0x84
     AA7 E010      LDI	R17,0
     AA8 DF72      RCALL	_sendcmd
(0576) while(receive_OK==0) ;
     AA9 9020 021A LDS	R2,receive_OK
     AAB 2022      TST	R2
     AAC F3E1      BEQ	0x0AA9
     AAD 9508      RET
_Xmodem:
  i                    --> R20
     AAE 934A      ST	R20,-Y
     AAF 935A      ST	R21,-Y
(0577) 
(0578) }
(0579) 
(0580) void Xmodem(void)
(0581) {	 int i;
(0582) 	pic = test_pic1;
     AB0 E584      LDI	R24,0x54
     AB1 E090      LDI	R25,0
     AB2 9390 017D STS	pic+1,R25
     AB4 9380 017C STS	pic,R24
(0583) 	
(0584) receive_sp = 0;
     AB6 2422      CLR	R2
     AB7 2433      CLR	R3
     AB8 9230 0093 STS	receive_sp+1,R3
     ABA 9220 0092 STS	receive_sp,R2
(0585) 	for (i = 1; i < 65530; i++)
     ABC E041      LDI	R20,1
     ABD E050      LDI	R21,0
     ABE C019      RJMP	0x0AD8
(0586) 	{
(0587) 		if((*(pic-1) == 0xff) &&((*pic) == 0xd9))
     ABF 9020 017C LDS	R2,pic
     AC1 9030 017D LDS	R3,pic+1
     AC3 01F1      MOVW	R30,R2
     AC4 9731      SBIW	R30,1
     AC5 9184      LPM	R24,1(Z)
     AC6 3F8F      CPI	R24,0xFF
     AC7 F429      BNE	0x0ACD
     AC8 01F1      MOVW	R30,R2
     AC9 9184      LPM	R24,5(Z)
     ACA 3D89      CPI	R24,0xD9
     ACB F409      BNE	0x0ACD
(0588) 		{
(0589) 			break;
     ACC C01B      RJMP	0x0AE8
(0590) 		}
(0591)         	pic++;
     ACD 9180 017C LDS	R24,pic
     ACF 9190 017D LDS	R25,pic+1
     AD1 9601      ADIW	R24,1
     AD2 9390 017D STS	pic+1,R25
     AD4 9380 017C STS	pic,R24
     AD6 5F4F      SUBI	R20,0xFF
     AD7 4F5F      SBCI	R21,0xFF
     AD8 EF8A      LDI	R24,0xFA
     AD9 EF9F      LDI	R25,0xFF
     ADA E0A0      LDI	R26,0
     ADB E0B0      LDI	R27,0
     ADC 011A      MOVW	R2,R20
     ADD 2444      CLR	R4
     ADE FC37      SBRC	R3,7
     ADF 9440      COM	R4
     AE0 2455      CLR	R5
     AE1 FC47      SBRC	R4,7
     AE2 9450      COM	R5
     AE3 1628      CP	R2,R24
     AE4 0639      CPC	R3,R25
     AE5 064A      CPC	R4,R26
     AE6 065B      CPC	R5,R27
     AE7 F2BC      BLT	0x0ABF
(0592) 	}
(0593)     picLenth = i;
     AE8 9350 020C STS	picLenth+1,R21
     AEA 9340 020B STS	picLenth,R20
(0594) 
(0595)             receive_OK = 0;
     AEC 2422      CLR	R2
     AED 9220 021A STS	receive_OK,R2
(0596)             receive_ERROR = 0;  //删除旧图片
     AEF 9220 0214 STS	receive_ERROR,R2
(0597)             send_m_byte("at$fdel=\"*\"\r\n",13);
     AF1 E02D      LDI	R18,0xD
     AF2 E030      LDI	R19,0
     AF3 EA0A      LDI	R16,0xAA
     AF4 E010      LDI	R17,0
     AF5 DD12      RCALL	_send_m_byte
(0598)             while((receive_OK == 0) && (receive_ERROR == 0)) ;
     AF6 9020 021A LDS	R2,receive_OK
     AF8 2022      TST	R2
     AF9 F421      BNE	0x0AFE
     AFA 9020 0214 LDS	R2,receive_ERROR
     AFC 2022      TST	R2
     AFD F3C1      BEQ	0x0AF6
(0599) 			Delay(10);
     AFE E00A      LDI	R16,0xA
     AFF E010      LDI	R17,0
     B00 DF0A      RCALL	_Delay
(0600)             receive_ERROR  = 0;
     B01 2422      CLR	R2
     B02 9220 0214 STS	receive_ERROR,R2
(0601)             receive_DOWNFINE = 0;
     B04 9220 0216 STS	receive_DOWNFINE,R2
(0602) 			send_m_byte("at$fupl=\"test.jpg\"\r\n",21);        //下载图片
     B06 E125      LDI	R18,0x15
     B07 E030      LDI	R19,0
     B08 E905      LDI	R16,0x95
     B09 E010      LDI	R17,0
     B0A DCFD      RCALL	_send_m_byte
     B0B C00A      RJMP	0x0B16
(0603)             while (1)
(0604)             {
(0605)                 if(receive_DOWNFINE == 1)              //测试是否收到  Ok_Info_FileUploadStarted
     B0C 9180 0216 LDS	R24,receive_DOWNFINE
     B0E 3081      CPI	R24,1
     B0F F409      BNE	0x0B11
(0606)                 {
(0607)                     ;
(0608)                     break;
     B10 C006      RJMP	0x0B17
(0609)                 }
(0610)                 if(receive_ERROR == 1)                 //测试是否收到  ERROR
     B11 9180 0214 LDS	R24,receive_ERROR
     B13 3081      CPI	R24,1
     B14 F409      BNE	0x0B16
(0611)                 {
(0612)                     ;
(0613)                     break;
     B15 C001      RJMP	0x0B17
     B16 CFF5      RJMP	0x0B0C
(0614)                 }
(0615)             }
(0616)             receive_C = 0;  
     B17 2422      CLR	R2
     B18 9220 0218 STS	receive_C,R2
(0617) 			                           //测试是否收到  C
(0618)             while (receive_C == 0);			
     B1A 9020 0218 LDS	R2,receive_C
     B1C 2022      TST	R2
     B1D F3E1      BEQ	0x0B1A
(0619) 		    xmodedata = send_packet_data(test_pic1,picLenth);
FILE: <library>
     B1E 9120 020B LDS	R18,picLenth
     B20 9130 020C LDS	R19,picLenth+1
     B22 E504      LDI	R16,0x54
     B23 E010      LDI	R17,0
     B24 DD54      RCALL	_send_packet_data
     B25 9300 020D STS	xmodedata,R16
     B27 9159      LD	R21,Y+
     B28 9149      LD	R20,Y+
     B29 9508      RET
push_arg4:
     B2A 933A      ST	R19,-Y
     B2B 932A      ST	R18,-Y
push_arg2:
     B2C 931A      ST	R17,-Y
     B2D 930A      ST	R16,-Y
     B2E 9508      RET
pop_xgsetF0FC:
     B2F 90A9      LD	R10,Y+
     B30 90B9      LD	R11,Y+
     B31 90C9      LD	R12,Y+
     B32 90D9      LD	R13,Y+
     B33 90E9      LD	R14,Y+
     B34 90F9      LD	R15,Y+
     B35 9149      LD	R20,Y+
     B36 9159      LD	R21,Y+
     B37 9169      LD	R22,Y+
     B38 9179      LD	R23,Y+
     B39 9508      RET
push_xgsetF0FC:
     B3A 937A      ST	R23,-Y
     B3B 936A      ST	R22,-Y
push_xgset30FC:
     B3C 935A      ST	R21,-Y
     B3D 934A      ST	R20,-Y
push_xgset00FC:
     B3E 92FA      ST	R15,-Y
     B3F 92EA      ST	R14,-Y
push_xgset003C:
     B40 92DA      ST	R13,-Y
     B41 92CA      ST	R12,-Y
     B42 92BA      ST	R11,-Y
     B43 92AA      ST	R10,-Y
     B44 9508      RET
push_xgset303C:
     B45 935A      ST	R21,-Y
     B46 934A      ST	R20,-Y
     B47 92DA      ST	R13,-Y
     B48 92CA      ST	R12,-Y
     B49 92BA      ST	R11,-Y
     B4A 92AA      ST	R10,-Y
     B4B 9508      RET
pop_xgset303C:
     B4C 90A9      LD	R10,Y+
     B4D 90B9      LD	R11,Y+
     B4E 90C9      LD	R12,Y+
     B4F 90D9      LD	R13,Y+
     B50 9149      LD	R20,Y+
     B51 9159      LD	R21,Y+
     B52 9508      RET

⌨️ 快捷键说明

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