📄 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 <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 + -