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

📄 test.lss

📁 在M16上动行的Small RTOS
💻 LSS
📖 第 1 页 / 共 5 页
字号:
 338:	19 f4       	brne	.+6      	; 0x340 <OSTimeTick+0x20>
            {
                OSIntSendSignal(i);
 33a:	81 2f       	mov	r24, r17
 33c:	0e 94 95 00 	call	0x12a <OSIntSendSignal>
 340:	1f 5f       	subi	r17, 0xFF	; 255
 342:	21 96       	adiw	r28, 0x01	; 1
 344:	10 31       	cpi	r17, 0x10	; 16
 346:	90 f3       	brcs	.-28     	; 0x32c <OSTimeTick+0xc>
 348:	df 91       	pop	r29
 34a:	cf 91       	pop	r28
 34c:	1f 91       	pop	r17
 34e:	08 95       	ret

00000350 <OSWait>:
            }
        }
    }
}

/*********************************************************************************************************
** 函数名称: OSWait
** 功能描述: 系统等待函数,任务调用此函数可以等待一定时间或信号
** 输 入: typ: 等待事件类型,目前可以取以下值,或是其中任意个值的按位或
**             K_SIG: 等待信号
**             K_TMO: 等待超时
**        ticks : 等待超时时的系统嘀嗒数
** 输 出 : NOT_OK : 参数错误
**         TMO_EVENT : 超时到
**         SIG_EVENT : 有信号
** 全局变量: OSWaitTick
** 调用模块: OSClearSignal
**
** 作 者: 陈明计
** 日 期: 2002年6月20日
**-------------------------------------------------------------------------------------------------------
** 修改人: 陈明计
** 日 期: 2002年9月1日
**-------------------------------------------------------------------------------------------------------
** 修改人: 陈明计
** 日 期: 2002年9月4日
**------------------------------------------------------------------------------------------------------
** 修改人: 陈明计
** 日 期: 2002年9月9日
**------------------------------------------------------------------------------------------------------
** 修改人: 陈明计
** 日 期: 2002年10月9日
**------------------------------------------------------------------------------------------------------
** 修改人: 陈明计
** 日 期: 2002年12月2日
**------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        uint8 OSWait(uint8 typ, uint8 ticks)

{
    OSWaitTick[OSTaskID] = ticks;               /* 设置超时时间         */
 350:	20 91 ab 00 	lds	r18, 0x00AB
 354:	e2 2f       	mov	r30, r18
 356:	ff 27       	eor	r31, r31
 358:	e3 55       	subi	r30, 0x53	; 83
 35a:	ff 4f       	sbci	r31, 0xFF	; 255
 35c:	60 83       	st	Z, r22
                                                /* 可以优化寄存器的使用  */
    switch(typ)
 35e:	99 27       	eor	r25, r25
 360:	82 30       	cpi	r24, 0x02	; 2
 362:	91 05       	cpc	r25, r1
 364:	81 f0       	breq	.+32     	; 0x386 <OSWait+0x36>
 366:	83 30       	cpi	r24, 0x03	; 3
 368:	91 05       	cpc	r25, r1
 36a:	1c f4       	brge	.+6      	; 0x372 <OSWait+0x22>
 36c:	01 97       	sbiw	r24, 0x01	; 1
 36e:	21 f0       	breq	.+8      	; 0x378 <OSWait+0x28>
 370:	53 c0       	rjmp	.+166    	; 0x418 <OSWait+0xc8>
 372:	03 97       	sbiw	r24, 0x03	; 3
 374:	39 f1       	breq	.+78     	; 0x3c4 <OSWait+0x74>
 376:	50 c0       	rjmp	.+160    	; 0x418 <OSWait+0xc8>
    {
    case K_SIG:                                 /* 等待信号,即挂起自己  */
        OSWaitTick[OSTaskID] = 0;               /* 没有超时处理         */
 378:	10 82       	st	Z, r1
        OSClearSignal(OSTaskID);                /* 任务进入等待状态     */
 37a:	82 2f       	mov	r24, r18
 37c:	0e 94 d3 00 	call	0x1a6 <OSClearSignal>
        OSSched();                              /* 运行下一个任务       */
 380:	0e 94 16 01 	call	0x22c <OSSched>
 384:	43 c0       	rjmp	.+134    	; 0x40c <OSWait+0xbc>
        return SIG_EVENT;
    case K_TMO:                                 /* 等待超时,即延时一段时间 */
        OS_ENTER_CRITICAL();
 386:	f8 94       	cli
 388:	80 91 a9 00 	lds	r24, 0x00A9
 38c:	8f 5f       	subi	r24, 0xFF	; 255
 38e:	80 93 a9 00 	sts	0x00A9, r24
        while (OSWaitTick[OSTaskID] != 0)       /* 判断超时时间是否到   */
        {
            OSClearSignal(OSTaskID);            /* 任务进入等待状态     */
            OSSched();                          /* 运行下一个任务       */
 392:	92 2f       	mov	r25, r18
 394:	e9 2f       	mov	r30, r25
 396:	ff 27       	eor	r31, r31
 398:	e3 55       	subi	r30, 0x53	; 83
 39a:	ff 4f       	sbci	r31, 0xFF	; 255
 39c:	80 81       	ld	r24, Z
 39e:	88 23       	and	r24, r24
 3a0:	41 f0       	breq	.+16     	; 0x3b2 <OSWait+0x62>
 3a2:	89 2f       	mov	r24, r25
 3a4:	0e 94 d3 00 	call	0x1a6 <OSClearSignal>
 3a8:	0e 94 16 01 	call	0x22c <OSSched>
 3ac:	90 91 ab 00 	lds	r25, 0x00AB
 3b0:	f1 cf       	rjmp	.-30     	; 0x394 <OSWait+0x44>
        }
        OS_EXIT_CRITICAL();
 3b2:	80 91 a9 00 	lds	r24, 0x00A9
 3b6:	81 50       	subi	r24, 0x01	; 1
 3b8:	80 93 a9 00 	sts	0x00A9, r24
 3bc:	88 23       	and	r24, r24
 3be:	49 f5       	brne	.+82     	; 0x412 <OSWait+0xc2>
 3c0:	78 94       	sei
 3c2:	27 c0       	rjmp	.+78     	; 0x412 <OSWait+0xc2>
        return TMO_EVENT;
    case (K_TMO | K_SIG):                       /* 等待信号(挂起自己)直到超时  */
                                                /* 别的任务或中断可以恢复它 */
        OS_ENTER_CRITICAL();
 3c4:	f8 94       	cli
 3c6:	80 91 a9 00 	lds	r24, 0x00A9
 3ca:	8f 5f       	subi	r24, 0xFF	; 255
 3cc:	80 93 a9 00 	sts	0x00A9, r24
        if (OSWaitTick[OSTaskID] == 0)          /* 判断超时时间是否到   */
 3d0:	e2 2f       	mov	r30, r18
 3d2:	ff 27       	eor	r31, r31
 3d4:	e3 55       	subi	r30, 0x53	; 83
 3d6:	ff 4f       	sbci	r31, 0xFF	; 255
 3d8:	80 81       	ld	r24, Z
 3da:	88 23       	and	r24, r24
 3dc:	d1 f0       	breq	.+52     	; 0x412 <OSWait+0xc2>
        {
            return TMO_EVENT;
        }
        OSClearSignal(OSTaskID);                /* 任务进入等待状态     */
 3de:	82 2f       	mov	r24, r18
 3e0:	0e 94 d3 00 	call	0x1a6 <OSClearSignal>
        OS_EXIT_CRITICAL();
 3e4:	80 91 a9 00 	lds	r24, 0x00A9
 3e8:	81 50       	subi	r24, 0x01	; 1
 3ea:	80 93 a9 00 	sts	0x00A9, r24
 3ee:	88 23       	and	r24, r24
 3f0:	09 f4       	brne	.+2      	; 0x3f4 <OSWait+0xa4>
 3f2:	78 94       	sei
        OSSched();                              /* 运行下一个任务       */
 3f4:	0e 94 16 01 	call	0x22c <OSSched>
        if (OSWaitTick[OSTaskID] != 0)
 3f8:	80 91 ab 00 	lds	r24, 0x00AB
 3fc:	e8 2f       	mov	r30, r24
 3fe:	ff 27       	eor	r31, r31
 400:	e3 55       	subi	r30, 0x53	; 83
 402:	ff 4f       	sbci	r31, 0xFF	; 255
 404:	80 81       	ld	r24, Z
 406:	88 23       	and	r24, r24
 408:	21 f0       	breq	.+8      	; 0x412 <OSWait+0xc2>
        {
            OSWaitTick[OSTaskID] = 0;
 40a:	10 82       	st	Z, r1
            return SIG_EVENT;
 40c:	84 e0       	ldi	r24, 0x04	; 4
 40e:	90 e0       	ldi	r25, 0x00	; 0
 410:	08 95       	ret
        }
        return TMO_EVENT;
 412:	88 e0       	ldi	r24, 0x08	; 8
 414:	90 e0       	ldi	r25, 0x00	; 0
 416:	08 95       	ret
    default:
        OSWaitTick[OSTaskID] = 0;
 418:	e2 2f       	mov	r30, r18
 41a:	ff 27       	eor	r31, r31
 41c:	e3 55       	subi	r30, 0x53	; 83
 41e:	ff 4f       	sbci	r31, 0xFF	; 255
 420:	10 82       	st	Z, r1
        return NOT_OK;
 422:	8f ef       	ldi	r24, 0xFF	; 255
 424:	90 e0       	ldi	r25, 0x00	; 0
    }
}
 426:	08 95       	ret

00000428 <OSCtxSw>:
 428:	0f 92       	push	r0
 42a:	1f 92       	push	r1
 42c:	2f 92       	push	r2
 42e:	3f 92       	push	r3
 430:	4f 92       	push	r4
 432:	5f 92       	push	r5
 434:	6f 92       	push	r6
 436:	7f 92       	push	r7
 438:	8f 92       	push	r8
 43a:	9f 92       	push	r9
 43c:	af 92       	push	r10
 43e:	bf 92       	push	r11
 440:	cf 92       	push	r12
 442:	df 92       	push	r13
 444:	ef 92       	push	r14
 446:	ff 92       	push	r15
 448:	0f 93       	push	r16
 44a:	1f 93       	push	r17
 44c:	cf 93       	push	r28
 44e:	df 93       	push	r29
 450:	80 91 a9 00 	lds	r24, 0x00A9
 454:	8f 93       	push	r24
 456:	8f b7       	in	r24, 0x3f	; 63
 458:	8f 93       	push	r24
 45a:	6d b6       	in	r6, 0x3d	; 61
 45c:	7e b6       	in	r7, 0x3e	; 62
 45e:	43 01       	movw	r8, r6
 460:	80 91 aa 00 	lds	r24, 0x00AA
 464:	28 2f       	mov	r18, r24
 466:	33 27       	eor	r19, r19
 468:	c9 01       	movw	r24, r18
 46a:	82 0f       	add	r24, r18
 46c:	93 1f       	adc	r25, r19
 46e:	fc 01       	movw	r30, r24
 470:	e9 5e       	subi	r30, 0xE9	; 233
 472:	fc 4f       	sbci	r31, 0xFC	; 252
 474:	c0 80       	ld	r12, Z
 476:	d1 80       	ldd	r13, Z+1	; 0x01
 478:	80 91 ab 00 	lds	r24, 0x00AB
 47c:	28 2f       	mov	r18, r24
 47e:	33 27       	eor	r19, r19
 480:	c9 01       	movw	r24, r18
 482:	82 0f       	add	r24, r18
 484:	93 1f       	adc	r25, r19
 486:	fc 01       	movw	r30, r24
 488:	e9 5e       	subi	r30, 0xE9	; 233
 48a:	fc 4f       	sbci	r31, 0xFC	; 252
 48c:	a0 80       	ld	r10, Z
 48e:	b1 80       	ldd	r11, Z+1	; 0x01
 490:	24 01       	movw	r4, r8
 492:	4a 18       	sub	r4, r10
 494:	5b 08       	sbc	r5, r11
 496:	80 91 ab 00 	lds	r24, 0x00AB
 49a:	90 91 aa 00 	lds	r25, 0x00AA
 49e:	89 17       	cp	r24, r25
 4a0:	08 f0       	brcs	.+2      	; 0x4a4 <OSCtxSw_1>
 4a2:	3a c0       	rjmp	.+116    	; 0x518 <OSCtxSw_5>

000004a4 <OSCtxSw_1>:
 4a4:	ac 14       	cp	r10, r12
 4a6:	bd 04       	cpc	r11, r13
 4a8:	59 f0       	breq	.+22     	; 0x4c0 <OSCtxSw_2>
 4aa:	f4 01       	movw	r30, r8
 4ac:	d5 01       	movw	r26, r10
 4ae:	8c 91       	ld	r24, X
 4b0:	80 83       	st	Z, r24
 4b2:	08 94       	sec
 4b4:	81 08       	sbc	r8, r1
 4b6:	91 08       	sbc	r9, r1
 4b8:	08 94       	sec
 4ba:	a1 08       	sbc	r10, r1
 4bc:	b1 08       	sbc	r11, r1
 4be:	f2 cf       	rjmp	.-28     	; 0x4a4 <OSCtxSw_1>

000004c0 <OSCtxSw_2>:
 4c0:	24 01       	movw	r4, r8
 4c2:	4a 18       	sub	r4, r10
 4c4:	5b 08       	sbc	r5, r11
 4c6:	80 91 ab 00 	lds	r24, 0x00AB
 4ca:	28 2e       	mov	r2, r24
 4cc:	23 94       	inc	r2

000004ce <OSCtxSw_3>:
 4ce:	22 2d       	mov	r18, r2
 4d0:	33 27       	eor	r19, r19
 4d2:	80 91 aa 00 	lds	r24, 0x00AA
 4d6:	99 27       	eor	r25, r25
 4d8:	01 96       	adiw	r24, 0x01	; 1
 4da:	28 17       	cp	r18, r24
 4dc:	39 07       	cpc	r19, r25
 4de:	94 f4       	brge	.+36     	; 0x504 <OSCtxSw_4>
 4e0:	22 2d       	mov	r18, r2
 4e2:	33 27       	eor	r19, r19
 4e4:	c9 01       	movw	r24, r18
 4e6:	82 0f       	add	r24, r18
 4e8:	93 1f       	adc	r25, r19
 4ea:	dc 01       	movw	r26, r24
 4ec:	ab 5e       	subi	r26, 0xEB	; 235
 4ee:	bc 4f       	sbci	r27, 0xFC	; 252
 4f0:	fd 01       	movw	r30, r26
 4f2:	80 81       	ld	r24, Z
 4f4:	91 81       	ldd	r25, Z+1	; 0x01
 4f6:	84 0d       	add	r24, r4
 4f8:	95 1d       	adc	r25, r5
 4fa:	11 96       	adiw	r26, 0x01	; 1
 4fc:	9c 93       	st	X, r25
 4fe:	8e 93       	st	-X, r24
 500:	23 94       	inc	r2
 502:	e5 cf       	rjmp	.-54     	; 0x4ce <OSCtxSw_3>

00000504 <OSCtxSw_4>:
 504:	80 91 aa 00 	lds	r24, 0x00AA
 508:	80 93 ab 00 	sts	0x00AB, r24
 50c:	0f b6       	in	r0, 0x3f	; 63
 50e:	f8 94       	cli
 510:	9e be       	out	0x3e, r9	; 62
 512:	0f be       	out	0x3f, r0	; 63
 514:	8d be       	out	0x3d, r8	; 61
 516:	48 c0       	rjmp	.+144    	; 0x5a8 <OSCtxSw_11>

00000518 <OSCtxSw_5>:
 518:	90 91 aa 00 	lds	r25, 0x00AA
 51c:	80 91 ab 00 	lds	r24, 0x00AB
 520:	98 17       	cp	r25, r24
 522:	08 f0       	brcs	.+2      	; 0x526 <OSCtxSw_6>
 524:	3a c0       	rjmp	.+116    	; 0x59a <OSCtxSw_10>

00000526 <OSCtxSw_6>:
 526:	8c 14       	cp	r8, r12
 528:	9d 04       	cpc	r9, r13
 52a:	59 f0       	breq	.+22     	; 0x542 <OSCtxSw_7>
 52c:	08 94       	sec
 52e:	a1 1c       	adc	r10, r1
 530:	b1 1c       	adc	r11, r1
 532:	f5 01       	movw	r30, r10
 534:	08 94       	sec
 536:	81 1c       	adc	r8, r1
 538:	91 1c       	adc	r9, r1
 53a:	d4 01       	movw	r26, r8
 53c:	8c 91       	ld	r24, X
 53e:	80 83       	st	Z, r24
 540:	f2 cf       	rjmp	.-28     	; 0x526 <OSCtxSw_6>

00000542 <OSCtxSw_7>:
 542:	24 01       	movw	r4, r8
 544:	4a 18       	sub	r4, r10
 546:	5b 08       	sbc	r5, r11
 548:	80 91 aa 00 	lds	r24, 0x00AA
 54c:	28 2e       	mov	r2, r24
 54e:	23 94       	inc	r2

00000550 <OSCtxSw_8>:
 550:	22 2d       	mov	r18, r2
 552:	33 27       	eor	r19, r19
 554:	80 91 ab 00 	lds	r24, 0x00AB
 558:	99 27       	eor	r25, r25
 55a:	01 96       	adiw	r24, 0x01	; 1
 55c:	28 17       	cp	r18, r24
 55e:	39 07       	cpc	r19, r25
 560:	94 f4       	brge	.+36     	; 0x586 <OSCtxSw_9>
 562:	22 2d       	mov	r18, r2
 564:	33 27       	eor	r19, r19
 566:	c9 01       	movw	r24, r18
 568:	82 0f       	add	r24, r18
 56a:	93 1f       	adc	r25, r19
 56c:	dc 01       	movw	r26, r24
 56e:	ab 5e       	subi	r26, 0xEB	; 235
 570:	bc 4f       	sbci	r27, 0xFC	; 252
 572:	fd 01       	movw	r30, r26
 574:	80 81       	ld	r24, Z
 576:	91 81       	ldd	r25, Z+1	; 0x01
 578:	84 19       	sub	r24, r4
 57a:	95 09       	sbc	r25, r5
 57c:	11 96       	adiw	r26, 0x01	; 1
 57e:	9c 93       	st	X, r25
 580:	8e 93       	st	-X, r24
 582:	23 94       	inc	r2
 584:	e5 cf       	rjmp	.-54     	; 0x550 <OSCtxSw_8>

00000586 <OSCtxSw_9>:
 586:	80 91 aa 00 	lds	r24, 0x00AA
 58a:	80 93 ab 00 	sts	0x00AB, r24
 58e:	0f b6       	in	r0, 0x3f	; 63
 590:	f8 94       	cli
 592:	9e be       	out	0x3e, r9	; 62
 594:	0f be       	out	0x3f, r0	; 63
 596:	8d be       	out	0x3d, r8	; 61
 598:	07 c0       	rjmp	.+14     	; 0x5a8 <OSCtxSw_11>

0000059a <OSCtxSw_10>:
 59a:	0f b6       	in	r0, 0x3f	; 63
 59c:	f8 94       	cli
 59e:	7e be       	out	0x3e, r7	; 62

⌨️ 快捷键说明

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