📄 main.lis
字号:
0296 .dbline -1
0296 .dbline 146
0296 ; //all peripherals are now initialized
0296 ; }
0296 ; //UART1 initialize
0296 ; // desired baud rate:9600
0296 ; // actual baud rate:9615 (0.2%)
0296 ; void uart1_init(void)
0296 ; {
0296 .dbline 147
0296 ; UCSR1B = 0x00; //disable while setting baud rate
0296 2224 clr R2
0298 20929A00 sts 154,R2
029C .dbline 148
029C ; UCSR1A = 0x00;
029C 20929B00 sts 155,R2
02A0 .dbline 149
02A0 ; UCSR1C = 0x06;
02A0 86E0 ldi R24,6
02A2 80939D00 sts 157,R24
02A6 .dbline 150
02A6 ; UBRR1L = 0x33; //set baud rate lo
02A6 83E3 ldi R24,51
02A8 80939900 sts 153,R24
02AC .dbline 151
02AC ; UBRR1H = 0x00; //set baud rate hi
02AC 20929800 sts 152,R2
02B0 .dbline 152
02B0 ; UCSR1B = 0x98;
02B0 88E9 ldi R24,152
02B2 80939A00 sts 154,R24
02B6 .dbline -2
02B6 L16:
02B6 .dbline 0 ; func end
02B6 0895 ret
02B8 .dbend
.area vector(rom, abs)
.org 120
0078 0C945C01 jmp _uart1_rx_isr
.area text(rom, con, rel)
02B8 .dbfile C:\DOCUME~1\ZDH\桌面\JOHU_2~1.180\digital_duoji\main.c
02B8 .dbfunc e uart1_rx_isr _uart1_rx_isr fV
.even
02B8 _uart1_rx_isr::
02B8 0A92 st -y,R0
02BA 1A92 st -y,R1
02BC 2A92 st -y,R2
02BE 3A92 st -y,R3
02C0 4A92 st -y,R4
02C2 5A92 st -y,R5
02C4 0A93 st -y,R16
02C6 1A93 st -y,R17
02C8 2A93 st -y,R18
02CA 3A93 st -y,R19
02CC 8A93 st -y,R24
02CE 9A93 st -y,R25
02D0 EA93 st -y,R30
02D2 FA93 st -y,R31
02D4 0FB6 in R0,0x3f
02D6 0A92 st -y,R0
02D8 .dbline -1
02D8 .dbline 158
02D8 ; }
02D8 ;
02D8 ; #pragma interrupt_handler uart1_rx_isr:31
02D8 ; //cir+00100
02D8 ; void uart1_rx_isr(void)
02D8 ; {
02D8 .dbline 160
02D8 ; //uart has received a character in UDR
02D8 ; if (all==CIR)
02D8 80911600 lds R24,_all
02DC 8130 cpi R24,1
02DE 09F0 breq X25
02E0 B9C0 xjmp L18
02E2 X25:
02E2 X5:
02E2 .dbline 161
02E2 ; {
02E2 .dbline 162
02E2 ; a=b;
02E2 20901800 lds R2,_b
02E6 20921700 sts _a,R2
02EA .dbline 163
02EA ; b=c;
02EA 20901900 lds R2,_c
02EE 20921800 sts _b,R2
02F2 .dbline 164
02F2 ; c=d;
02F2 20901A00 lds R2,_d
02F6 20921900 sts _c,R2
02FA .dbline 165
02FA ; d=e;
02FA 20901B00 lds R2,_e
02FE 20921A00 sts _d,R2
0302 .dbline 166
0302 ; e=f;
0302 20901C00 lds R2,_f
0306 20921B00 sts _e,R2
030A .dbline 167
030A ; f=UDR1;
030A 20909C00 lds R2,156
030E 20921C00 sts _f,R2
0312 .dbline 168
0312 ; if ((f<'0')||(f>'9'))return;
0312 822D mov R24,R2
0314 8033 cpi R24,48
0316 18F0 brlo L22
0318 X6:
0318 89E3 ldi R24,57
031A 8215 cp R24,R2
031C 08F4 brsh L20
031E X7:
031E L22:
031E .dbline 168
031E AAC1 xjmp L17
0320 L20:
0320 .dbline 169
0320 ; if (a=='+')//0x2b
0320 80911700 lds R24,_a
0324 8B32 cpi R24,43
0326 09F0 breq X26
0328 41C0 xjmp L23
032A X26:
032A X8:
032A .dbline 170
032A ; {jiaodu=(b-48)*10000+(c-48)*1000+(d-48)*100+(e-48)*10+(f-48);
032A .dbline 170
032A 20911900 lds R18,_c
032E 3327 clr R19
0330 08EE ldi R16,1000
0332 13E0 ldi R17,3
0334 0E940000 xcall empy16s
0338 C801 movw R24,R16
033A 8058 subi R24,128
033C 9B4B sbci R25,187
033E 20911800 lds R18,_b
0342 3327 clr R19
0344 00E1 ldi R16,10000
0346 17E2 ldi R17,39
0348 0E940000 xcall empy16s
034C F801 movw R30,R16
034E E050 subi R30,0
0350 F345 sbci R31,83
0352 E80F add R30,R24
0354 F91F adc R31,R25
0356 20901A00 lds R2,_d
035A 84E6 ldi R24,100
035C 829D mul R24,R2
035E C001 movw R24,R0
0360 805C subi R24,192
0362 9241 sbci R25,18
0364 E80F add R30,R24
0366 F91F adc R31,R25
0368 20901B00 lds R2,_e
036C 8AE0 ldi R24,10
036E 829D mul R24,R2
0370 C001 movw R24,R0
0372 805E subi R24,224
0374 9140 sbci R25,1
0376 E80F add R30,R24
0378 F91F adc R31,R25
037A 80911C00 lds R24,_f
037E 9927 clr R25
0380 C097 sbiw R24,48
0382 E80F add R30,R24
0384 F91F adc R31,R25
0386 1F01 movw R2,R30
0388 4424 clr R4
038A 37FC sbrc R3,7
038C 4094 com R4
038E 5524 clr R5
0390 47FC sbrc R4,7
0392 5094 com R5
0394 30921E00 sts _jiaodu+1,R3
0398 20921D00 sts _jiaodu,R2
039C 50922000 sts _jiaodu+2+1,R5
03A0 40921F00 sts _jiaodu+2,R4
03A4 .dbline 171
03A4 ; all=0;return;}
03A4 2224 clr R2
03A6 20921600 sts _all,R2
03AA .dbline 171
03AA 64C1 xjmp L17
03AC L23:
03AC .dbline 172
03AC ; else if (a=='-')//0x2d
03AC 80911700 lds R24,_a
03B0 8D32 cpi R24,45
03B2 09F0 breq X27
03B4 46C0 xjmp L25
03B6 X27:
03B6 X9:
03B6 .dbline 173
03B6 ; {jiaodu=-((b-48)*10000+(c-48)*1000+(d-48)*100+(e-48)*10+(f-48));
03B6 .dbline 173
03B6 20911900 lds R18,_c
03BA 3327 clr R19
03BC 08EE ldi R16,1000
03BE 13E0 ldi R17,3
03C0 0E940000 xcall empy16s
03C4 C801 movw R24,R16
03C6 8058 subi R24,128
03C8 9B4B sbci R25,187
03CA 20911800 lds R18,_b
03CE 3327 clr R19
03D0 00E1 ldi R16,10000
03D2 17E2 ldi R17,39
03D4 0E940000 xcall empy16s
03D8 F801 movw R30,R16
03DA E050 subi R30,0
03DC F345 sbci R31,83
03DE E80F add R30,R24
03E0 F91F adc R31,R25
03E2 20901A00 lds R2,_d
03E6 84E6 ldi R24,100
03E8 829D mul R24,R2
03EA C001 movw R24,R0
03EC 805C subi R24,192
03EE 9241 sbci R25,18
03F0 E80F add R30,R24
03F2 F91F adc R31,R25
03F4 20901B00 lds R2,_e
03F8 8AE0 ldi R24,10
03FA 829D mul R24,R2
03FC C001 movw R24,R0
03FE 805E subi R24,224
0400 9140 sbci R25,1
0402 E80F add R30,R24
0404 F91F adc R31,R25
0406 80911C00 lds R24,_f
040A 9927 clr R25
040C C097 sbiw R24,48
040E E80F add R30,R24
0410 F91F adc R31,R25
0412 CF01 movw R24,R30
0414 8095 com R24
0416 9095 com R25
0418 8F5F subi R24,0xFF
041A 9F4F sbci R25,0xFF
041C 1C01 movw R2,R24
041E 4424 clr R4
0420 37FC sbrc R3,7
0422 4094 com R4
0424 5524 clr R5
0426 47FC sbrc R4,7
0428 5094 com R5
042A 30921E00 sts _jiaodu+1,R3
042E 20921D00 sts _jiaodu,R2
0432 50922000 sts _jiaodu+2+1,R5
0436 40921F00 sts _jiaodu+2,R4
043A .dbline 174
043A ; all=0;return;}
043A 2224 clr R2
043C 20921600 sts _all,R2
0440 .dbline 174
0440 19C1 xjmp L17
0442 L25:
0442 .dbline 175
0442 ; if (a!=0) {all=0;return;}
0442 20901700 lds R2,_a
0446 2220 tst R2
0448 09F4 brne X28
044A 14C1 xjmp L19
044C X28:
044C X10:
044C .dbline 175
044C .dbline 175
044C 2224 clr R2
044E 20921600 sts _all,R2
0452 .dbline 175
0452 10C1 xjmp L17
0454 L18:
0454 .dbline 178
0454 ; //PORTF=jiaodu;//while(1);
0454 ; }
0454 ; else if (all==LINE)
0454 80911600 lds R24,_all
0458 8230 cpi R24,2
045A 09F0 breq X29
045C B9C0 xjmp L29
045E X29:
045E X11:
045E .dbline 179
045E ; {
045E .dbline 180
045E ; a=b;
045E 20901800 lds R2,_b
0462 20921700 sts _a,R2
0466 .dbline 181
0466 ; b=c;
0466 20901900 lds R2,_c
046A 20921800 sts _b,R2
046E .dbline 182
046E ; c=d;
046E 20901A00 lds R2,_d
0472 20921900 sts _c,R2
0476 .dbline 183
0476 ; d=e;
0476 20901B00 lds R2,_e
047A 20921A00 sts _d,R2
047E .dbline 184
047E ; e=f;
047E 20901C00 lds R2,_f
0482 20921B00 sts _e,R2
0486 .dbline 185
0486 ; f=UDR1;
0486 20909C00 lds R2,156
048A 20921C00 sts _f,R2
048E .dbline 186
048E ; if ((f<'0')||(f>'9'))return;
048E 822D mov R24,R2
0490 8033 cpi R24,48
0492 18F0 brlo L33
0494 X12:
0494 89E3 ldi R24,57
0496 8215 cp R24,R2
0498 08F4 brsh L31
049A X13:
049A L33:
049A .dbline 186
049A ECC0 xjmp L17
049C L31:
049C .dbline 187
049C ; if (a=='+')
049C 80911700 lds R24,_a
04A0 8B32 cpi R24,43
04A2 09F0 breq X30
04A4 41C0 xjmp L34
04A6 X30:
04A6 X14:
04A6 .dbline 188
04A6 ; {juli=(b-48)*10000+(c-48)*1000+(d-48)*100+(e-48)*10+(f-48);
04A6 .dbline 188
04A6 20911900 lds R18,_c
04AA 3327 clr R19
04AC 08EE ldi R16,1000
04AE 13E0 ldi R17,3
04B0 0E940000 xcall empy16s
04B4 C801 movw R24,R16
04B6 8058 subi R24,128
04B8 9B4B sbci R25,187
04BA 20911800 lds R18,_b
04BE 3327 clr R19
04C0 00E1 ldi R16,10000
04C2 17E2 ldi R17,39
04C4 0E940000 xcall empy16s
04C8 F801 movw R30,R16
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -