📄 main.lis
字号:
0278 ; timer2_init();
0278 D7DE xcall _timer2_init
027A .dbline 135
027A ;
027A ; adc_init();uart1_init();
027A E6DF xcall _adc_init
027C .dbline 135
027C 0CD0 xcall _uart1_init
027E .dbline 137
027E ;
027E ; MCUCR = 0x00;
027E 2224 clr R2
0280 25BE out 0x35,R2
0282 .dbline 138
0282 ; EICRA = 0x00; //extended ext ints
0282 20926A00 sts 106,R2
0286 .dbline 139
0286 ; EICRB = 0x00; //extended ext ints
0286 2ABE out 0x3a,R2
0288 .dbline 140
0288 ; EIMSK = 0x00;
0288 29BE out 0x39,R2
028A .dbline 141
028A ; TIMSK = 0x20; //timer interrupt sources
028A 80E2 ldi R24,32
028C 87BF out 0x37,R24
028E .dbline 142
028E ; ETIMSK = 0x00; //extended timer interrupt sources
028E 20927D00 sts 125,R2
0292 .dbline 143
0292 ; SEI(); //re-enable interrupts
0292 7894 sei
0294 .dbline -2
0294 L15:
0294 .dbline 0 ; func end
0294 0895 ret
0296 .dbend
0296 .dbfunc e uart1_init _uart1_init fV
.even
0296 _uart1_init::
0296 .dbline -1
0296 .dbline 153
0296 ; //all peripherals are now initialized
0296 ; }
0296 ;
0296 ; //UART1 initialize
0296 ; // desired baud rate:19200
0296 ; // actual baud rate:19200 (0.0%)
0296 ; // char size: 8 bit
0296 ; // parity: Disabled
0296 ; void uart1_init(void)
0296 ; {
0296 .dbline 154
0296 ; UCSR1B = 0x00; //disable while setting baud rate
0296 2224 clr R2
0298 20929A00 sts 154,R2
029C .dbline 155
029C ; UCSR1A = 0x00;
029C 20929B00 sts 155,R2
02A0 .dbline 156
02A0 ; UCSR1C = 0x06;
02A0 86E0 ldi R24,6
02A2 80939D00 sts 157,R24
02A6 .dbline 157
02A6 ; UBRR1L = 0x23; //set baud rate lo
02A6 83E2 ldi R24,35
02A8 80939900 sts 153,R24
02AC .dbline 158
02AC ; UBRR1H = 0x00; //set baud rate hi
02AC 20929800 sts 152,R2
02B0 .dbline 159
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\buhuo\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 165
02D8 ; }
02D8 ;
02D8 ; #pragma interrupt_handler uart1_rx_isr:31
02D8 ; //cir+00100
02D8 ; void uart1_rx_isr(void)
02D8 ; {
02D8 .dbline 167
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 168
02E2 ; {
02E2 .dbline 169
02E2 ; a=b;
02E2 20901800 lds R2,_b
02E6 20921700 sts _a,R2
02EA .dbline 170
02EA ; b=c;
02EA 20901900 lds R2,_c
02EE 20921800 sts _b,R2
02F2 .dbline 171
02F2 ; c=d;
02F2 20901A00 lds R2,_d
02F6 20921900 sts _c,R2
02FA .dbline 172
02FA ; d=e;
02FA 20901B00 lds R2,_e
02FE 20921A00 sts _d,R2
0302 .dbline 173
0302 ; e=f;
0302 20901C00 lds R2,_f
0306 20921B00 sts _e,R2
030A .dbline 174
030A ; f=UDR1;
030A 20909C00 lds R2,156
030E 20921C00 sts _f,R2
0312 .dbline 175
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 175
031E AAC1 xjmp L17
0320 L20:
0320 .dbline 176
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 177
032A ; {jiaodu=(b-48)*10000+(c-48)*1000+(d-48)*100+(e-48)*10+(f-48);
032A .dbline 177
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 178
03A4 ; all=0;return;}
03A4 2224 clr R2
03A6 20921600 sts _all,R2
03AA .dbline 178
03AA 64C1 xjmp L17
03AC L23:
03AC .dbline 179
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 180
03B6 ; {jiaodu=-((b-48)*10000+(c-48)*1000+(d-48)*100+(e-48)*10+(f-48));
03B6 .dbline 180
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 181
043A ; all=0;return;}
043A 2224 clr R2
043C 20921600 sts _all,R2
0440 .dbline 181
0440 19C1 xjmp L17
0442 L25:
0442 .dbline 182
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 182
044C .dbline 182
044C 2224 clr R2
044E 20921600 sts _all,R2
0452 .dbline 182
0452 10C1 xjmp L17
0454 L18:
0454 .dbline 185
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 186
045E ; {
045E .dbline 187
045E ; a=b;
045E 20901800 lds R2,_b
0462 20921700 sts _a,R2
0466 .dbline 188
0466 ; b=c;
0466 20901900 lds R2,_c
046A 20921800 sts _b,R2
046E .dbline 189
046E ; c=d;
046E 20901A00 lds R2,_d
0472 20921900 sts _c,R2
0476 .dbline 190
0476 ; d=e;
0476 20901B00 lds R2,_e
047A 20921A00 sts _d,R2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -