📄 main.lis
字号:
.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 + -