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

📄 test2.lis

📁 ucos移植到m64
💻 LIS
字号:
                        .module test2.c
                        .area text(rom, con, rel)
                        .even
 0000           _t1Init::
 0000           ; 
 0000           ; #define Test1_GLOBALS
 0000           ; #include "includes.h"
 0000           ; 
 0000           ; //******************************************************************************
 0000           ; // Constants
 0000           ; #define TaskStartPrio	10		// Task-Prioritaeten
 0000           ; //*****************************************************************************
 0000           ; // Variablen
 0000           ; INT8U    display[5];
 0000           ; INT8U    h,m,s,state;
 0000           ; OS_STK	Task1Stack[OS_TASK_DEF_STK_SIZE];		// startup task stack
 0000           ; OS_STK	Task2Stack[OS_TASK_DEF_STK_SIZE];
 0000           ; //ICC-AVR application builder : 2003-12-28 21:52:56
 0000           ; // Target : M8
 0000           ; // Crystal: 8.0000Mhz
 0000           ; 
 0000           ; #include <iom64v.h>
 0000           ; #include <macros.h>
 0000           ; //#include <stdio.h>
 0000           ; #include "uart.h"
 0000           ; 
 0000           ; //*****************************************************************************
 0000           ; // Prototypes
 0000           ; /*
 0000           ; #define BAUD 	9600
 0000           ; #define CRYSTAL	11059200
 0000           ; #define BAUD_SETTING	(unsigned int)((unsigned long)CRYSTAL/(16*(unsigned long)BAUD)-1)
 0000           ; #define BAUD_H	(unsigned char)(BAUD_SETTING>>8)
 0000           ; #define BAUD_L	(unsigned char)(BAUD_SETTING)
 0000           ; void uartInit(uint8 uartNum)
 0000           ; {
 0000           ; 	if(1==uartNum)
 0000           ; 	{
 0000           ; 		 UCSR1B = 0x00; //disable while setting baud rate
 0000           ; 	 	 UCSR1A = 0x00;
 0000           ; 	 	 UCSR1C = 0x06;
 0000           ; 	 	 UBRR1L = BAUD_L; //set baud rate lo
 0000           ; 	 	 UBRR1H = BAUD_H; //set baud rate hi
 0000           ; 	 	 UCSR1B = 0x18;
 0000           ; 	 	 ///共有3个中断源, 接受, 发送, 寄存器空, 对应此寄存器的高3位
 0000           ; 	}	
 0000           ; 	else
 0000           ; 	{
 0000           ; 		UCSR0B = 0x00; //disable while setting baud rate
 0000           ; 	 	UCSR0A = 0x00;
 0000           ; 		UCSR0C = 0x06;	//set frame format, 8 bits, 2stop]
 0000           ; 		UBRR0H = BAUD_H;
 0000           ; 		UBRR0L = BAUD_L;
 0000           ; 		UCSR0B = 0x18;	//enable receive and transmite
 0000           ; 		
 0000           ; 	}	
 0000           ; }
 0000           ; void putChar(uint8 num, uint8 dat)
 0000           ; {
 0000           ; 	ENTER_CRITICAL();
 0000           ; 	if(1==num)
 0000           ; 	{
 0000           ; 		UDR1 = dat;
 0000           ; 		while(!(UCSR1A&BIT(TXC1)));	  //发送寄存器空
 0000           ; 		UCSR1A|=BIT(TXC1);
 0000           ; 	}
 0000           ; 	else
 0000           ; 	{
 0000           ; 		UDR0 = dat;
 0000           ; 		while(!(UCSR0A&BIT(TXC0)));
 0000           ; 		UCSR0A|=BIT(TXC0);
 0000           ; 	}
 0000           ; 	EXIT_CRITICAL();
 0000           ; }
 0000           ; */	
 0000           ; //*****************************************************************************
 0000           ; //			TickISR
 0000           ; //*****************************************************************************
 0000           ; // WGM: 0) Normal, TOP=0xFFFF
 0000           ; // desired value: 1Hz
 0000           ; // actual value: Out of range
 0000           ; void t1Init(void)
 0000           ; {
 0000           ; 	TCCR1B = 0x00; //stop
 0000 2224              clr R2
 0002 2EBC              out 0x2e,R2
 0004           ;       TCNT1H = 0x79; //setup
 0004 89E7              ldi R24,121
 0006 8DBD              out 0x2d,R24
 0008           ;       TCNT1L = 0x02;
 0008 82E0              ldi R24,2
 000A 8CBD              out 0x2c,R24
 000C           ;       OCR1AH = 0x00;
 000C 2BBC              out 0x2b,R2
 000E           ;       OCR1AL = 0x00;
 000E 2ABC              out 0x2a,R2
 0010           ;       OCR1BH = 0x00;
 0010 29BC              out 0x29,R2
 0012           ;       OCR1BL = 0x00;
 0012 28BC              out 0x28,R2
 0014           ;       OCR1CH = 0x00;
 0014 20927900          sts 121,R2
 0018           ;       OCR1CL = 0x00;
 0018 20927800          sts 120,R2
 001C           ;       ICR1H  = 0x00;
 001C 27BC              out 0x27,R2
 001E           ;       ICR1L  = 0x00;
 001E 26BC              out 0x26,R2
 0020           ;       TCCR1A = 0x00;
 0020 2FBC              out 0x2f,R2
 0022           ;       TCCR1B = 0x02; //start Timer
 0022 8EBD              out 0x2e,R24
 0024           L2:
 0024                   .dbline 0 ; func end
 0024 0895              ret
                        .area vector(rom, abs)
                        .org 56
 0038 0C941300          jmp _fuc
                        .area text(rom, con, rel)
                        .even
 0026           _fuc::
 0026 0E940000          xcall push_lset
 002A           ;       //时钟源选择
 002A           ; }
 002A           ; 
 002A           ; //*****************************************************************************
 002A           ; //8倍分频, 11.0592M晶振, 定时25ms
 002A           ; //#pragma interrupt_handler OSTickISR:15
 002A           ; 
 002A           ; void OSTickISR(void);
 002A           ; #pragma interrupt_handler fuc:15
 002A           ; void fuc()
 002A           ; {
 002A           ;  TCNT1H = 0x79;
 002A 89E7              ldi R24,121
 002C 8DBD              out 0x2d,R24
 002E           ;  TCNT1L = 0x00;
 002E 2224              clr R2
 0030 2CBC              out 0x2c,R2
 0032           ;  OSTickISR();
 0032 0E940000          xcall _OSTickISR
 0036           L3:
 0036 0E940000          xcall pop_lset
 003A                   .dbline 0 ; func end
 003A 1895              reti
                        .even
 003C           _init_devices::
 003C           ; }
 003C           ; //call this routine to initialize all peripherals
 003C           ; void init_devices(void)
 003C           ; {
 003C           ; 	//stop errant interrupts until set up
 003C           ; 	CLI(); 			//disable all interrupts
 003C F894              cli
 003E           ;       XDIV  = 0x00;   //xtal divider
 003E 2224              clr R2
 0040 2CBE              out 0x3c,R2
 0042           ;       XMCRA = 0x00;   //external memory
 0042 20926D00          sts 109,R2
 0046           ;       t1Init();
 0046 DCDF              xcall _t1Init
 0048           ;       
 0048           ;       MCUCR = 0x00;
 0048 2224              clr R2
 004A 25BE              out 0x35,R2
 004C           ;       EICRA = 0x00;   //extended ext ints
 004C 20926A00          sts 106,R2
 0050           ;       EICRB = 0x00;   //extended ext ints
 0050 2ABE              out 0x3a,R2
 0052           ;       EIMSK = 0x00;
 0052 29BE              out 0x39,R2
 0054           ;       TIMSK = 0x04;   //timer interrupt sources
 0054 84E0              ldi R24,4
 0056 87BF              out 0x37,R24
 0058           ;       ETIMSK = 0x00;  //extended timer interrupt sources
 0058 20927D00          sts 125,R2
 005C           L4:
 005C                   .dbline 0 ; func end
 005C 0895              ret
                        .even
 005E           _main::
 005E 2397              sbiw R28,3
 0060           ;       //SEI();                        //re-enable interrupts
 0060           ; }
 0060           ; 
 0060           ; void Task1(void *pdata);
 0060           ; void Task2(void *pdata);
 0060           ; 
 0060           ; //*****************************************************************************
 0060           ; // Start
 0060           ; #define LED()         PORTC = PORTC^BIT(4);
 0060           ; void main(void){
 0060           ;       PORTC=BIT(4);
 0060 80E1              ldi R24,16
 0062 85BB              out 0x15,R24
 0064           ;       DDRC=BIT(4);
 0064 84BB              out 0x14,R24
 0066           ;       LED();
 0066 25B2              in R2,0x15
 0068 2826              eor R2,R24
 006A 25BA              out 0x15,R2
 006C           ;       OSInit();               // OS init
 006C 0E940000          xcall _OSInit
 0070           ;       OSTaskCreate(Task1,
 0070 87E0              ldi R24,7
 0072 8A83              std y+2,R24
 0074 80E0              ldi R24,<_Task1Stack+99
 0076 90E0              ldi R25,>_Task1Stack+99
 0078 9983              std y+1,R25
 007A 8883              std y+0,R24
 007C 2227              clr R18
 007E 3327              clr R19
 0080 00E0              ldi R16,<PL_Task1
 0082 10E0              ldi R17,>PL_Task1
 0084 0E940000          xcall _OSTaskCreate
 0088           ;                               (void *)0,
 0088           ;                               &Task1Stack[OS_TASK_DEF_STK_SIZE-1],
 0088           ;                               7);
 0088           ;       OSTaskCreate(Task2,
 0088 86E0              ldi R24,6
 008A 8A83              std y+2,R24
 008C 80E0              ldi R24,<_Task2Stack+99
 008E 90E0              ldi R25,>_Task2Stack+99
 0090 9983              std y+1,R25
 0092 8883              std y+0,R24
 0094 2227              clr R18
 0096 3327              clr R19
 0098 00E0              ldi R16,<PL_Task2
 009A 10E0              ldi R17,>PL_Task2
 009C 0E940000          xcall _OSTaskCreate
 00A0           ;                               (void *)0,
 00A0           ;                               &Task2Stack[OS_TASK_DEF_STK_SIZE-1],
 00A0           ;                               6); 
 00A0           ;       // init und start tick
 00A0           ;     init_devices();
 00A0 CDDF              xcall _init_devices
 00A2           ;     uartInit(1);
 00A2 01E0              ldi R16,1
 00A4 0E940000          xcall _uartInit
 00A8           ;     OSStart();                // start multitasking
 00A8 0E940000          xcall _OSStart
 00AC           L5:
 00AC 2396              adiw R28,3
 00AE                   .dbline 0 ; func end
 00AE 0895              ret
 00B0           ;           data -> R10,R11
                        .even
 00B0           _Task1::
 00B0 0E940000          xcall push_gset3x
 00B4 5801              movw R10,R16
 00B6           ;     
 00B6           ; }
 00B6           ; 
 00B6           ; //*****************************************************************************
 00B6           ; void Task1(void *data)
 00B6           ; {
 00B6           ;       SEI();
 00B6 7894              sei
 00B8           ;       for (;;)
 00B8           L9:
 00B8           ;  	{
 00B8           ;  		LED();
 00B8 80E1              ldi R24,16
 00BA 25B2              in R2,0x15
 00BC 2826              eor R2,R24
 00BE 25BA              out 0x15,R2
 00C0           ;               putStr(1, "task 1!\n\r");
 00C0 20E0              ldi R18,<L13
 00C2 30E0              ldi R19,>L13
 00C4 01E0              ldi R16,1
 00C6 0E940000          xcall _putStr
 00CA           ;               OSTimeDly (20);
 00CA 04E1              ldi R16,20
 00CC 10E0              ldi R17,0
 00CE 0E940000          xcall _OSTimeDly
 00D2           ;               LED();
 00D2 80E1              ldi R24,16
 00D4 25B2              in R2,0x15
 00D6 2826              eor R2,R24
 00D8 25BA              out 0x15,R2
 00DA           ;               OSTimeDly (20);
 00DA 04E1              ldi R16,20
 00DC 10E0              ldi R17,0
 00DE 0E940000          xcall _OSTimeDly
 00E2           ;       }
 00E2 EACF              xjmp L9
 00E4           X0:
 00E4           L8:
 00E4 0E940000          xcall pop_gset3x
 00E8                   .dbline 0 ; func end
 00E8 0895              ret
 00EA           ;           data -> R10,R11
                        .even
 00EA           _Task2::
 00EA 0E940000          xcall push_gset3x
 00EE 5801              movw R10,R16
 00F0           ;                       
 00F0           ; }
 00F0           ; void Task2(void *data)
 00F0           ; {
 00F0           ;       SEI();
 00F0 7894              sei
 00F2           ;       for (;;)
 00F2           L15:
 00F2           ;  	{
 00F2           ; 		putStr(1, "task 2!\n\r");
 00F2 20E0              ldi R18,<L19
 00F4 30E0              ldi R19,>L19
 00F6 01E0              ldi R16,1
 00F8 0E940000          xcall _putStr
 00FC           ;               OSTimeDly (80);
 00FC 00E5              ldi R16,80
 00FE 10E0              ldi R17,0
 0100 0E940000          xcall _OSTimeDly
 0104           ;       }
 0104 F6CF              xjmp L15
 0106           X1:
 0106           L14:
 0106 0E940000          xcall pop_gset3x
 010A                   .dbline 0 ; func end
 010A 0895              ret
                        .area bss(ram, con, rel)
 0000           _Task2Stack::
 0000                   .blkb 100
 0064           _Task1Stack::
 0064                   .blkb 100
 00C8           _state::
 00C8                   .blkb 1
 00C9           _s::
 00C9                   .blkb 1
 00CA           _m::
 00CA                   .blkb 1
 00CB           _h::
 00CB                   .blkb 1
 00CC           _display::
 00CC                   .blkb 5
                        .area data(ram, con, rel)
 0000           L19:
 0000                   .blkb 10
                        .area idata
 0000 7461736B2032210A0D00      .byte 't,'a,'s,'k,32,50,33,10,13,0
                        .area data(ram, con, rel)
 000A           L13:
 000A                   .blkb 10
                        .area idata
 000A 7461736B2031210A0D00      .byte 't,'a,'s,'k,32,49,33,10,13,0
                        .area data(ram, con, rel)
                        .area func_lit
 0000 7500      PL_Task2:       .word `_Task2
 0002 5800      PL_Task1:       .word `_Task1

⌨️ 快捷键说明

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