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

📄 test.lss

📁 rtos 是atmega单片机用的实时系统
💻 LSS
📖 第 1 页 / 共 5 页
字号:
 636:	92 2f       	mov	r25, r18
 638:	90 95       	com	r25
 63a:	82 81       	ldd	r24, Z+2	; 0x02
 63c:	89 23       	and	r24, r25
 63e:	82 83       	std	Z+2, r24	; 0x02
 640:	22 2a       	or	r2, r18
 642:	0f 90       	pop	r0
 644:	0f be       	out	0x3f, r0	; 63
 646:	11 24       	eor	r1, r1
 648:	09 c0       	rjmp	.+18     	; 0x65c
 64a:	fc 01       	movw	r30, r24
 64c:	ee 0f       	add	r30, r30
 64e:	ff 1f       	adc	r31, r31
 650:	e8 0f       	add	r30, r24
 652:	f9 1f       	adc	r31, r25
 654:	ee 58       	subi	r30, 0x8E	; 142
 656:	fd 4f       	sbci	r31, 0xFD	; 253
 658:	81 e0       	ldi	r24, 0x01	; 1
 65a:	81 83       	std	Z+1, r24	; 0x01
 65c:	df 91       	pop	r29
 65e:	cf 91       	pop	r28
 660:	08 95       	ret

00000662 <OSTaskSemPost>:
 662:	a8 df       	rcall	.-176    	; 0x5b4
 664:	dd de       	rcall	.-582    	; 0x420
 666:	08 95       	ret

00000668 <OSSemClean>:
 668:	99 27       	eor	r25, r25
 66a:	fc 01       	movw	r30, r24
 66c:	ee 0f       	add	r30, r30
 66e:	ff 1f       	adc	r31, r31
 670:	e8 0f       	add	r30, r24
 672:	f9 1f       	adc	r31, r25
 674:	ee 58       	subi	r30, 0x8E	; 142
 676:	fd 4f       	sbci	r31, 0xFD	; 253
 678:	11 82       	std	Z+1, r1	; 0x01
 67a:	08 95       	ret

0000067c <TCN0Init>:
 67c:	13 be       	out	0x33, r1	; 51
 67e:	83 b7       	in	r24, 0x33	; 51
 680:	85 60       	ori	r24, 0x05	; 5
 682:	83 bf       	out	0x33, r24	; 51
 684:	89 b7       	in	r24, 0x39	; 57
 686:	81 60       	ori	r24, 0x01	; 1
 688:	89 bf       	out	0x39, r24	; 57
 68a:	87 eb       	ldi	r24, 0xB7	; 183
 68c:	82 bf       	out	0x32, r24	; 50
 68e:	08 95       	ret

00000690 <OSIntEnter>:
}
/************************************************************************************************************************
函数名称:	OSIntEnter
函数原型:	void OSIntEnter(void)
函数功能:	进入中断时调用此函数
入口参数:	无
出口参数:	无
有关说明:	
创建时间:	2007年3月7日
修改时间:	
************************************************************************************************************************/
void OSIntEnter(void)
{
	OS_ENTER_CRITICAL();
 690:	0f b6       	in	r0, 0x3f	; 63
 692:	0f 92       	push	r0
 694:	11 24       	eor	r1, r1
 696:	f8 94       	cli
	if(OSIntNesting<255)
 698:	8f ef       	ldi	r24, 0xFF	; 255
 69a:	48 12       	cpse	r4, r24
	{
		OSIntNesting++;     				/*中断嵌套加1			*/
 69c:	43 94       	inc	r4
	}
	OS_EXIT_CRITICAL();
 69e:	0f 90       	pop	r0
 6a0:	0f be       	out	0x3f, r0	; 63
 6a2:	11 24       	eor	r1, r1
 6a4:	08 95       	ret

000006a6 <OSIntExit>:
}
/************************************************************************************************************************
函数名称:	OSIntExit
函数原型:	void OSIntExit(void)
函数功能:	从中断中退出时调用此函数,如果中断让更高优先级的任务就绪就进行任务调度
入口参数:	无
出口参数:	无
有关说明:	OSIntEnter()和OSIntExit()要成对出现使用
创建时间:	2007年3月7日
修改时间:	
************************************************************************************************************************/
void OSIntExit(void)
{
	OS_ENTER_CRITICAL();
 6a6:	0f b6       	in	r0, 0x3f	; 63
 6a8:	0f 92       	push	r0
 6aa:	11 24       	eor	r1, r1
 6ac:	f8 94       	cli
	if(OSIntNesting>0)
 6ae:	41 10       	cpse	r4, r1
	{
		OSIntNesting--;     				/*中断嵌套减1			*/
 6b0:	4a 94       	dec	r4
	}
	if(OSIntNesting == 0)
 6b2:	44 20       	and	r4, r4
 6b4:	41 f4       	brne	.+16     	; 0x6c6
	{
		OSFindPrioHighRdy();				/*找出就绪表中优先级最高的任务*/
 6b6:	a1 de       	rcall	.-702    	; 0x3fa
		if(OSPrioHighRdy != OSPrioCur)
 6b8:	53 14       	cp	r5, r3
 6ba:	29 f0       	breq	.+10     	; 0x6c6
		{
			OS_EXIT_CRITICAL();
 6bc:	0f 90       	pop	r0
 6be:	0f be       	out	0x3f, r0	; 63
 6c0:	11 24       	eor	r1, r1
			IntSwitch();					/*进行任务调度	*/
 6c2:	8f de       	rcall	.-738    	; 0x3e2
			return;
 6c4:	08 95       	ret
		}
	}
	OS_EXIT_CRITICAL();
 6c6:	0f 90       	pop	r0
 6c8:	0f be       	out	0x3f, r0	; 63
 6ca:	11 24       	eor	r1, r1
 6cc:	08 95       	ret
 6ce:	08 95       	ret

000006d0 <__vector_9>:
}

/************************************************************************************************************************
函数名称:	SIGNAL(SIG_OVERFLOW0)
函数原型:	SIGNAL(SIG_OVERFLOW0)
函数功能:	定时器0溢出中断处理
入口参数:	无
出口参数:	无
有关说明:	用来为需要延时的任务进行任务延时
创建时间:	2007年3月3日
修改时间:	
************************************************************************************************************************/
SIGNAL(SIG_OVERFLOW0)
{
 6d0:	1f 92       	push	r1
 6d2:	0f 92       	push	r0
 6d4:	0f b6       	in	r0, 0x3f	; 63
 6d6:	0f 92       	push	r0
 6d8:	11 24       	eor	r1, r1
 6da:	2f 93       	push	r18
 6dc:	3f 93       	push	r19
 6de:	4f 93       	push	r20
 6e0:	5f 93       	push	r21
 6e2:	6f 93       	push	r22
 6e4:	7f 93       	push	r23
 6e6:	8f 93       	push	r24
 6e8:	9f 93       	push	r25
 6ea:	af 93       	push	r26
 6ec:	bf 93       	push	r27
 6ee:	ef 93       	push	r30
 6f0:	ff 93       	push	r31
	OSIntEnter();
 6f2:	ce df       	rcall	.-100    	; 0x690
 6f4:	61 e0       	ldi	r22, 0x01	; 1
 6f6:	70 e0       	ldi	r23, 0x00	; 0
 6f8:	e5 e6       	ldi	r30, 0x65	; 101
 6fa:	f0 e0       	ldi	r31, 0x00	; 0
 6fc:	20 e0       	ldi	r18, 0x00	; 0
 6fe:	30 e0       	ldi	r19, 0x00	; 0
 700:	43 e0       	ldi	r20, 0x03	; 3
    char usage;
	
	Uint_8bit i;//uh,ul;
	for(i=0;i < OS_TASKS;i++)				/*刷新各任务时钟		*/
	{
		if(TCB[i].OSWaitTick && (TCB[i].OSWaitTick != 0xffff))
 702:	82 81       	ldd	r24, Z+2	; 0x02
 704:	93 81       	ldd	r25, Z+3	; 0x03
 706:	00 97       	sbiw	r24, 0x00	; 0
 708:	c9 f0       	breq	.+50     	; 0x73c
 70a:	5f ef       	ldi	r21, 0xFF	; 255
 70c:	8f 3f       	cpi	r24, 0xFF	; 255
 70e:	95 07       	cpc	r25, r21
 710:	a9 f0       	breq	.+42     	; 0x73c
		{
			TCB[i].OSWaitTick--;
 712:	01 97       	sbiw	r24, 0x01	; 1
 714:	82 83       	std	Z+2, r24	; 0x02
 716:	93 83       	std	Z+3, r25	; 0x03
			if(TCB[i].OSWaitTick == 0)		/*当任务时钟到时,必须是由定时器减时的才行*/
 718:	89 2b       	or	r24, r25
 71a:	81 f4       	brne	.+32     	; 0x73c
			{
				OSRdyTbl |= (0x01<<i);		/*使任务可以重新运行	*/
 71c:	cb 01       	movw	r24, r22
 71e:	02 2e       	mov	r0, r18
 720:	02 c0       	rjmp	.+4      	; 0x726
 722:	88 0f       	add	r24, r24
 724:	99 1f       	adc	r25, r25
 726:	0a 94       	dec	r0
 728:	e2 f7       	brpl	.-8      	; 0x722
 72a:	28 2a       	or	r2, r24
				OSIntSchedReq();			/*中断中要求切换任务	*/
 72c:	0f b6       	in	r0, 0x3f	; 63
 72e:	0f 92       	push	r0
 730:	11 24       	eor	r1, r1
 732:	f8 94       	cli
 734:	02 60       	ori	r16, 0x02	; 2
 736:	0f 90       	pop	r0
 738:	0f be       	out	0x3f, r0	; 63
 73a:	11 24       	eor	r1, r1
 73c:	41 50       	subi	r20, 0x01	; 1
 73e:	2f 5f       	subi	r18, 0xFF	; 255
 740:	3f 4f       	sbci	r19, 0xFF	; 255
 742:	35 96       	adiw	r30, 0x05	; 5
 744:	47 ff       	sbrs	r20, 7
 746:	dd cf       	rjmp	.-70     	; 0x702
			}
		}
	}
	TCNT0=184;
 748:	88 eb       	ldi	r24, 0xB8	; 184
 74a:	82 bf       	out	0x32, r24	; 50
	if(timeint++>=200)
 74c:	80 91 64 00 	lds	r24, 0x0064
 750:	98 2f       	mov	r25, r24
 752:	8f 5f       	subi	r24, 0xFF	; 255
 754:	80 93 64 00 	sts	0x0064, r24
 758:	98 3c       	cpi	r25, 0xC8	; 200
 75a:	90 f0       	brcs	.+36     	; 0x780
	{   usage=100-ostimes;
 75c:	90 91 60 00 	lds	r25, 0x0060
 760:	84 e6       	ldi	r24, 0x64	; 100
 762:	89 1b       	sub	r24, r25
	    timeint=0;
 764:	10 92 64 00 	sts	0x0064, r1
		display_1str(0,0,usage);
 768:	48 2f       	mov	r20, r24
 76a:	60 e0       	ldi	r22, 0x00	; 0
 76c:	86 2f       	mov	r24, r22
 76e:	67 dd       	rcall	.-1330   	; 0x23e
		ostimes=0;
 770:	10 92 61 00 	sts	0x0061, r1
 774:	10 92 60 00 	sts	0x0060, r1
		OSIdleCtr=0;
 778:	10 92 63 00 	sts	0x0063, r1
 77c:	10 92 62 00 	sts	0x0062, r1
	}
	OSIntExit();
 780:	92 df       	rcall	.-220    	; 0x6a6
 782:	ff 91       	pop	r31
 784:	ef 91       	pop	r30
 786:	bf 91       	pop	r27
 788:	af 91       	pop	r26
 78a:	9f 91       	pop	r25
 78c:	8f 91       	pop	r24
 78e:	7f 91       	pop	r23
 790:	6f 91       	pop	r22
 792:	5f 91       	pop	r21
 794:	4f 91       	pop	r20
 796:	3f 91       	pop	r19
 798:	2f 91       	pop	r18
 79a:	0f 90       	pop	r0
 79c:	0f be       	out	0x3f, r0	; 63
 79e:	0f 90       	pop	r0
 7a0:	1f 90       	pop	r1
 7a2:	18 95       	reti

000007a4 <IdleTask>:
}

/************************************************************************************************************************
函数名称:	void IdleTask(void)
函数原型:	void IdleTask(void)
函数功能:	空闲任务,当其他任务没有就绪的时候运行
入口参数:	无
出口参数:	无
有关说明:	系统开始运行的时候是从运行空闲任务开始的。该任务不能删除
创建时间:	2007年3月3日
修改时间:	
************************************************************************************************************************/


void IdleTask(void)
{
	OSSched();
 7a4:	3d de       	rcall	.-902    	; 0x420
	while(1)
	{
	OS_ENTER_CRITICAL();
 7a6:	0f b6       	in	r0, 0x3f	; 63
 7a8:	0f 92       	push	r0
 7aa:	11 24       	eor	r1, r1
 7ac:	f8 94       	cli
	OSIdleCtr++;
 7ae:	80 91 62 00 	lds	r24, 0x0062
 7b2:	90 91 63 00 	lds	r25, 0x0063
 7b6:	01 96       	adiw	r24, 0x01	; 1
 7b8:	90 93 63 00 	sts	0x0063, r25
 7bc:	80 93 62 00 	sts	0x0062, r24
	if(OSIdleCtr>1280)
 7c0:	81 50       	subi	r24, 0x01	; 1
 7c2:	95 40       	sbci	r25, 0x05	; 5
 7c4:	68 f0       	brcs	.+26     	; 0x7e0
	  {ostimes++;
 7c6:	80 91 60 00 	lds	r24, 0x0060
 7ca:	90 91 61 00 	lds	r25, 0x0061
 7ce:	01 96       	adiw	r24, 0x01	; 1
 7d0:	90 93 61 00 	sts	0x0061, r25
 7d4:	80 93 60 00 	sts	0x0060, r24
	   OSIdleCtr=0;}
 7d8:	10 92 63 00 	sts	0x0063, r1
 7dc:	10 92 62 00 	sts	0x0062, r1
	OS_EXIT_CRITICAL();
 7e0:	0f 90       	pop	r0
 7e2:	0f be       	out	0x3f, r0	; 63
 7e4:	11 24       	eor	r1, r1
 7e6:	de cf       	rjmp	.-68     	; 0x7a4

000007e8 <OSInit>:
    OSSched(); 	
	}
}
/************************************************************************************************************************
函数名称:	OInit
函数原型:	void OInit (void)
函数功能:	初始化任务时钟和一些系统全局变量,建立空闲任务
入口参数:	无
出口参数:	无
有关说明:	
创建时间:	2007年3月5日
修改时间:	
************************************************************************************************************************/
void OSInit (void)
{
	OSRdyTbl=0;
 7e8:	22 24       	eor	r2, r2
	OSIntNesting=0;
 7ea:	42 2c       	mov	r4, r2
	ostimes=0;
 7ec:	10 92 61 00 	sts	0x0061, r1
 7f0:	10 92 60 00 	sts	0x0060, r1
	DDRC|=0x38;
 7f4:	84 b3       	in	r24, 0x14	; 20
 7f6:	88 63       	ori	r24, 0x38	; 56
 7f8:	84 bb       	out	0x14, r24	; 20
	LCD_Init();
 7fa:	e7 dc       	rcall	.-1586   	; 0x1ca
	settxt();
 7fc:	6e dd       	rcall	.-1316   	; 0x2da
    TCN0Init();
 7fe:	3e df       	rcall	.-388    	; 0x67c
	OSTaskCreate(IdleTask,&Stack[Total_Stack_Size-1],OS_TASKS);
 800:	44 e0       	ldi	r20, 0x04	; 4
 802:	61 e7       	ldi	r22, 0x71	; 113
 804:	72 e0       	ldi	r23, 0x02	; 2
 806:	82 ed       	ldi	r24, 0xD2	; 210
 808:	93 e0       	ldi	r25, 0x03	; 3
 80a:	6a dd       	rcall	.-1324   	; 0x2e0
 80c:	08 95       	ret

0000080e <__udivmodqi4>:
 80e:	99 1b       	sub	r25, r25
 810:	79 e0       	ldi	r23, 0x09	; 9
 812:	04 c0       	rjmp	.+8      	; 0x81c

00000814 <__udivmodqi4_loop>:
 814:	99 1f       	adc	r25, r25
 816:	96 17       	cp	r25, r22
 818:	08 f0

⌨️ 快捷键说明

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