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

📄 timers.lss

📁 这是我在网上找到一个关于AVRX嵌入式操作系统在ATMAGE103上移植的例程,现在拿出来跟大学分享,希望大学喜欢呀!
💻 LSS
📖 第 1 页 / 共 5 页
字号:

Print16RegPre:
        rcall   PutCR
 530:	4f d0       	rcall	.+158    	; 0x5d0
        mov     p1l, Yl
 532:	8c 2f       	mov	r24, r28
        mov     p1h, Yh
 534:	9d 2f       	mov	r25, r29
        rcall   PutHexWord
 536:	e0 d0       	rcall	.+448    	; 0x6f8
        rjmp    PutSpace
 538:	4d c0       	rjmp	.+154    	; 0x5d4

0000053a <Print16Reg>:

Print16Reg:
        rcall   _PrintString
 53a:	4e d0       	rcall	.+156    	; 0x5d8
        ldi     Zl, 16
 53c:	e0 e1       	ldi	r30, 0x10	; 16
        mov     R1, Zl
 53e:	1e 2e       	mov	r1, r30

00000540 <p16r0>:
p16r0:
        ld      p1l, Y+
 540:	89 91       	ld	r24, Y+
        rcall   PutHexByte
 542:	dc d0       	rcall	.+440    	; 0x6fc
        rcall   PutSpace
 544:	47 d0       	rcall	.+142    	; 0x5d4
        dec     R1
 546:	1a 94       	dec	r1
        brne    p16r0
 548:	d9 f7       	brne	.-10     	; 0x540
        ret
 54a:	08 95       	ret

0000054c <GetByteWord>:
        _ENDFUNC
;-----------------------------------------------
; unsigned GetByteWord(void *)
;
; PASSED:       p1 = address
; RETURNS:      r1 = data
; USES:         MonFlags
;
        _FUNCTION(GetByteWord)
GetByteWord:
        sbrc    MonFlags, EEFLAG
 54c:	b1 fc       	sbrc	r11, 1
        rjmp    gbwEEPROM
 54e:	08 c0       	rjmp	.+16     	; 0x560

        mov     Zl, TempWl
 550:	ec 2d       	mov	r30, r12
        mov     Zh, TempWh
 552:	fd 2d       	mov	r31, r13

        ldd     r1l, Z+0
 554:	80 81       	ld	r24, Z
        sbrs    MonFlags, WORDFLAG
 556:	b0 fe       	sbrs	r11, 0
        ret
 558:	08 95       	ret

        ldd     r1h, Z+NextH
 55a:	91 81       	ldd	r25, Z+1	; 0x01
        ldd     r1l, Z+NextL
 55c:	80 81       	ld	r24, Z
        ret
 55e:	08 95       	ret

00000560 <gbwEEPROM>:
gbwEEPROM:                      // With new calls must preserve Z
        mov     p1h, TempWh
 560:	9d 2d       	mov	r25, r13
        mov     p1l, TempWl
 562:	8c 2d       	mov	r24, r12
        sbrs    MonFlags, WORDFLAG
 564:	b0 fe       	sbrs	r11, 0
        rcall   AvrXReadEEProm
 566:	24 d3       	rcall	.+1608   	; 0xbb0
        sbrc    MonFlags, WORDFLAG
 568:	b0 fc       	sbrc	r11, 0
        rcall   AvrXReadEEPromWord
 56a:	31 d3       	rcall	.+1634   	; 0xbce

0000056c <gwbEXIT>:
gwbEXIT:
        ret
 56c:	08 95       	ret

0000056e <PutByteWord>:
        _ENDFUNC
;
; void PutByteWord(unsigned, void *)
;
; Passed:       p1 - value
;               p2 - pointer
; Returned      void
; Uses          MonFlags (eeprom vs RAM)
;
        _FUNCTION(PutByteWord)
PutByteWord:
        sbrc    MonFlags, EEFLAG
 56e:	b1 fc       	sbrc	r11, 1
        rjmp    pbwEEPROM
 570:	08 c0       	rjmp	.+16     	; 0x582

        mov     Zl, TempWl
 572:	ec 2d       	mov	r30, r12
        mov     Zh, TempWh
 574:	fd 2d       	mov	r31, r13
        std     Z+0, p1l
 576:	80 83       	st	Z, r24
        sbrs    MonFlags, WORDFLAG
 578:	b0 fe       	sbrs	r11, 0
        ret
 57a:	08 95       	ret

        std     Z+NextH, p1h
 57c:	91 83       	std	Z+1, r25	; 0x01
        std     Z+NextL, p1l
 57e:	80 83       	st	Z, r24
        ret
 580:	08 95       	ret

00000582 <pbwEEPROM>:
pbwEEPROM:
        mov     TempB, p1h
 582:	e9 2e       	mov	r14, r25
        mov     p2l, p1l
 584:	68 2f       	mov	r22, r24
        mov     p1h, TempWh
 586:	9d 2d       	mov	r25, r13
        mov     p1l, TempWl
 588:	8c 2d       	mov	r24, r12
        rcall   AvrXWriteEEProm
 58a:	38 d3       	rcall	.+1648   	; 0xbfc
        sbrs    MonFlags, WORDFLAG
 58c:	b0 fe       	sbrs	r11, 0
        rjmp    pbwEXIT
 58e:	06 c0       	rjmp	.+12     	; 0x59c

        mov     p1l, TempWl
 590:	8c 2d       	mov	r24, r12
        mov     p1h, TempWh
 592:	9d 2d       	mov	r25, r13
        subi    p1l, lo8(-1)
 594:	8f 5f       	subi	r24, 0xFF	; 255
        sbci    p1h, hi8(-1)
 596:	9f 4f       	sbci	r25, 0xFF	; 255
        mov     p2l, TempB
 598:	6e 2d       	mov	r22, r14
        rcall   AvrXWriteEEProm
 59a:	30 d3       	rcall	.+1632   	; 0xbfc

0000059c <pbwEXIT>:
pbwEXIT:
        ret
 59c:	08 95       	ret

0000059e <PushChar>:
; by the next routine
;-
        _FUNCTION(PushChar)
PushChar:
        push    Xl
 59e:	af 93       	push	r26
        lds     Xl, SioFlags
 5a0:	a0 91 1e 01 	lds	r26, 0x011E
        sbr     Xl, 1<<CharPushed
 5a4:	a0 68       	ori	r26, 0x80	; 128
        sts     SioFlags, Xl
 5a6:	a0 93 1e 01 	sts	0x011E, r26
        pop     Xl
 5aa:	af 91       	pop	r26
        ret
 5ac:	08 95       	ret

000005ae <GetChar>:
        _ENDFUNC
;+
;------------------------------------------
; GetChar
;
; Need to make this draw from a buffer so that multiple
; chars can be pushed... and so different input streams
; can be attached to the buffer.
;-
        _FUNCTION(GetChar)
#ifdef  __IAR_SYSTEMS_ASM__
        PUBLIC  ?C_GETCHAR
?C_GETCHAR:     ; Need this label for simulator I/O
#endif
GetChar:
        lds     tmp0, SioFlags
 5ae:	20 91 1e 01 	lds	r18, 0x011E
        sbrs    tmp0, CharPushed
 5b2:	27 ff       	sbrs	r18, 7
        rjmp    gc00
 5b4:	05 c0       	rjmp	.+10     	; 0x5c0
        cbr     tmp0, 1<<CharPushed
 5b6:	2f 77       	andi	r18, 0x7F	; 127
        rjmp    gc01
 5b8:	06 c0       	rjmp	.+12     	; 0x5c6
        sts     SioFlags, tmp0
 5ba:	20 93 1e 01 	sts	0x011E, r18
        rjmp    gc01
 5be:	03 c0       	rjmp	.+6      	; 0x5c6

000005c0 <gc00>:
gc00:
        ldi     p1h, hi8(RxC_Flag)
 5c0:	91 e0       	ldi	r25, 0x01	; 1
        ldi     p1l, lo8(RxC_Flag)
 5c2:	80 e2       	ldi	r24, 0x20	; 32
        rcall   AvrXWaitSemaphore       ; Wait for a charactor, or flag from System
 5c4:	96 d1       	rcall	.+812    	; 0x8f2

000005c6 <gc01>:
gc01:
        lds     r1l, _RxByte
 5c6:	80 91 22 01 	lds	r24, 0x0122
        ret
 5ca:	08 95       	ret

000005cc <_GetChar>:
        _ENDFUNC
;+
;------------------------------------------
; _GetChar
;
; Special version that echos
;
; RETURNS:      RxByte (Register)
;-
        _FUNCTION(_GetChar)

_GetChar:
        rcall   GetChar
 5cc:	f0 df       	rcall	.-32     	; 0x5ae
        rjmp    PutChar
 5ce:	28 c0       	rjmp	.+80     	; 0x620

000005d0 <PutCR>:
        _ENDFUNC
;+
;------------------------------------------
;
; PutCR
;
; Put a CR to the output stream
;-
        _FUNCTION(PutCR)
PutCR:
        ldi     p1l, 0x0D
 5d0:	8d e0       	ldi	r24, 0x0D	; 13
        rjmp    PutChar
 5d2:	26 c0       	rjmp	.+76     	; 0x620

000005d4 <PutSpace>:
        _ENDFUNC
;+
;------------------------------------------
;
; PutSpace
;
; Put a space to the output stream
;-
        _FUNCTION(PutSpace)

PutSpace:
        ldi     p1l, ' '
 5d4:	80 e2       	ldi	r24, 0x20	; 32
        rjmp    PutChar
 5d6:	24 c0       	rjmp	.+72     	; 0x620

000005d8 <_PrintString>:
        _ENDFUNC
;+
;------------------------------------------
;
; const char * PutString(const char *)
;
; passed:
;       near pointer to string in FLASH memory
; Returns:
;       pointer to next char after NULL
;-
        _FUNCTION(_PrintString)

_PrintString:
        mov     Zl, p1l
 5d8:	e8 2f       	mov	r30, r24
        mov     Zh, p1h
 5da:	f9 2f       	mov	r31, r25

000005dc <_foo>:
_foo:
        lpm
 5dc:	c8 95       	lpm
        tst     R0
 5de:	00 20       	and	r0, r0
        breq    _ps00
 5e0:	41 f0       	breq	.+16     	; 0x5f2
        mov     p1l, R0
 5e2:	80 2d       	mov	r24, r0
        push    Zl
 5e4:	ef 93       	push	r30
        push    Zh
 5e6:	ff 93       	push	r31
        rcall   PutChar
 5e8:	1b d0       	rcall	.+54     	; 0x620
        pop     Zh
 5ea:	ff 91       	pop	r31
        pop     Zl
 5ec:	ef 91       	pop	r30
        adiw    Zl, 1
 5ee:	31 96       	adiw	r30, 0x01	; 1
        rjmp    _foo
 5f0:	f5 cf       	rjmp	.-22     	; 0x5dc

000005f2 <_ps00>:
_ps00:
        mov     r1l, Zl
 5f2:	8e 2f       	mov	r24, r30
        mov     r1h, Zh
 5f4:	9f 2f       	mov	r25, r31
        ret
 5f6:	08 95       	ret

000005f8 <InitSerialIO>:
        _ENDFUNC
;+
;-------------------------------------------
; void InitSerialIO(unsigned)
;
; PASSED:       R25:24 = UBBR
;		p1h:p1l = UBBR
;
; History: parameter used to be passed in R25 l.b. 1/31/01
;	   Changed to unsigned for mega chips. l.b. 5/30/02
;
        _FUNCTION(InitSerialIO)
InitSerialIO:
        out     _SFR_IO_ADDR(UBRR), p1l
 5f8:	89 b9       	out	0x09, r24	; 9
#if defined(UBRR0H)
	sts	UBRR0H, p1h	// THIS appears to be a no-op
#endif
#if defined(UCSR0C)
	ldi	tmp0, UCRC_INIT	// SET word length.
	sts	UCSR0C, tmp0	// Extended register in mega128
#endif
        ldi     tmp0, UCR_INIT
 5fa:	28 e9       	ldi	r18, 0x98	; 152
        out     _SFR_IO_ADDR(UCR), tmp0
 5fc:	2a b9       	out	0x0a, r18	; 10
        ret
 5fe:	08 95       	ret

00000600 <__vector_19>:
        _ENDFUNC
;
;-----------------------------------------------
; UDRE_Interrupt
;
; Disables the interrupt (UDR is empty) signal waiting
; process to stuff the UDR
;
        _FUNCTION(SIG_UART_DATA)
SIG_UART_DATA:
        cbi     _SFR_IO_ADDR(UCR), UDRIE      ; Disable the interrupt
 600:	55 98       	cbi	0x0a, 5	; 10

        rcall   IntProlog
 602:	7e d0       	rcall	.+252    	; 0x700

        ldi     p1l, lo8(TxIntFlag)
 604:	8c e1       	ldi	r24, 0x1C	; 28
        ldi     p1h, hi8(TxIntFlag)
 606:	91 e0       	ldi	r25, 0x01	; 1
        rcall   AvrXIntSetSemaphore     ; Signal we are ready for more.
 608:	95 d1       	rcall	.+810    	; 0x934

        rjmp    _Epilog
 60a:	d4 c0       	rjmp	.+424    	; 0x7b4

0000060c <__vector_18>:
        _ENDFUNC

;
;-----------------------------------------------
; RxC_Interrupt
;
; Reads the USART and flags UserTask, Char In semaphore
;
        _FUNCTION(SIG_UART_RECV)
SIG_UART_RECV:
        cbi     _SFR_IO_ADDR(UCR), RXCIE      ; disable interrupt
 60c:	57 98       	cbi	0x0a, 7	; 10

        rcall   IntProlog      ; Switch to kernel stack
 60e:	78 d0       	rcall	.+240    	; 0x700

        in      Xl, _SFR_IO_ADDR(UDR)
 610:	ac b1       	in	r26, 0x0c	; 12
        sts     _RxByte, Xl
 612:	a0 93 22 01 	sts	0x0122, r26

        ldi     p1h, hi8(RxC_Flag)
 616:	91 e0       	ldi	r25, 0x01	; 1
        ldi     p1l, lo8(RxC_Flag)
 618:	80 e2       	ldi	r24, 0x20	; 32
        rcall   AvrXIntSetSemaphore
 61a:	8c d1       	rcall	.+792    	; 0x934

        sbi     _SFR_IO_ADDR(UCR), RXCIE      ; Re-enable interrupts
 61c:	57 9a       	sbi	0x0a, 7	; 10
        rjmp    _Epilog
 61e:	ca c0       	rjmp	.+404    	; 0x7b4

00000620 <PutChar>:
        _ENDFUNC
;+
;------------------------------------------
; PutChar
;
; Passed: p1l "TxByte"
;
; Stuffs "TxByte" into usart.  The usart is double buffered.
; when the data register is full we wait on the semaphore
; until the Usart interrupts indicating the register is ready.
;-
        _FUNCTION(PutChar)
#ifdef __IAR_SYSTEMS_ASM__
        _PUBLIC(?C_PUTCHAR)     ; Enable terminal I/O
?C_PUTCHAR:
#endif
PutChar:
        sbic    _SFR_IO_ADDR(USR), UDRE
 620:	5d 99       	sbic	0x0b, 5	; 11
        rjmp    pc00
 622:	06 c0       	rjmp	.+12     	; 0x630

        push    p1l
 624:	8f 93       	push	r24
        sbi     _SFR_IO_ADDR(UCR), UDRIE      ; Enable interrupts and
 626:	55 9a       	sbi	0x0a, 5	; 10
        ldi     p1l, lo8(TxIntFlag)
 628:	8c e1       	ldi	r24, 0x1C	; 28
        ldi     p1h, hi8(TxIntFlag)
 62a:	91 e0       	ldi	r25, 0x01	; 1
        rcall   AvrXWaitSemaphore; Wait until data register is ready
 62c:	62 d1       	rcall	.+708    	; 0x8f2
        pop     p1l
 62e:	8f 91       	pop	r24

00000630 <pc00>:

⌨️ 快捷键说明

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