📄 main.lis
字号:
019C 19F4 brne L28
019E X11:
019E .dbline 106
019E 2224 clr R2
01A0 20920100 sts _tx_rd_index0,R2
01A4 L28:
01A4 .dbline 107
01A4 ; };
01A4 L26:
01A4 .dbline 107
01A4 .dbline -2
01A4 L25:
01A4 .dbline 0 ; func end
01A4 2990 ld R2,y+
01A6 2FBE out 0x3f,R2
01A8 F991 ld R31,y+
01AA E991 ld R30,y+
01AC 9991 ld R25,y+
01AE 8991 ld R24,y+
01B0 2990 ld R2,y+
01B2 1895 reti
01B4 .dbend
01B4 .dbfunc e putchar _putchar fV
01B4 ; IisOn -> R20
01B4 ; c -> R16
.even
01B4 _putchar::
01B4 4A93 st -y,R20
01B6 .dbline -1
01B6 .dbline 114
01B6 ; }
01B6 ;
01B6 ;
01B6 ;
01B6 ; // Write a character to the USART0 Transmitter buffer
01B6 ; void putchar(char c)
01B6 ; {
01B6 .dbline 115
01B6 ; char IisOn = 1;
01B6 41E0 ldi R20,1
01B8 .dbline 116
01B8 ; if((SREG & 0x80) == 0x00) //I之前是否置位
01B8 2FB6 in R2,0x3f
01BA 27FC sbrc R2,7
01BC 01C0 rjmp L34
01BE X12:
01BE .dbline 117
01BE ; IisOn = 0;
01BE 4427 clr R20
01C0 L33:
01C0 .dbline 118
01C0 ; while (tx_counter0 == TX_BUFFER_SIZE0);
01C0 L34:
01C0 .dbline 118
01C0 80910000 lds R24,_tx_counter0
01C4 8431 cpi R24,20
01C6 E1F3 breq L33
01C8 X13:
01C8 .dbline 119
01C8 ; CLI();
01C8 F894 cli
01CA .dbline 120
01CA ; if (tx_counter0 || ((UCSR0A & DATA_REGISTER_EMPTY)==0))
01CA 20900000 lds R2,_tx_counter0
01CE 2220 tst R2
01D0 21F4 brne L38
01D2 X14:
01D2 2090C000 lds R2,192
01D6 25FC sbrc R2,5
01D8 19C0 rjmp L36
01DA X15:
01DA L38:
01DA .dbline 121
01DA ; {
01DA .dbline 122
01DA ; tx_buffer0[tx_wr_index0]=c;
01DA 80E0 ldi R24,<_tx_buffer0
01DC 90E0 ldi R25,>_tx_buffer0
01DE E0910200 lds R30,_tx_wr_index0
01E2 FF27 clr R31
01E4 E80F add R30,R24
01E6 F91F adc R31,R25
01E8 0083 std z+0,R16
01EA .dbline 123
01EA ; if (++tx_wr_index0 == TX_BUFFER_SIZE0) tx_wr_index0=0;
01EA 80910200 lds R24,_tx_wr_index0
01EE 8F5F subi R24,255 ; addi 1
01F0 282E mov R2,R24
01F2 20920200 sts _tx_wr_index0,R2
01F6 8431 cpi R24,20
01F8 19F4 brne L39
01FA X16:
01FA .dbline 123
01FA 2224 clr R2
01FC 20920200 sts _tx_wr_index0,R2
0200 L39:
0200 .dbline 124
0200 ; ++tx_counter0;
0200 80910000 lds R24,_tx_counter0
0204 8F5F subi R24,255 ; addi 1
0206 80930000 sts _tx_counter0,R24
020A .dbline 125
020A ; }
020A 02C0 rjmp L37
020C L36:
020C .dbline 127
020C ; else
020C ; UDR0=c;
020C 0093C600 sts 198,R16
0210 L37:
0210 .dbline 128
0210 ; if(IisOn)
0210 4423 tst R20
0212 09F0 breq L41
0214 X17:
0214 .dbline 129
0214 ; SEI();
0214 7894 sei
0216 L41:
0216 .dbline -2
0216 L30:
0216 .dbline 0 ; func end
0216 4991 ld R20,y+
0218 0895 ret
021A .dbsym r IisOn 20 c
021A .dbsym r c 16 c
021A .dbend
021A .dbfunc e DisposeBufDatas _DisposeBufDatas fV
021A ; spray2NumH -> R14
021A ; spray2NumL -> R12
021A ; spray1NumH -> y+6
021A ; spray1NumL -> y+5
021A ; tPump1On -> R10
021A ; tSpray1Cyc -> y+3
021A ; tSpray1On -> y+2
021A ; tPump1Cyc -> y+1
021A ; IisOn -> y+0
.even
021A _DisposeBufDatas::
021A 00D0 rcall push_xgsetF0FC
021C 2797 sbiw R28,7
021E .dbline -1
021E .dbline 133
021E ; }
021E ;
021E ; void DisposeBufDatas(void)
021E ; {
021E .dbline 150
021E ; //定义变量
021E ; unsigned char tPump1Cyc; //油泵1周期,单位ms
021E ; unsigned char tSpray1On; //喷射脉宽,单位0.1ms
021E ; //unsigned char tSpray1OnH;
021E ; unsigned int tSpray1Cyc; //喷射周期,单位ms
021E ; unsigned char tPump1On; //油泵1脉宽,单位0.1ms
021E ; char spray1NumL; //SprayNum低字节
021E ; char spray1NumH; //SprayNum高字节
021E ;
021E ; //unsigned char tPump2Cyc; //油泵2周期,单位ms
021E ; //unsigned char tSpray2On; //喷射脉宽,单位0.1ms
021E ; //unsigned int tSpray2Cyc; //喷射周期,单位ms
021E ; //unsigned char tPump2On; //油泵2脉宽,单位0.1ms
021E ; char spray2NumL; //SprayNum低字节
021E ; char spray2NumH; //SprayNum高字节
021E ;
021E ; char IisOn = 1;
021E 0024 clr R0
0220 0394 inc R0
0222 0882 std y+0,R0
0224 .dbline 151
0224 ; if((SREG & 0x80) == 0x00) //I之前是否置位
0224 2FB6 in R2,0x3f
0226 27FC sbrc R2,7
0228 02C0 rjmp L44
022A X18:
022A .dbline 152
022A ; IisOn = 0;
022A 0024 clr R0
022C 0882 std y+0,R0
022E L44:
022E .dbline 154
022E ;
022E ; if(rx_error0) //接收错误
022E 20901800 lds R2,_rx_error0
0232 2220 tst R2
0234 59F0 breq L46
0236 X19:
0236 .dbline 155
0236 ; {
0236 .dbline 156
0236 ; CLI();
0236 F894 cli
0238 .dbline 157
0238 ; putchar(SENDAGAIN);
0238 0EEF ldi R16,254
023A BCDF rcall _putchar
023C .dbline 158
023C ; putchar(SENDAGAIN);
023C 0EEF ldi R16,254
023E BADF rcall _putchar
0240 .dbline 159
0240 ; if(IisOn)
0240 0880 ldd R0,y+0
0242 0020 tst R0
0244 09F4 brne X22
0246 F2C0 rjmp L47
0248 X22:
0248 X20:
0248 .dbline 160
0248 ; SEI();
0248 7894 sei
024A .dbline 161
024A ; }
024A F0C0 rjmp L47
024C L46:
024C .dbline 163
024C ; else
024C ; {
024C .dbline 164
024C ; spray1NumL = getchar();
024C 60DF rcall _getchar
024E 0D83 std y+5,R16
0250 .dbline 165
0250 ; spray1NumH = getchar();
0250 5EDF rcall _getchar
0252 0E83 std y+6,R16
0254 .dbline 166
0254 ; tSpray1On = getchar();
0254 5CDF rcall _getchar
0256 A02E mov R10,R16
0258 AA82 std y+2,R10
025A .dbline 167
025A ; tSpray1Cyc = getchar();
025A 59DF rcall _getchar
025C A02E mov R10,R16
025E 2A2C mov R2,R10
0260 3324 clr R3
0262 3C82 std y+4,R3
0264 2B82 std y+3,R2
0266 .dbline 168
0266 ; tPump1Cyc = getchar();
0266 53DF rcall _getchar
0268 A02E mov R10,R16
026A A982 std y+1,R10
026C .dbline 169
026C ; tPump1On = getchar();
026C 50DF rcall _getchar
026E A02E mov R10,R16
0270 .dbline 171
0270 ;
0270 ; spray2NumL = getchar();
0270 4EDF rcall _getchar
0272 C02E mov R12,R16
0274 .dbline 172
0274 ; spray2NumH = getchar();
0274 4CDF rcall _getchar
0276 E02E mov R14,R16
0278 .dbline 189
0278 ; //tSpray2On = getchar();
0278 ; //tSpray2Cyc = getchar();
0278 ; //tPump2Cyc = getchar();
0278 ; //tPump2On = getchar();
0278 ;
0278 ; /************debug*****************/
0278 ; //putchar(sprayNumL); //debug
0278 ; //putchar(sprayNumH); //debug
0278 ; // putchar(tPump1Cyc); //debug
0278 ; //putchar(tSprayOn); //debug
0278 ; //putchar(tSprayCyc); //debug
0278 ; //putchar(tPivDelay); //debug
0278 ;
0278 ; //**********************************/
0278 ;
0278 ; //转换数据
0278 ; Pump1Num = (int)spray1NumL + ((int)spray1NumH << 8);
0278 2E80 ldd R2,y+6
027A 3324 clr R3
027C 322C mov R3,R2
027E 2224 clr R2
0280 4D80 ldd R4,y+5
0282 5524 clr R5
0284 420C add R4,R2
0286 531C adc R5,R3
0288 1201 movw R2,R4
028A 4424 clr R4
028C 37FC sbrc R3,7
028E 4094 com R4
0290 5524 clr R5
0292 47FC sbrc R4,7
0294 5094 com R5
0296 30920B00 sts _Pump1Num+1,R3
029A 20920A00 sts _Pump1Num,R2
029E 50920D00 sts _Pump1Num+2+1,R5
02A2 40920C00 sts _Pump1Num+2,R4
02A6 .dbline 190
02A6 ; PPump1Num = Pump1Num;
02A6 30921900 sts _PPump1Num+1,R3
02AA 20921800 sts _PPump1Num,R2
02AE 50921B00 sts _PPump1Num+2+1,R5
02B2 40921A00 sts _PPump1Num+2,R4
02B6 .dbline 191
02B6 ; Spray1Num = Pump1Num ;
02B6 30920100 sts _Spray1Num+1,R3
02BA 20920000 sts _Spray1Num,R2
02BE 50920300 sts _Spray1Num+2+1,R5
02C2 40920200 sts _Spray1Num+2,R4
02C6 .dbline 192
02C6 ; SSpray1Num = Spray1Num;
02C6 40900200 lds R4,_Spray1Num+2
02CA 50900300 lds R5,_Spray1Num+2+1
02CE 20900000 lds R2,_Spray1Num
02D2 30900100 lds R3,_Spray1Num+1
02D6 30921D00 sts _SSpray1Num+1,R3
02DA 20921C00 sts _SSpray1Num,R2
02DE 50921F00 sts _SSpray1Num+2+1,R5
02E2 40921E00 sts _SSpray1Num+2,R4
02E6 .dbline 193
02E6 ; CPump1Cyc = tPump1Cyc * 1000-370;//修正0.37ms
02E6 2981 ldd R18,y+1
02E8 3327 clr R19
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -