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

📄 test2.s

📁 ucos移植到m64
💻 S
字号:
	.module test2.c
	.area text(rom, con, rel)
	.even
_t1Init::
; 
; #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 <iom64v.h>
; #include <macros.h>
; //#include <stdio.h>
; #include "uart.h"
; 
; //*****************************************************************************
; // Prototypes
; /*
; #define BAUD 	9600
; #define CRYSTAL	11059200
; #define BAUD_SETTING	(unsigned int)((unsigned long)CRYSTAL/(16*(unsigned long)BAUD)-1)
; #define BAUD_H	(unsigned char)(BAUD_SETTING>>8)
; #define BAUD_L	(unsigned char)(BAUD_SETTING)
; void uartInit(uint8 uartNum)
; {
; 	if(1==uartNum)
; 	{
; 		 UCSR1B = 0x00; //disable while setting baud rate
; 	 	 UCSR1A = 0x00;
; 	 	 UCSR1C = 0x06;
; 	 	 UBRR1L = BAUD_L; //set baud rate lo
; 	 	 UBRR1H = BAUD_H; //set baud rate hi
; 	 	 UCSR1B = 0x18;
; 	 	 ///共有3个中断源, 接受, 发送, 寄存器空, 对应此寄存器的高3位
; 	}	
; 	else
; 	{
; 		UCSR0B = 0x00; //disable while setting baud rate
; 	 	UCSR0A = 0x00;
; 		UCSR0C = 0x06;	//set frame format, 8 bits, 2stop]
; 		UBRR0H = BAUD_H;
; 		UBRR0L = BAUD_L;
; 		UCSR0B = 0x18;	//enable receive and transmite
; 		
; 	}	
; }
; void putChar(uint8 num, uint8 dat)
; {
; 	ENTER_CRITICAL();
; 	if(1==num)
; 	{
; 		UDR1 = dat;
; 		while(!(UCSR1A&BIT(TXC1)));	  //发送寄存器空
; 		UCSR1A|=BIT(TXC1);
; 	}
; 	else
; 	{
; 		UDR0 = dat;
; 		while(!(UCSR0A&BIT(TXC0)));
; 		UCSR0A|=BIT(TXC0);
; 	}
; 	EXIT_CRITICAL();
; }
; */	
; //*****************************************************************************
; //			TickISR
; //*****************************************************************************
; // WGM: 0) Normal, TOP=0xFFFF
; // desired value: 1Hz
; // actual value: Out of range
; void t1Init(void)
; {
; 	TCCR1B = 0x00; //stop
	clr R2
	out 0x2e,R2
; 	TCNT1H = 0x79; //setup
	ldi R24,121
	out 0x2d,R24
; 	TCNT1L = 0x02;
	ldi R24,2
	out 0x2c,R24
; 	OCR1AH = 0x00;
	out 0x2b,R2
; 	OCR1AL = 0x00;
	out 0x2a,R2
; 	OCR1BH = 0x00;
	out 0x29,R2
; 	OCR1BL = 0x00;
	out 0x28,R2
; 	OCR1CH = 0x00;
	sts 121,R2
; 	OCR1CL = 0x00;
	sts 120,R2
; 	ICR1H  = 0x00;
	out 0x27,R2
; 	ICR1L  = 0x00;
	out 0x26,R2
; 	TCCR1A = 0x00;
	out 0x2f,R2
; 	TCCR1B = 0x02; //start Timer
	out 0x2e,R24
L2:
	.dbline 0 ; func end
	ret
	.area vector(rom, abs)
	.org 56
	jmp _fuc
	.area text(rom, con, rel)
	.even
_fuc::
	xcall push_lset
; 	//时钟源选择
; }
; 
; //*****************************************************************************
; //8倍分频, 11.0592M晶振, 定时25ms
; //#pragma interrupt_handler OSTickISR:15
; 
; void OSTickISR(void);
; #pragma interrupt_handler fuc:15
; void fuc()
; {
;  TCNT1H = 0x79;
	ldi R24,121
	out 0x2d,R24
;  TCNT1L = 0x00;
	clr R2
	out 0x2c,R2
;  OSTickISR();
	xcall _OSTickISR
L3:
	xcall pop_lset
	.dbline 0 ; func end
	reti
	.even
_init_devices::
; }
; //call this routine to initialize all peripherals
; void init_devices(void)
; {
; 	//stop errant interrupts until set up
; 	CLI(); 			//disable all interrupts
	cli
; 	XDIV  = 0x00; 	//xtal divider
	clr R2
	out 0x3c,R2
; 	XMCRA = 0x00; 	//external memory
	sts 109,R2
; 	t1Init();
	xcall _t1Init
; 	
; 	MCUCR = 0x00;
	clr R2
	out 0x35,R2
; 	EICRA = 0x00; 	//extended ext ints
	sts 106,R2
; 	EICRB = 0x00; 	//extended ext ints
	out 0x3a,R2
; 	EIMSK = 0x00;
	out 0x39,R2
; 	TIMSK = 0x04; 	//timer interrupt sources
	ldi R24,4
	out 0x37,R24
; 	ETIMSK = 0x00; 	//extended timer interrupt sources
	sts 125,R2
L4:
	.dbline 0 ; func end
	ret
	.even
_main::
	sbiw R28,3
; 	//SEI(); 			//re-enable interrupts
; }
; 
; void Task1(void *pdata);
; void Task2(void *pdata);
; 
; //*****************************************************************************
; // Start
; #define LED()	 	PORTC = PORTC^BIT(4);
; void main(void){
; 	PORTC=BIT(4);
	ldi R24,16
	out 0x15,R24
; 	DDRC=BIT(4);
	out 0x14,R24
; 	LED();
	in R2,0x15
	eor R2,R24
	out 0x15,R2
; 	OSInit();		// OS init
	xcall _OSInit
; 	OSTaskCreate(Task1,
	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
; 				(void *)0,
; 				&Task1Stack[OS_TASK_DEF_STK_SIZE-1],
; 				7);
; 	OSTaskCreate(Task2,
	ldi R24,6
	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
; 				(void *)0,
; 				&Task2Stack[OS_TASK_DEF_STK_SIZE-1],
; 				6); 
; 	// init und start tick
;     init_devices();
	xcall _init_devices
;     uartInit(1);
	ldi R16,1
	xcall _uartInit
;     OSStart();		// start multitasking
	xcall _OSStart
L5:
	adiw R28,3
	.dbline 0 ; func end
	ret
;           data -> R10,R11
	.even
_Task1::
	xcall push_gset3x
	movw R10,R16
;     
; }
; 
; //*****************************************************************************
; void Task1(void *data)
; {
; 	SEI();
	sei
;    	for (;;)
L9:
;  	{
;  		LED();
	ldi R24,16
	in R2,0x15
	eor R2,R24
	out 0x15,R2
; 		putStr(1, "task 1!\n\r");
	ldi R18,<L13
	ldi R19,>L13
	ldi R16,1
	xcall _putStr
; 		OSTimeDly (20);
	ldi R16,20
	ldi R17,0
	xcall _OSTimeDly
; 		LED();
	ldi R24,16
	in R2,0x15
	eor R2,R24
	out 0x15,R2
; 		OSTimeDly (20);
	ldi R16,20
	ldi R17,0
	xcall _OSTimeDly
; 	}
	xjmp L9
X0:
L8:
	xcall pop_gset3x
	.dbline 0 ; func end
	ret
;           data -> R10,R11
	.even
_Task2::
	xcall push_gset3x
	movw R10,R16
; 			
; }
; void Task2(void *data)
; {
; 	SEI();
	sei
;  	for (;;)
L15:
;  	{
; 		putStr(1, "task 2!\n\r");
	ldi R18,<L19
	ldi R19,>L19
	ldi R16,1
	xcall _putStr
; 		OSTimeDly (80);
	ldi R16,80
	ldi R17,0
	xcall _OSTimeDly
; 	}
	xjmp L15
X1:
L14:
	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 data(ram, con, rel)
L19:
	.blkb 10
	.area idata
	.byte 't,'a,'s,'k,32,50,33,10,13,0
	.area data(ram, con, rel)
L13:
	.blkb 10
	.area idata
	.byte 't,'a,'s,'k,32,49,33,10,13,0
	.area data(ram, con, rel)
	.area func_lit
PL_Task2:	.word `_Task2
PL_Task1:	.word `_Task1

⌨️ 快捷键说明

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