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

📄 main.lis

📁 这是AVR单片机上能跑的嵌入式操作系统salvo
💻 LIS
📖 第 1 页 / 共 4 页
字号:
                        .module main.c
                        .area vector(rom, abs)
                        .org 52
 0034 0C943C01          jmp _UART_RX_interrupt
                        .org 48
 0030 0C94C300          jmp _SPI_isr
                        .area text(rom, con, rel)
 0000                   .dbfile E:\PROGRAMS\controller\salvo-M32\main.c
 0000                   .dbfunc e TaskA _TaskA fV
 0000           ;              i -> R20
                        .even
 0000           _TaskA::
 0000 0E940000          xcall push_gset1
 0004                   .dbline -1
 0004                   .dbline 33
 0004           ; /************************************************************ 
 0004           ; Copyright (C) 1995-2002 Pumpkin, Inc. and its
 0004           ; Licensor(s). Freely distributable.
 0004           ; 
 0004           ; $Source: C:\\RCS\\d\\salvo\\tut\\tu5\\main.c,v $
 0004           ; $Author: aek $
 0004           ; $Revision: 3.7 $
 0004           ; $Date: 2003-06-13 17:05:12-07 $
 0004           ; 
 0004           ; Source for tutorial programs.
 0004           ; 
 0004           ; ************************************************************/
 0004           ; 
 0004           ; #include "main.h"
 0004           ; #include "salvo.h"
 0004           ; #include "app.h"
 0004           ; #pragma interrupt_handler UART_RX_interrupt:iv_USART_RX
 0004           ; #pragma interrupt_handler SPI_isr: 13
 0004           ; 
 0004           ; #define TASK_A_P      OSTCBP(1) /* task #1        */
 0004           ; #define TASK_B_P       OSTCBP(2) /*  ""  #2        */
 0004           ; #define TASK_C_P      OSTCBP(3) /*  ""  #3        */
 0004           ; #define PRIO_A        10        /* task priorities*/
 0004           ; #define PRIO_B         10        /*  ""            */
 0004           ; #define PRIO_C        2         /*  ""            */
 0004           ; #define BINSEM_UPDATE_PORT_P OSECBP(1) /* binSem #1   */
 0004           ; 
 0004           ; _OSLabel(TaskA1)
 0004           ; _OSLabel(TaskB1)
 0004           ; _OSLabel(TaskC1)
 0004           ; 
 0004           ; void TaskA( void )
 0004           ; {
 0004                   .dbline 35
 0004           ;       Uchar i;
 0004           ;       Uart_init();
 0004 52D0              xcall _Uart_init
 0006 2BC0              xjmp L7
 0008           L6:
 0008                   .dbline 38
 0008           ;       
 0008           ;    while(1)
 0008           ;       {
 0008                   .dbline 39
 0008           ;       if(SPI_validFrame)
 0008 80914200          lds R24,_bit_flag
 000C 8295              swap R24
 000E 8F70              andi R24,#0x0F
 0010 8170              andi R24,1
 0012 09F1              breq L9
 0014                   .dbline 40
 0014           ;               {
 0014                   .dbline 41
 0014           ;               SPI_validFrame=FALSE;
 0014 80914200          lds R24,_bit_flag
 0018 8F7E              andi R24,239
 001A 80934200          sts _bit_flag,R24
 001E                   .dbline 42
 001E           ;               for(i=0;i<SPI_DatLen+3;i++)
 001E 4427              clr R20
 0020 0FC0              xjmp L14
 0022           L11:
 0022                   .dbline 43
 0022 80E0              ldi R24,<_SPI_RecvFifo
 0024 90E0              ldi R25,>_SPI_RecvFifo
 0026 E42F              mov R30,R20
 0028 FF27              clr R31
 002A E80F              add R30,R24
 002C F91F              adc R31,R25
 002E 2080              ldd R2,z+0
 0030 80E0              ldi R24,<_SPI_TranFifo
 0032 90E0              ldi R25,>_SPI_TranFifo
 0034 E42F              mov R30,R20
 0036 FF27              clr R31
 0038 E80F              add R30,R24
 003A F91F              adc R31,R25
 003C 2082              std z+0,R2
 003E           L12:
 003E                   .dbline 42
 003E 4395              inc R20
 0040           L14:
 0040                   .dbline 42
 0040 80913E00          lds R24,_SPI_DatLen
 0044 8D5F              subi R24,253    ; addi 3
 0046 4817              cp R20,R24
 0048 60F3              brlo L11
 004A                   .dbline 44
 004A           ;                       SPI_TranFifo[i]=SPI_RecvFifo[i];
 004A           ;               SPI_SendPacket(SPI_DatLen+3,SPI_TranFifo);
 004A 20E0              ldi R18,<_SPI_TranFifo
 004C 30E0              ldi R19,>_SPI_TranFifo
 004E 00913E00          lds R16,_SPI_DatLen
 0052 0D5F              subi R16,253    ; addi 3
 0054 7CD0              xcall _SPI_SendPacket
 0056                   .dbline 46
 0056           ;               //Uart_SendPacket(SPI_DatLen+3,SPI_RecvFifo);
 0056           ;               }
 0056           L9:
 0056           L15:
 0056                   .dbline 47
 0056                   .dbline 47
 0056 00E0              ldi R16,<PL_TaskA1
 0058 10E0              ldi R17,>PL_TaskA1
 005A 0E940000          xcall _OSCtxSw
 005E                   .dbline 47
 005E           	_TaskA1::
 005E                   .dbline 47
 005E           L16:
 005E                   .dbline 47
 005E                   .dbline 49
 005E           L7:
 005E                   .dbline 37
 005E D4CF              xjmp L6
 0060           X0:
 0060                   .dbline -2
 0060           L5:
 0060 0E940000          xcall pop_gset1
 0064                   .dbline 0 ; func end
 0064 0895              ret
 0066                   .dbsym r i 20 c
 0066                   .dbend
 0066                   .dbfunc e TaskB _TaskB fV
                        .even
 0066           _TaskB::
 0066                   .dbline -1
 0066                   .dbline 53
 0066           ;       OS_Yield(TaskA1);
 0066           ;       //OS_Delay(30, TaskA1);
 0066           ;        }
 0066           ; }
 0066           ; 
 0066           ; void TaskB( void )
 0066           ; {
 0066 04C0              xjmp L20
 0068           L19:
 0068                   .dbline 55
 0068           ;       while(1)
 0068           ;               {
 0068           L22:
 0068                   .dbline 58
 0068                   .dbline 58
 0068 00E0              ldi R16,<PL_TaskB1
 006A 10E0              ldi R17,>PL_TaskB1
 006C 0E940000          xcall _OSCtxSw
 0070                   .dbline 58
 0070           	_TaskB1::
 0070                   .dbline 58
 0070           L23:
 0070                   .dbline 58
 0070                   .dbline 60
 0070           L20:
 0070                   .dbline 54
 0070 FBCF              xjmp L19
 0072           X1:
 0072                   .dbline -2
 0072           L18:
 0072                   .dbline 0 ; func end
 0072 0895              ret
 0074                   .dbend
 0074                   .dbfunc e TaskC _TaskC fV
                        .even
 0074           _TaskC::
 0074                   .dbline -1
 0074                   .dbline 64
 0074           ;         //OS_WaitBinSem(BINSEM_UPDATE_PORT_P, OSNO_TIMEOUT, TaskShow1);
 0074           ;               
 0074           ;               OS_Yield(TaskB1);
 0074           ;               //OS_Delay(10, TaskB1);
 0074           ;               }
 0074           ; }
 0074           ; 
 0074           ; void TaskC( void )
 0074           ; {   
 0074                   .dbline 65
 0074           ;     ADC_init();
 0074 90D1              xcall _ADC_init
 0076                   .dbline 66
 0076           L26:
 0076                   .dbline 66
 0076           ;       for (;;) {
 0076                   .dbline 67
 0076           ;               PORTD ^= 0x40;
 0076 80E4              ldi R24,64
 0078 22B2              in R2,0x12
 007A 2826              eor R2,R24
 007C 22BA              out 0x12,R2
 007E                   .dbline 69
 007E                   .dbline 69
 007E 0AE5              ldi R16,90
 0080 0E940000          xcall _OSDelay
 0084           L30:
 0084                   .dbline 69
 0084                   .dbline 69
 0084 00E0              ldi R16,<PL_TaskC1
 0086 10E0              ldi R17,>PL_TaskC1
 0088 0E940000          xcall _OSCtxSw
 008C                   .dbline 69
 008C           	_TaskC1::
 008C                   .dbline 69
 008C                   .dbline 69
 008C                   .dbline 69
 008C                   .dbline 69
 008C                   .dbline 70
 008C                   .dbline 66
 008C                   .dbline 66
 008C F4CF              xjmp L26
 008E           X2:
 008E                   .dbline -2
 008E           L25:
 008E                   .dbline 0 ; func end
 008E 0895              ret
 0090                   .dbend
 0090                   .dbfunc e port_init _port_init fV
                        .even
 0090           _port_init::
 0090                   .dbline -1
 0090                   .dbline 73
 0090           ;               
 0090           ;         OS_Delay(90, TaskC1);
 0090           ;     }
 0090           ; }
 0090           ; void port_init(void)
 0090           ; {
 0090                   .dbline 74
 0090           ;  PORTA = 0x00;
 0090 2224              clr R2
 0092 2BBA              out 0x1b,R2
 0094                   .dbline 75
 0094           ;  DDRA  = 0xff;
 0094 8FEF              ldi R24,255
 0096 8ABB              out 0x1a,R24
 0098                   .dbline 76
 0098           ;  PORTB = 0x00;
 0098 28BA              out 0x18,R2
 009A                   .dbline 77
 009A           ;  DDRB  = 0x01;
 009A 81E0              ldi R24,1
 009C 87BB              out 0x17,R24
 009E                   .dbline 78
 009E           ;  PORTC = 0x00; //m103 output only
 009E 25BA              out 0x15,R2
 00A0                   .dbline 79
 00A0           ;  DDRC  = 0xff;
 00A0 8FEF              ldi R24,255
 00A2 84BB              out 0x14,R24
 00A4                   .dbline 80
 00A4           ;  PORTD = 0x00;
 00A4 22BA              out 0x12,R2
 00A6                   .dbline 81
 00A6           ;  DDRD  = 0xff;
 00A6 81BB              out 0x11,R24
 00A8                   .dbline -2
 00A8           L33:
 00A8                   .dbline 0 ; func end
 00A8 0895              ret
 00AA                   .dbend
 00AA                   .dbfunc e Uart_init _Uart_init fV
                        .even
 00AA           _Uart_init::
 00AA                   .dbline -1
 00AA                   .dbline 84
 00AA           ; }
 00AA           ; void Uart_init(void)
 00AA           ; {
 00AA                   .dbline 85
 00AA           ;  UCSRC = BIT(URSEL) | 0x06;
 00AA 86E8              ldi R24,134
 00AC 80BD              out 0x20,R24
 00AE                   .dbline 86
 00AE           ;  UBRRH = 0x00;
 00AE 2224              clr R2
 00B0 20BC              out 0x20,R2
 00B2                   .dbline 87
 00B2           ;  UBRRL = 0x33; 
 00B2 83E3              ldi R24,51
 00B4 89B9              out 0x9,R24
 00B6                   .dbline 88
 00B6           ;  UCSRB = ( (1<<RXCIE) |(1<<RXEN) | (1<<TXEN) );
 00B6 88E9              ldi R24,152
 00B8 8AB9              out 0xa,R24
 00BA                   .dbline -2
 00BA           L34:
 00BA                   .dbline 0 ; func end
 00BA 0895              ret
 00BC                   .dbend
 00BC                   .dbfunc e main _main fV
                        .even
 00BC           _main::
 00BC 2197              sbiw R28,1
 00BE                   .dbline -1
 00BE                   .dbline 92
 00BE           ; }
 00BE           ; 
 00BE           ; void main( void )
 00BE           ; {
 00BE                   .dbline 93
 00BE           ;       CLI();
 00BE F894              cli
 00C0                   .dbline 94
 00C0           ;       port_init();
 00C0 E7DF              xcall _port_init
 00C2                   .dbline 95
 00C2           ;       SPI_SlaveInit();
 00C2 35D0              xcall _SPI_SlaveInit
 00C4                   .dbline 96
 00C4           ;       SEI();
 00C4 7894              sei
 00C6           L36:
 00C6                   .dbline 97
 00C6                   .dbline 97
 00C6 2224              clr R2

⌨️ 快捷键说明

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