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

📄 test2.s

📁 ICCAVR下的uCOS mega8程序
💻 S
字号:
	.module test2.c
	.area text(rom, con, rel)
	.even
_TC2_Init::
; 
; #define Test1_GLOBALS
; #include "includes.h"
; 
; //******************************************************************************
; // Constants
; #define TaskStartPrio	10		// Task-Prioritaeten
; //*****************************************************************************
; // Variablen
; INT8U    display[5];
; INT8U    h,m,s,state;
; OS_STK	Task1Stack[OS_TASK_DEF_STK_SIZE];		// startup task stack
; OS_STK	Task2Stack[OS_TASK_DEF_STK_SIZE];
; //ICC-AVR application builder : 2003-12-28 21:52:56
; // Target : M8
; // Crystal: 8.0000Mhz
; 
; #include <iom16v.h>
; #include <macros.h>
; #include <stdio.h>
; 
; 
; //*****************************************************************************
; // Prototypes
; 
; //*****************************************************************************
; //			TickISR
; //*****************************************************************************
; // Init Timer/Counter2 fuer Takterzeugung
; void TC2_Init (void){	
; 	/* Only uses TIMER2 overflow for tick interrupt. Timer compare
;      * can also be used.
;      */
; 	TIMSK &= ~(BIT(TOIE2)/* | BIT(OCIE2) */);	//disable TC2 interrupts
	in R24,0x39
	andi R24,191
	out 0x39,R24
; 	TCCR2 = 0x00;		// interner Takt, /1024
	clr R2
	out 0x25,R2
; 	TCNT2 = 0; 	// Counter ruecksetzen, 2ms @ 8MHz
	out 0x24,R2
;     TCCR2 = 0x04;   // 64
	ldi R24,4
	out 0x25,R24
; 	// OCR2 = 180;			// OutputCompareRegister
; 	TIMSK |= BIT(TOIE2);	// enable OVF-interrupt
	in R24,0x39
	ori R24,64
	out 0x39,R24
; 	                                                                                                                                //TIMSK |= OCIE2;		// enable COMP-interrupt
; 	
;     SEI();	// enable global interrupt     
	sei
L2:
	.dbline 0 ; func end
	ret
	.area vector(rom, abs)
	.org 16
	jmp _OSTickISR
	.area text(rom, con, rel)
	.even
_main::
	sbiw R28,3
; }
; 
; //*****************************************************************************
; // Interrupt Timer/Counter0 Overflow
; // OVF_Takt:  4MHz / 1024 / 39 = 10ms
; #pragma interrupt_handler OSTickISR:5
; 
; void Task1(void *pdata);
; void Task2(void *pdata);
; 
; //*****************************************************************************
; // Start
; void main(void){	
; 	OSInit();		// OS init
	xcall _OSInit
; 	Uart_init();
	xcall _Uart_init
; 	//Prints("ATmega8 uc/os-II Test!");
; 	//Putchar(0x0d);
; 	//Putchar(0x0a);
; 	
; 	OSTaskCreate(Task1,	(void *)0, &Task1Stack[OS_TASK_DEF_STK_SIZE-1],	7);
	ldi R24,7
	std y+2,R24
	ldi R24,<_Task1Stack+99
	ldi R25,>_Task1Stack+99
	std y+1,R25
	std y+0,R24
	clr R18
	clr R19
	ldi R16,<PL_Task1
	ldi R17,>PL_Task1
	xcall _OSTaskCreate
; 	
; 	OSTaskCreate(Task2,	(void *)0, &Task2Stack[OS_TASK_DEF_STK_SIZE-1],	8); 
	ldi R24,8
	std y+2,R24
	ldi R24,<_Task2Stack+99
	ldi R25,>_Task2Stack+99
	std y+1,R25
	std y+0,R24
	clr R18
	clr R19
	ldi R16,<PL_Task2
	ldi R17,>PL_Task2
	xcall _OSTaskCreate
; 	// init und start tick
;     TC2_Init();			// Timer/Counter#2 Overflow and Comp init   
	xcall _TC2_Init
;     OSStart();		// start multitasking
	xcall _OSStart
L3:
	adiw R28,3
	.dbline 0 ; func end
	ret
;           data -> R10,R11
	.even
_Task1::
	xcall push_gset3x
	movw R10,R16
; }
; 
; //*****************************************************************************
; void Task1(void *data){
L7:
; 	for (;;){
; 		//Prints("ATmega16_UCOS_ii");
; 		Putchar(0x80);
	ldi R16,128
	xcall _Putchar
; 		OSTimeDly (100);
	ldi R16,100
	ldi R17,0
	xcall _OSTimeDly
; 	}
	xjmp L7
X0:
L6:
	xcall pop_gset3x
	.dbline 0 ; func end
	ret
;           data -> R10,R11
	.even
_Task2::
	xcall push_gset3x
	movw R10,R16
; }
; void Task2(void *data){
;     data = data;
; 	OSTimeDly(5);
	ldi R16,5
	ldi R17,0
	xcall _OSTimeDly
L12:
; 	for (;;){
; 		//Prints("Test_OK!");
; 		Putchar(0x20);
	ldi R16,32
	xcall _Putchar
; 		OSTimeDly (500);
	ldi R16,500
	ldi R17,1
	xcall _OSTimeDly
; 	}
	xjmp L12
X1:
L11:
	xcall pop_gset3x
	.dbline 0 ; func end
	ret
	.area bss(ram, con, rel)
_Task2Stack::
	.blkb 100
_Task1Stack::
	.blkb 100
_state::
	.blkb 1
_s::
	.blkb 1
_m::
	.blkb 1
_h::
	.blkb 1
_display::
	.blkb 5
	.area func_lit
PL_Task2:	.word `_Task2
PL_Task1:	.word `_Task1

⌨️ 快捷键说明

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