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

📄 main.lis

📁 这是AVR单片机上能跑的嵌入式操作系统salvo
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 00C8 23BE              out 0x33,R2
 00CA                   .dbline 97
 00CA 22BE              out 0x32,R2
 00CC                   .dbline 97
 00CC 86E2              ldi R24,38
 00CE 8CBF              out 0x3c,R24
 00D0                   .dbline 97
 00D0 82E0              ldi R24,2
 00D2 89BF              out 0x39,R24
 00D4                   .dbline 97
 00D4 8DE0              ldi R24,13
 00D6 83BF              out 0x33,R24
 00D8                   .dbline 97
 00D8           L37:
 00D8                   .dbline 97
 00D8           ;       Init();
 00D8                   .dbline 98
 00D8           ;     OSInit();
 00D8 0E940000          xcall _OSInit
 00DC                   .dbline 100
 00DC           ;     
 00DC           ;     OSCreateTask(TaskA, TASK_A_P, PRIO_A);
 00DC 8AE0              ldi R24,10
 00DE 8883              std y+0,R24
 00E0 20E0              ldi R18,<_OStcbArea
 00E2 30E0              ldi R19,>_OStcbArea
 00E4 00E0              ldi R16,<PL_TaskA
 00E6 10E0              ldi R17,>PL_TaskA
 00E8 0E940000          xcall _OSCreateTask
 00EC                   .dbline 101
 00EC           ;     OSCreateTask(TaskB,  TASK_B_P,  PRIO_B);
 00EC 8AE0              ldi R24,10
 00EE 8883              std y+0,R24
 00F0 20E0              ldi R18,<_OStcbArea+7
 00F2 30E0              ldi R19,>_OStcbArea+7
 00F4 00E0              ldi R16,<PL_TaskB
 00F6 10E0              ldi R17,>PL_TaskB
 00F8 0E940000          xcall _OSCreateTask
 00FC                   .dbline 102
 00FC           ;     OSCreateTask(TaskC, TASK_C_P, PRIO_C);
 00FC 82E0              ldi R24,2
 00FE 8883              std y+0,R24
 0100 20E0              ldi R18,<_OStcbArea+14
 0102 30E0              ldi R19,>_OStcbArea+14
 0104 00E0              ldi R16,<PL_TaskC
 0106 10E0              ldi R17,>PL_TaskC
 0108 0E940000          xcall _OSCreateTask
 010C                   .dbline 104
 010C           ;     
 010C           ;     OSCreateBinSem(BINSEM_UPDATE_PORT_P, 0);
 010C 2227              clr R18
 010E 00E0              ldi R16,<_OSecbArea
 0110 10E0              ldi R17,>_OSecbArea
 0112 0E940000          xcall _OSCreateBinSem
 0116                   .dbline 106
 0116           ;     
 0116           ;     OSEi(); 
 0116 7894              sei
 0118                   .dbline 108
 0118           ;     
 0118           ;     for (;;)
 0118           L41:
 0118                   .dbline 109
 0118 0E940000          xcall _OSSched
 011C                   .dbline 108
 011C                   .dbline 108
 011C FDCF              xjmp L41
 011E           X3:
 011E                   .dbline -2
 011E           L35:
 011E 2196              adiw R28,1
 0120                   .dbline 0 ; func end
 0120 0895              ret
 0122                   .dbend
 0122                   .dbfunc e SPI_MasterInit _SPI_MasterInit fV
                        .even
 0122           _SPI_MasterInit::
 0122                   .dbline -1
 0122                   .dbline 112
 0122           ;         OSSched();
 0122           ; }
 0122           ; void SPI_MasterInit(void)
 0122           ; {
 0122                   .dbline 113
 0122           ;       DDRB=0xB0;
 0122 80EB              ldi R24,176
 0124 87BB              out 0x17,R24
 0126                   .dbline 114
 0126           ;       PORTB|=(1<<4);
 0126 C49A              sbi 0x18,4
 0128                   .dbline 115
 0128           ;       SPCR=(1<<SPE)|(1<<MSTR)|(1<<SPR0);
 0128 81E5              ldi R24,81
 012A 8DB9              out 0xd,R24
 012C                   .dbline -2
 012C           L45:
 012C                   .dbline 0 ; func end
 012C 0895              ret
 012E                   .dbend
 012E                   .dbfunc e SPI_SlaveInit _SPI_SlaveInit fV
                        .even
 012E           _SPI_SlaveInit::
 012E                   .dbline -1
 012E                   .dbline 119
 012E           ; }
 012E           ; 
 012E           ; void SPI_SlaveInit(void)
 012E           ; {
 012E                   .dbline 120
 012E           ;       DDRB=0x20;
 012E 80E2              ldi R24,32
 0130 87BB              out 0x17,R24
 0132                   .dbline 121
 0132           ;       SPCR=(1<<SPIE)|(1<<SPE)|(1<<SPR0);
 0132 81EC              ldi R24,193
 0134 8DB9              out 0xd,R24
 0136                   .dbline -2
 0136           L46:
 0136                   .dbline 0 ; func end
 0136 0895              ret
 0138                   .dbend
 0138                   .dbfunc e SPI_MasterTransmit _SPI_MasterTransmit fV
                        .even
 0138           _SPI_MasterTransmit::
 0138                   .dbline -1
 0138                   .dbline 124
 0138           ; }
 0138           ; void SPI_MasterTransmit(void)
 0138           ; {
 0138                   .dbline 125
 0138           ;       PORTB&=~(1<<4);
 0138 C498              cbi 0x18,4
 013A                   .dbline 126
 013A           ;       SPDR=(*Pout_SPI_TranFIfo);
 013A E0911300          lds R30,_Pout_SPI_TranFIfo
 013E F0911400          lds R31,_Pout_SPI_TranFIfo+1
 0142 2080              ldd R2,z+0
 0144 2FB8              out 0xf,R2
 0146           L48:
 0146                   .dbline 127
 0146           L49:
 0146                   .dbline 127
 0146           ;       while(!(SPSR&(1<<SPIF)));
 0146 779B              sbis 0xe,7
 0148 FECF              rjmp L48
 014A                   .dbline 128
 014A           ;       PORTB|=(1<<4);
 014A C49A              sbi 0x18,4
 014C                   .dbline -2
 014C           L47:
 014C                   .dbline 0 ; func end
 014C 0895              ret
 014E                   .dbend
 014E                   .dbfunc e SPI_SendPacket _SPI_SendPacket fV
 014E           ;        Pbuffer -> R22,R23
 014E           ;            len -> R20
                        .even
 014E           _SPI_SendPacket::
 014E 0E940000          xcall push_gset2
 0152 B901              movw R22,R18
 0154 402F              mov R20,R16
 0156                   .dbline -1
 0156                   .dbline 137
 0156           ; }
 0156           ; /*Uchar SPI_SlaveReveive(void)
 0156           ; {
 0156           ;       while(!(SPSR&(1<<SPIF)));
 0156           ;       return SPDR;
 0156           ;       
 0156           ; }*/
 0156           ; void SPI_SendPacket(Uchar len, Uchar * Pbuffer)
 0156           ; {
 0156                   .dbline 138
 0156           ;       SPI_MasterInit();
 0156 E5DF              xcall _SPI_MasterInit
 0158                   .dbline 139
 0158           ;       Pout_SPI_TranFIfo=Pbuffer;
 0158 70931400          sts _Pout_SPI_TranFIfo+1,R23
 015C 60931300          sts _Pout_SPI_TranFIfo,R22
 0160 0BC0              xjmp L53
 0162           L52:
 0162                   .dbline 141
 0162                   .dbline 142
 0162 EADF              xcall _SPI_MasterTransmit
 0164                   .dbline 143
 0164 4A95              dec R20
 0166                   .dbline 144
 0166 80911300          lds R24,_Pout_SPI_TranFIfo
 016A 90911400          lds R25,_Pout_SPI_TranFIfo+1
 016E 0196              adiw R24,1
 0170 90931400          sts _Pout_SPI_TranFIfo+1,R25
 0174 80931300          sts _Pout_SPI_TranFIfo,R24
 0178                   .dbline 145
 0178           L53:
 0178                   .dbline 140
 0178           ;       while(len>0)
 0178 2224              clr R2
 017A 2416              cp R2,R20
 017C 90F3              brlo L52
 017E                   .dbline 146
 017E           ;               {
 017E           ;               SPI_MasterTransmit();
 017E           ;               len--;
 017E           ;               Pout_SPI_TranFIfo++;
 017E           ;               }
 017E           ;       SPI_SlaveInit();
 017E D7DF              xcall _SPI_SlaveInit
 0180                   .dbline -2
 0180           L51:
 0180 0E940000          xcall pop_gset2
 0184                   .dbline 0 ; func end
 0184 0895              ret
 0186                   .dbsym r Pbuffer 22 pc
 0186                   .dbsym r len 20 c
 0186                   .dbend
 0186                   .dbfunc e SPI_isr _SPI_isr fV
                        .even
 0186           _SPI_isr::
 0186 2A92              st -y,R2
 0188 8A93              st -y,R24
 018A 9A93              st -y,R25
 018C EA93              st -y,R30
 018E FA93              st -y,R31
 0190 2FB6              in R2,0x3f
 0192 2A92              st -y,R2
 0194                   .dbline -1
 0194                   .dbline 149
 0194           ; }
 0194           ; void SPI_isr(void)
 0194           ; {
 0194                   .dbline 150
 0194           ;       PORTD=0x80;
 0194 80E8              ldi R24,128
 0196 82BB              out 0x12,R24
 0198                   .dbline 151
 0198           ;       if(SPI_validFrame)
 0198 80914200          lds R24,_bit_flag
 019C 8295              swap R24
 019E 8F70              andi R24,#0x0F
 01A0 8170              andi R24,1
 01A2 09F0              breq L56
 01A4                   .dbline 152
 01A4           ;               {return;}
 01A4                   .dbline 152
 01A4 61C0              xjmp L55
 01A6           L56:
 01A6                   .dbline 153
 01A6           ;       if(SPI_Status==0x00)
 01A6 20904100          lds R2,_SPI_Status
 01AA 2220              tst R2
 01AC 89F4              brne L58
 01AE                   .dbline 154
 01AE           ;               {
 01AE                   .dbline 155
 01AE           ;               SPI_data=SPDR;
 01AE 2FB0              in R2,0xf
 01B0 20924000          sts _SPI_data,R2
 01B4                   .dbline 156
 01B4           ;               if(SPI_data!=0x68)
 01B4 822D              mov R24,R2
 01B6 8836              cpi R24,104
 01B8 21F0              breq L60
 01BA                   .dbline 157
 01BA           ;                       {
 01BA                   .dbline 158
 01BA           ;                       SPI_Status=0x00;
 01BA 2224              clr R2
 01BC 20924100          sts _SPI_Status,R2
 01C0                   .dbline 159
 01C0           ;                       }
 01C0 53C0              xjmp L59
 01C2           L60:
 01C2                   .dbline 161
 01C2           ;               else
 01C2           ;                       {
 01C2                   .dbline 162
 01C2           ;                       SPI_RecvFifo[0]=0x68;
 01C2 88E6              ldi R24,104
 01C4 80932B00          sts _SPI_RecvFifo,R24
 01C8                   .dbline 163
 01C8           ;                       SPI_Status=0x01;
 01C8 81E0              ldi R24,1
 01CA 80934100          sts _SPI_Status,R24
 01CE                   .dbline 164
 01CE           ;                       }
 01CE                   .dbline 165
 01CE           ;               }
 01CE 4CC0              xjmp L59
 01D0           L58:
 01D0                   .dbline 166
 01D0           ;       else if(SPI_Status==0x01)
 01D0 80914100          lds R24,_SPI_Status
 01D4 8130              cpi R24,1
 01D6 49F4              brne L62
 01D8                   .dbline 167
 01D8           ;               {
 01D8                   .dbline 168
 01D8           ;               SPI_DatLen=SPDR;
 01D8 2FB0              in R2,0xf
 01DA 20923E00          sts _SPI_DatLen,R2
 01DE                   .dbline 169
 01DE           ;               SPI_RecvFifo[1]=SPI_DatLen;
 01DE 20922C00          sts _SPI_RecvFifo+1,R2
 01E2                   .dbline 170
 01E2           ;               SPI_Status=0x02;
 01E2 82E0              ldi R24,2
 01E4 80934100          sts _SPI_Status,R24
 01E8                   .dbline 171
 01E8           ;               }
 01E8 3FC0              xjmp L63
 01EA           L62:
 01EA                   .dbline 172
 01EA           ;       else if(SPI_Status==0x02)
 01EA 80914100          lds R24,_SPI_Status
 01EE 8230              cpi R24,2
 01F0 C9F4              brne L65
 01F2                   .dbline 173
 01F2           ;               {
 01F2                   .dbline 174
 01F2           ;               SPI_RecvFifo[SPI_DatConter+2]=SPDR;
 01F2 80E0              ldi R24,<_SPI_RecvFifo+2
 01F4 90E0              ldi R25,>_SPI_RecvFifo+2
 01F6 E0913D00          lds R30,_SPI_DatConter
 01FA FF27              clr R31
 01FC E80F              add R30,R24
 01FE F91F              adc R31,R25

⌨️ 快捷键说明

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