📄 www8051.asm
字号:
.nolist.include "param.inc".include "8019.inc".list.if (MAGIC ^ (VERSION+7)) .print "Invalid ACTIVESTACK/DUALSTACK/SERIAL setings" .err.endif.include "ether.inc".include "ip.inc" .global stack; "SMTP" .global STACK1MODE .equ STACK1MODE, RESENDMODE .global ETHRETRY1 .equ ETHRETRY1, 5*50 ; timeout = 50 s .global PORT1 ; local port .equ PORT1, 25 .global PORT3 ; remote port .equ PORT3, 25 .text .global open_stack1 .global process_stack1 .global close_stack1process_stack1: ljmp smtpclose_stack1: ljmp closeSMTPopen_stack1: ljmp openSMTP.ifdef DUALSTACK; "dummy" .global STACK2MODE .equ STACK2MODE, NORESENDMODE .global ETHRETRY2 .equ ETHRETRY2, 5*2 ; timeout = 2 s .global PORT2 ; local port .equ PORT2, 25 .text .global open_stack2 .global process_stack2 .global close_stack2open_stack2:process_stack2:close_stack2: ret.endif .rdata.global data_addr.global data_len.global unwrited.global state80data_addr: .ds 1 ;start of data in TCP packetdata_len: .ds 1 ;length of data in TCP packetunwrited: .ds.b 1 ;unwrited data lengthstate80: .ds.b 1;;PCODE DATA.global chkacc, chklen, chkaddr.global pcodeMSB, pcodeLSBchkacc: .ds 1chklen: .ds 1chkaddr: .ds 1pcodeMSB: .ds.b 1pcodeLSB: .ds.b 1;PACKET DRIVER.global next_packet, curr_recv, curpagenext_packet: .ds.b 1curr_recv: .ds.b 1curpage: .ds.b 1;LIBK.global workregworkreg: .ds 2;WEB51.global slowtimerslowtimer: .ds.b 1;;#########################################################; Main Loop;#########################################################; .section fast, #alloc;************************************************************* jnb rxint,noTrigger ;if missing trigger, don't send mail lcall getchar ;get trigger cjne A,#'M',noTrigger ;test for trigger char lcall OutStrg .asciz "\r\nMAIL\r\n" mov r7,#LASTSTACK1 lcall changeStack mov a,tcpState jnz noTrigger ;if Connect Established, don't make new mov r7,#'0' lcall sendSMTPnoTrigger: .section slow, #alloc;*************************************************************;; SMTP timer;~50 ms loop mov a,Retry1 jz no25 dec Timeout1 mov a,Timeout1 jnz no25;~200 ms loop mov Timeout1,#ethtiming dec Retry1 mov a,Retry1 jz kill25 lcall RetryTCP1 ajmp no25kill25: lcall CloseTCP1 lcall closeSMTPno25: .section one_times, #alloc lcall OutStrg .asciz "*** Ready ***\r\n" ;; END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -