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

📄 input_timeout.asm

📁 ASM code for sine inverter
💻 ASM
字号:
;Timeout Waiting For Input Data, using Timer 0 with simple polling;http://www.pjrc.com/tech/8051/board4/timers.html;This examples demonstrates how to use Timer 0 to implement a;simple timeout while waiting for input data.  This simple example;waits for the user to type 10 characters.  The timeout for the ;first character is 5 seconds, and then 1 second for each character;thereafter.  If the user does not respond within this time, a;timeout message is printed..equ    cout, 0x0030            ;Send Acc to serial port.equ    cin, 0x0032             ;Get Acc from serial port.equ    phex, 0x0034            ;Print Hex value of Acc.equ    pstr, 0x0038            ;Print string pointed to by DPTR,.equ    esc, 0x003E             ;Check for ESC key.equ    newline, 0x0048         ;print CR/LF (13 and 10)	.org	0x2000begin:	mov	r0, #0		;r0 counts number of bytes received	clr	tr0		;make sure timer 0 is stopped	clr	tf0		;clear the overflow flag	anl	tmod, #0xF0		orl	tmod, #0x01	;set to mode 1 (without touching timer 1)	mov	tl0, #0	mov	th0, #0		;clear the timer 0 value	mov	r2, #140	;140 overflows is 5 seconds	mov	dptr, #msg_begin	lcall	pstr	setb	tr0		;start the timingwaiting_loop:	jb	ri, get_input	;did we receive another byte ??	jnb	tf0, waiting_loop ;did timer 0 overflow?	clr	tf0	 ;mov	a, r2		;uncomment to "see" the countdown	 ;lcall	phex	djnz	r2, waiting_looptimeout:	mov	dptr, #msg_timeout	lcall	pstr	sjmp	endingget_input:	lcall	cin		;get the user input	lcall	cout		;echo it back to their screen	mov	r2, #28		;reset timeout to 1 second	inc	r0	cjne	r0, #10, waiting_loopgot_all_input:	mov	dptr, #msg_ok	lcall	pstrending:	mov	dptr, #msg_end	lcall	pstr	lcall	cin	ljmp	0msg_begin:	.db	13,10,13,10	.db	"        Timeout Waiting For Input Data",13,10,13,10	.db	"Please type 10 characters, before it's too late.....",13,10,0msg_timeout:	.db	13,10,13,10,"Timeout: Waited too long.",0msg_ok:	.db	13,10,13,10,"Ok: All 10 characters received within the allowed time.",0msg_end:	.db	13,10,13,10,"Press a key to reboot",0

⌨️ 快捷键说明

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