📄 uart.lis
字号:
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 ; sprayNumH -> y+3
021A ; sprayNumL -> y+2
021A ; tPivDelay -> R12
021A ; tSprayCyc -> R14,R15
021A ; tSprayOn -> R10
021A ; tPumpCyc -> y+1
021A ; IisOn -> y+0
.even
021A _DisposeBufDatas::
021A 00D0 rcall push_xgsetF0FC
021C 2497 sbiw R28,4
021E .dbline -1
021E .dbline 133
021E ; }
021E ;
021E ; void DisposeBufDatas(void)
021E ; {
021E .dbline 142
021E ; //定义变量
021E ; unsigned char tPumpCyc; //换能器周期,单位s
021E ; unsigned char tSprayOn; //喷射脉宽,单位0.1ms
021E ; unsigned int tSprayCyc; //喷射周期,单位ms
021E ; unsigned char tPivDelay; //piv脉宽延时,单位0.1ms
021E ; char sprayNumL; //SprayNum低字节
021E ; char sprayNumH; //SprayNum高字节
021E ;
021E ; char IisOn = 1;
021E 0024 clr R0
0220 0394 inc R0
0222 0882 std y+0,R0
0224 .dbline 143
0224 ; if((SREG & 0x80) == 0x00) //I之前是否置位
0224 2FB6 in R2,0x3f
0226 27FC sbrc R2,7
0228 02C0 rjmp L44
022A X18:
022A .dbline 144
022A ; IisOn = 0;
022A 0024 clr R0
022C 0882 std y+0,R0
022E L44:
022E .dbline 146
022E ;
022E ; if(rx_error0) //接收错误
022E 20900C00 lds R2,_rx_error0
0232 2220 tst R2
0234 59F0 breq L46
0236 X19:
0236 .dbline 147
0236 ; {
0236 .dbline 148
0236 ; CLI();
0236 F894 cli
0238 .dbline 149
0238 ; putchar(SENDAGAIN);
0238 0EEF ldi R16,254
023A BCDF rcall _putchar
023C .dbline 150
023C ; putchar(SENDAGAIN);
023C 0EEF ldi R16,254
023E BADF rcall _putchar
0240 .dbline 151
0240 ; if(IisOn)
0240 0880 ldd R0,y+0
0242 0020 tst R0
0244 09F4 brne X23
0246 76C0 rjmp L47
0248 X23:
0248 X20:
0248 .dbline 152
0248 ; SEI();
0248 7894 sei
024A .dbline 153
024A ; }
024A 74C0 rjmp L47
024C L46:
024C .dbline 155
024C ; else
024C ; {
024C .dbline 156
024C ; sprayNumL = getchar();
024C 60DF rcall _getchar
024E 0A83 std y+2,R16
0250 .dbline 157
0250 ; sprayNumH = getchar();
0250 5EDF rcall _getchar
0252 0B83 std y+3,R16
0254 .dbline 158
0254 ; tPumpCyc = (unsigned int )getchar();
0254 5CDF rcall _getchar
0256 A02E mov R10,R16
0258 2A2C mov R2,R10
025A 3324 clr R3
025C 2982 std y+1,R2
025E .dbline 159
025E ; tSprayOn = getchar();
025E 57DF rcall _getchar
0260 A02E mov R10,R16
0262 .dbline 160
0262 ; tSprayCyc = getchar();
0262 55DF rcall _getchar
0264 C02E mov R12,R16
0266 EC2C mov R14,R12
0268 FF24 clr R15
026A .dbline 161
026A ; tPivDelay = getchar();
026A 51DF rcall _getchar
026C C02E mov R12,R16
026E .dbline 174
026E ;
026E ; /************debug*****************
026E ; putchar(sprayNumL); //debug
026E ; putchar(sprayNumH); //debug
026E ; putchar(tPumpCyc); //debug
026E ; putchar(tSprayOn); //debug
026E ; putchar(tSprayCyc); //debug
026E ; putchar(tPivDelay); //debug
026E ;
026E ; //**********************************/
026E ;
026E ; //转换数据
026E ; SprayNum = (int)sprayNumL + ((int)sprayNumH << 8);
026E 2B80 ldd R2,y+3
0270 3324 clr R3
0272 322C mov R3,R2
0274 2224 clr R2
0276 4A80 ldd R4,y+2
0278 5524 clr R5
027A 420C add R4,R2
027C 531C adc R5,R3
027E 50920100 sts _SprayNum+1,R5
0282 40920000 sts _SprayNum,R4
0286 .dbline 175
0286 ; T1OveForPump = (unsigned char)(tPumpCyc * 1000 / (2 * 65.536));
0286 2981 ldd R18,y+1
0288 3327 clr R19
028A 08EE ldi R16,1000
028C 13E0 ldi R17,3
028E 00D0 rcall empy16s
0290 00D0 rcall int2fp
0292 1801 movw R2,R16
0294 2901 movw R4,R18
0296 00E0 ldi R16,<L50
0298 10E0 ldi R17,>L50
029A 00D0 rcall lpm32
029C 3A93 st -y,R19
029E 2A93 st -y,R18
02A0 1A93 st -y,R17
02A2 0A93 st -y,R16
02A4 8101 movw R16,R2
02A6 9201 movw R18,R4
02A8 00D0 rcall fpdiv2
02AA 00D0 rcall fpint
02AC 202E mov R2,R16
02AE 3324 clr R3
02B0 30920B00 sts _T1OveForPump+1,R3
02B4 20920A00 sts _T1OveForPump,R2
02B8 .dbline 176
02B8 ; CSprayOn = (unsigned int)(tSprayOn * 10 );
02B8 8AE0 ldi R24,10
02BA 8A9D mul R24,R10
02BC 10920700 sts _CSprayOn+1,R1
02C0 00920600 sts _CSprayOn,R0
02C4 .dbline 177
02C4 ; CSprayCyc = (unsigned long )tSprayCyc * 1000 ;
02C4 1701 movw R2,R14
02C6 4424 clr R4
02C8 5524 clr R5
02CA 48EE ldi R20,232
02CC 53E0 ldi R21,3
02CE 60E0 ldi R22,0
02D0 70E0 ldi R23,0
02D2 5A92 st -y,R5
02D4 4A92 st -y,R4
02D6 3A92 st -y,R3
02D8 2A92 st -y,R2
02DA 8A01 movw R16,R20
02DC 9B01 movw R18,R22
02DE 00D0 rcall empy32u
02E0 10930300 sts _CSprayCyc+1,R17
02E4 00930200 sts _CSprayCyc,R16
02E8 30930500 sts _CSprayCyc+2+1,R19
02EC 20930400 sts _CSprayCyc+2,R18
02F0 .dbline 178
02F0 ; CPivDelay = (unsigned int)(tPivDelay * 100 );
02F0 84E6 ldi R24,100
02F2 8C9D mul R24,R12
02F4 10920900 sts _CPivDelay+1,R1
02F8 00920800 sts _CPivDelay,R0
02FC .dbline 180
02FC ;
02FC ; if(CSprayCyc > 0xffff)
02FC 4FEF ldi R20,255
02FE 5FEF ldi R21,255
0300 60E0 ldi R22,0
0302 70E0 ldi R23,0
0304 1801 movw R2,R16
0306 2901 movw R4,R18
0308 4017 cp R20,R16
030A 5107 cpc R21,R17
030C 6207 cpc R22,R18
030E 7307 cpc R23,R19
0310 40F4 brsh L51
0312 X21:
0312 .dbline 181
0312 ; {
0312 .dbline 182
0312 ; IsLongCyc = 1;
0312 81E0 ldi R24,1
0314 80930E00 sts _IsLongCyc,R24
0318 .dbline 183
0318 ; HighByte = (unsigned char )(CSprayCyc >> 16);
0318 1201 movw R2,R4
031A 4424 clr R4
031C 5524 clr R5
031E 20920F00 sts _HighByte,R2
0322 .dbline 184
0322 ; }
0322 L51:
0322 .dbline 186
0322 ;
0322 ; CLI(); //禁止中断,保证以下发送的两字节连续
0322 F894 cli
0324 .dbline 187
0324 ; putchar(REVSUCCEED); //回传接收成功标志
0324 0CEF ldi R16,252
0326 46DF rcall _putchar
0328 .dbline 188
0328 ; putchar(REVSUCCEED); //回传接收成功标志
0328 0CEF ldi R16,252
032A 44DF rcall _putchar
032C .dbline 190
032C ;
032C ; if(IisOn)
032C 0880 ldd R0,y+0
032E 0020 tst R0
0330 09F0 breq L53
0332 X22:
0332 .dbline 191
0332 ; SEI();
0332 7894 sei
0334 L53:
0334 .dbline 192
0334 ; }
0334 L47:
0334 .dbline 193
0334 ; FlashRxBuf();
0334 65DE rcall _FlashRxBuf
0336 .dbline -2
0336 L43:
0336 .dbline 0 ; func end
0336 2496 adiw R28,4
0338 00C0 rjmp pop_xgsetF0FC
033A .dbsym l sprayNumH 3 c
033A .dbsym l sprayNumL 2 c
033A .dbsym r tPivDelay 12 c
033A .dbsym r tSprayCyc 14 i
033A .dbsym r tSprayOn 10 c
033A .dbsym l tPumpCyc 1 c
033A .dbsym l IisOn 0 c
033A .dbend
.area bss(ram, con, rel)
0000 .dbfile C:\DOCUME~1\Administrator\桌面\avr1\uart.c
0000 _tx_counter0::
0000 .blkb 1
0001 .dbfile C:\DOCUME~1\Administrator\桌面\avr1\uart.h
0001 .dbsym e tx_counter0 _tx_counter0 c
0001 _tx_rd_index0::
0001 .blkb 1
0002 .dbsym e tx_rd_index0 _tx_rd_index0 c
0002 _tx_wr_index0::
0002 .blkb 1
0003 .dbsym e tx_wr_index0 _tx_wr_index0 c
0003 _tx_buffer0::
0003 .blkb 8
000B .dbsym e tx_buffer0 _tx_buffer0 A[8:8]c
000B _FrameHead0::
000B .blkb 1
000C .dbsym e FrameHead0 _FrameHead0 c
000C _rx_error0::
000C .blkb 1
000D .dbsym e rx_error0 _rx_error0 c
000D _rx_counter0::
000D .blkb 1
000E .dbsym e rx_counter0 _rx_counter0 c
000E _rx_rd_index0::
000E .blkb 1
000F .dbsym e rx_rd_index0 _rx_rd_index0 c
000F _rx_buffer0::
000F .blkb 8
0017 .dbsym e rx_buffer0 _rx_buffer0 A[8:8]c
.area lit(rom, con, rel)
0000 L50:
0000 6F120343 .word 0x126f,0x4303
0004 ;
0004 ; }//DisposeBufDatas(void)结束
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -