📄 xmodem.lst
字号:
(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 + -