📄 disp.lis
字号:
00E0 00D0 rcall mod16s
00E2 E02F mov R30,R16
00E4 F12F mov R31,R17
00E6 80E0 ldi R24,<_disp_table
00E8 90E0 ldi R25,>_disp_table
00EA E80F add R30,R24
00EC F91F adc R31,R25
00EE 0081 ldd R16,z+0
00F0 C2DF rcall _send_byte
00F2 L21:
00F2 .dbline 67
00F2 6395 inc R22
00F4 L23:
00F4 .dbline 67
00F4 6B30 cpi R22,11
00F6 80F3 brlo L20
00F8 .dbline 69
00F8 ; send_byte(disp_table[buffer%10]);//显示数字
00F8 ; break;
00F8 5BC0 rjmp L17
00FA L24:
00FA .dbline 72
00FA ; }
00FA ; case 1: //control为1,显示count中的数据为6位
00FA ; {
00FA .dbline 73
00FA ; tempcount=count;
00FA 40910100 lds R20,_count
00FE 50910200 lds R21,_count+1
0102 .dbline 74
0102 ; for(i=0;i<6;i++) //取出每位中的数据
0102 6627 clr R22
0104 14C0 rjmp L28
0106 L25:
0106 .dbline 75
0106 .dbline 76
0106 2AE0 ldi R18,10
0108 30E0 ldi R19,0
010A 042F mov R16,R20
010C 152F mov R17,R21
010E 00D0 rcall mod16u
0110 8C2F mov R24,R28
0112 9D2F mov R25,R29
0114 E62F mov R30,R22
0116 FF27 clr R31
0118 E80F add R30,R24
011A F91F adc R31,R25
011C 0083 std z+0,R16
011E .dbline 77
011E 2AE0 ldi R18,10
0120 30E0 ldi R19,0
0122 042F mov R16,R20
0124 152F mov R17,R21
0126 00D0 rcall div16u
0128 402F mov R20,R16
012A 512F mov R21,R17
012C .dbline 78
012C L26:
012C .dbline 74
012C 6395 inc R22
012E L28:
012E .dbline 74
012E 6630 cpi R22,6
0130 50F3 brlo L25
0132 .dbline 79
0132 ; {
0132 ; temp[i]=tempcount%10;
0132 ; tempcount/=10;
0132 ; }
0132 ; send_byte(disp_table[buffer/10]); //最开始显示buffer数据
0132 2AE0 ldi R18,10
0134 30E0 ldi R19,0
0136 0A2D mov R16,R10
0138 1127 clr R17
013A 00D0 rcall div16s
013C E02F mov R30,R16
013E F12F mov R31,R17
0140 80E0 ldi R24,<_disp_table
0142 90E0 ldi R25,>_disp_table
0144 E80F add R30,R24
0146 F91F adc R31,R25
0148 0081 ldd R16,z+0
014A 95DF rcall _send_byte
014C .dbline 80
014C ; send_byte(disp_table[buffer%10]);
014C 2AE0 ldi R18,10
014E 30E0 ldi R19,0
0150 0A2D mov R16,R10
0152 1127 clr R17
0154 00D0 rcall mod16s
0156 E02F mov R30,R16
0158 F12F mov R31,R17
015A 80E0 ldi R24,<_disp_table
015C 90E0 ldi R25,>_disp_table
015E E80F add R30,R24
0160 F91F adc R31,R25
0162 0081 ldd R16,z+0
0164 88DF rcall _send_byte
0166 .dbline 81
0166 ; send_byte(0x00);
0166 0027 clr R16
0168 86DF rcall _send_byte
016A .dbline 82
016A ; send_byte(0x00);
016A 0027 clr R16
016C 84DF rcall _send_byte
016E .dbline 83
016E ; send_byte(0x00);
016E 0027 clr R16
0170 82DF rcall _send_byte
0172 .dbline 84
0172 ; for(i=0;i<6;i++)
0172 6627 clr R22
0174 1BC0 rjmp L32
0176 L29:
0176 .dbline 85
0176 ; {
0176 .dbline 86
0176 ; if(i==4)
0176 6430 cpi R22,4
0178 19F4 brne L33
017A .dbline 87
017A ; dp=1; //小数点控制位
017A 81E0 ldi R24,1
017C 80930000 sts _dp,R24
0180 L33:
0180 .dbline 88
0180 262E mov R2,R22
0182 3324 clr R3
0184 E5E0 ldi R30,5
0186 F0E0 ldi R31,0
0188 E219 sub R30,R2
018A F309 sbc R31,R3
018C 8C2F mov R24,R28
018E 9D2F mov R25,R29
0190 E80F add R30,R24
0192 F91F adc R31,R25
0194 E081 ldd R30,z+0
0196 FF27 clr R31
0198 80E0 ldi R24,<_disp_table
019A 90E0 ldi R25,>_disp_table
019C E80F add R30,R24
019E F91F adc R31,R25
01A0 0081 ldd R16,z+0
01A2 69DF rcall _send_byte
01A4 .dbline 89
01A4 2224 clr R2
01A6 20920000 sts _dp,R2
01AA .dbline 90
01AA L30:
01AA .dbline 84
01AA 6395 inc R22
01AC L32:
01AC .dbline 84
01AC 6630 cpi R22,6
01AE 18F3 brlo L29
01B0 .dbline 91
01B0 ; send_byte(disp_table[temp[5-i]]);
01B0 ; dp=0;
01B0 ; }
01B0 ; break;
01B0 L16:
01B0 L17:
01B0 .dbline 94
01B0 ; }
01B0 ; }
01B0 ; PORTC=1<<4;
01B0 80E1 ldi R24,16
01B2 85BB out 0x15,R24
01B4 .dbline -2
01B4 .dbline 95
01B4 ; }
01B4 L15:
01B4 2696 adiw R28,6
01B6 00D0 rcall pop_gset3
01B8 .dbline 0 ; func end
01B8 0895 ret
01BA .dbsym l temp 0 A[6:6]c
01BA .dbsym r tempcount 20 i
01BA .dbsym r i 22 c
01BA .dbsym r control 20 c
01BA .dbsym r buffer 10 c
01BA .dbend
01BA .dbfunc e delay_1ms _delay_1ms fV
01BA ; i -> R16,R17
.even
01BA _delay_1ms::
01BA .dbline -1
01BA .dbline 97
01BA ; void delay_1ms(void)//1ms延时函数
01BA ; {
01BA .dbline 99
01BA 0027 clr R16
01BC 1127 clr R17
01BE 02C0 rjmp L39
01C0 L36:
01C0 .dbline 99
01C0 L37:
01C0 .dbline 99
01C0 0F5F subi R16,255 ; offset = 1
01C2 1F4F sbci R17,255
01C4 L39:
01C4 .dbline 99
01C4 ; unsigned int i;
01C4 ; for (i=0;i<150;i++);
01C4 0639 cpi R16,150
01C6 E0E0 ldi R30,0
01C8 1E07 cpc R17,R30
01CA D0F3 brlo L36
01CC .dbline 100
01CC ; WDR(); //清看门狗
01CC A895 wdr
01CE .dbline -2
01CE .dbline 101
01CE ; }
01CE L35:
01CE .dbline 0 ; func end
01CE 0895 ret
01D0 .dbsym r i 16 i
01D0 .dbend
01D0 .dbfunc e delay_nms _delay_nms fV
01D0 ; i -> R20,R21
01D0 ; n -> R22,R23
.even
01D0 _delay_nms::
01D0 00D0 rcall push_gset2
01D2 602F mov R22,R16
01D4 712F mov R23,R17
01D6 .dbline -1
01D6 .dbline 103
01D6 ; void delay_nms(unsigned int n)//延时n毫秒
01D6 ; {
01D6 .dbline 105
01D6 ; unsigned int i;
01D6 ; for (i=0;i<n;i++)//执行n次1毫秒延时
01D6 4427 clr R20
01D8 5527 clr R21
01DA 03C0 rjmp L44
01DC L41:
01DC .dbline 106
01DC EEDF rcall _delay_1ms
01DE L42:
01DE .dbline 105
01DE 4F5F subi R20,255 ; offset = 1
01E0 5F4F sbci R21,255
01E2 L44:
01E2 .dbline 105
01E2 4617 cp R20,R22
01E4 5707 cpc R21,R23
01E6 D0F3 brlo L41
01E8 .dbline -2
01E8 .dbline 107
01E8 ; delay_1ms();
01E8 ; }
01E8 L40:
01E8 00D0 rcall pop_gset2
01EA .dbline 0 ; func end
01EA 0895 ret
01EC .dbsym r i 20 i
01EC .dbsym r n 22 i
01EC .dbend
.area vector(rom, abs)
.org 28
001C F6C0 rjmp _adc_isr
.area text(rom, con, rel)
01EC .dbfile E:\avrc\disp.c
01EC .dbfunc e adc_isr _adc_isr fV
.even
01EC _adc_isr::
01EC 8A93 st -y,R24
01EE 8FB7 in R24,0x3f
01F0 8A93 st -y,R24
01F2 .dbline -1
01F2 .dbline 111
01F2 ; //ADC完成中断
01F2 ; #pragma interrupt_handler adc_isr:iv_ADC
01F2 ; void adc_isr(void)
01F2 ; {
01F2 .dbline 112
01F2 ; ADMUX =(1<<REFS0)|(1<<REFS1)|(1<<MUX1)|(1<<MUX0);
01F2 83EC ldi R24,195
01F4 87B9 out 0x7,R24
01F6 .dbline 113
01F6 ; ADCSRA|=(1<<ADSC);//启动AD转换
01F6 369A sbi 0x6,6
01F8 .dbline -2
01F8 .dbline 114
01F8 ; }
01F8 L45:
01F8 8991 ld R24,y+
01FA 8FBF out 0x3f,R24
01FC 8991 ld R24,y+
01FE .dbline 0 ; func end
01FE 1895 reti
0200 .dbend
.area bss(ram, con, rel)
0000 .dbfile E:\avrc\disp.c
0000 _dp::
0000 .blkb 1
0001 .dbsym e dp _dp c
0001 _count::
0001 .blkb 2
0003 .dbsym e count _count i
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -