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