www.pudn.com > iccavrUCOS_m64.rar > test2.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  
 0000           ; #include  
 0000           ; //#include  
 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 
 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 
 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 
 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 
 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