📄 disp.lis
字号:
00D2 ; {
00D2 .dbline 65
00D2 ; for(i=0;i<11;i++)
00D2 6627 clr R22
00D4 0DC0 rjmp L22
00D6 L19:
00D6 .dbline 66
00D6 2AE0 ldi R18,10
00D8 30E0 ldi R19,0
00DA 0A2D mov R16,R10
00DC 1127 clr R17
00DE 00D0 rcall mod16s
00E0 F801 movw R30,R16
00E2 80E0 ldi R24,<_disp_table
00E4 90E0 ldi R25,>_disp_table
00E6 E80F add R30,R24
00E8 F91F adc R31,R25
00EA 0081 ldd R16,z+0
00EC CCDF rcall _send_byte
00EE L20:
00EE .dbline 65
00EE 6395 inc R22
00F0 L22:
00F0 .dbline 65
00F0 6B30 cpi R22,11
00F2 88F3 brlo L19
00F4 .dbline 67
00F4 ; send_byte(disp_table[buffer%10]);//显示数字
00F4 ; break;
00F4 4CC0 rjmp L16
00F6 L23:
00F6 .dbline 70
00F6 ; }
00F6 ; case 1: //display count
00F6 ; {
00F6 .dbline 71
00F6 ; tempcount=count;
00F6 40910000 lds R20,_count
00FA 50910100 lds R21,_count+1
00FE .dbline 72
00FE ; for(i=0;i<6;i++)
00FE 6627 clr R22
0100 10C0 rjmp L27
0102 L24:
0102 .dbline 73
0102 .dbline 74
0102 2AE0 ldi R18,10
0104 30E0 ldi R19,0
0106 8A01 movw R16,R20
0108 00D0 rcall mod16u
010A CE01 movw R24,R28
010C E62F mov R30,R22
010E FF27 clr R31
0110 E80F add R30,R24
0112 F91F adc R31,R25
0114 0083 std z+0,R16
0116 .dbline 75
0116 2AE0 ldi R18,10
0118 30E0 ldi R19,0
011A 8A01 movw R16,R20
011C 00D0 rcall div16u
011E A801 movw R20,R16
0120 .dbline 76
0120 L25:
0120 .dbline 72
0120 6395 inc R22
0122 L27:
0122 .dbline 72
0122 6630 cpi R22,6
0124 70F3 brlo L24
0126 .dbline 77
0126 ; {
0126 ; temp[i]=tempcount%10;
0126 ; tempcount/=10;
0126 ; }
0126 ; send_byte(disp_table[buffer/10]);
0126 2AE0 ldi R18,10
0128 30E0 ldi R19,0
012A 0A2D mov R16,R10
012C 1127 clr R17
012E 00D0 rcall div16s
0130 F801 movw R30,R16
0132 80E0 ldi R24,<_disp_table
0134 90E0 ldi R25,>_disp_table
0136 E80F add R30,R24
0138 F91F adc R31,R25
013A 0081 ldd R16,z+0
013C A4DF rcall _send_byte
013E .dbline 78
013E ; send_byte(disp_table[buffer%10]);
013E 2AE0 ldi R18,10
0140 30E0 ldi R19,0
0142 0A2D mov R16,R10
0144 1127 clr R17
0146 00D0 rcall mod16s
0148 F801 movw R30,R16
014A 80E0 ldi R24,<_disp_table
014C 90E0 ldi R25,>_disp_table
014E E80F add R30,R24
0150 F91F adc R31,R25
0152 0081 ldd R16,z+0
0154 98DF rcall _send_byte
0156 .dbline 79
0156 ; send_byte(0x00);
0156 0027 clr R16
0158 96DF rcall _send_byte
015A .dbline 80
015A ; send_byte(0x00);
015A 0027 clr R16
015C 94DF rcall _send_byte
015E .dbline 81
015E ; send_byte(0x00);
015E 0027 clr R16
0160 92DF rcall _send_byte
0162 .dbline 82
0162 ; for(i=0;i<6;i++)
0162 6627 clr R22
0164 12C0 rjmp L31
0166 L28:
0166 .dbline 83
0166 262E mov R2,R22
0168 3324 clr R3
016A E5E0 ldi R30,5
016C F0E0 ldi R31,0
016E E219 sub R30,R2
0170 F309 sbc R31,R3
0172 CE01 movw R24,R28
0174 E80F add R30,R24
0176 F91F adc R31,R25
0178 E081 ldd R30,z+0
017A FF27 clr R31
017C 80E0 ldi R24,<_disp_table
017E 90E0 ldi R25,>_disp_table
0180 E80F add R30,R24
0182 F91F adc R31,R25
0184 0081 ldd R16,z+0
0186 7FDF rcall _send_byte
0188 L29:
0188 .dbline 82
0188 6395 inc R22
018A L31:
018A .dbline 82
018A 6630 cpi R22,6
018C 60F3 brlo L28
018E .dbline 84
018E ; send_byte(disp_table[temp[5-i]]);
018E ; break;
018E L15:
018E L16:
018E .dbline 87
018E ; }
018E ; }
018E ; PORTC=1<<4;
018E 80E1 ldi R24,16
0190 85BB out 0x15,R24
0192 .dbline -2
0192 .dbline 88
0192 ; }
0192 L14:
0192 2696 adiw R28,6
0194 00D0 rcall pop_gset3
0196 .dbline 0 ; func end
0196 0895 ret
0198 .dbsym l temp 0 A[6:6]c
0198 .dbsym r tempcount 20 i
0198 .dbsym r i 22 c
0198 .dbsym r control 20 c
0198 .dbsym r buffer 10 c
0198 .dbend
0198 .dbfunc e delay_1ms _delay_1ms fV
0198 ; i -> R16,R17
.even
0198 _delay_1ms::
0198 .dbline -1
0198 .dbline 90
0198 ; void delay_1ms(void)//1ms延时函数
0198 ; {
0198 .dbline 92
0198 ; unsigned int i;
0198 ; for (i=0;i<150;i++)
0198 0027 clr R16
019A 1127 clr R17
019C 03C0 rjmp L36
019E L33:
019E .dbline 93
019E .dbline 94
019E A895 wdr
01A0 .dbline 95
01A0 L34:
01A0 .dbline 92
01A0 0F5F subi R16,255 ; offset = 1
01A2 1F4F sbci R17,255
01A4 L36:
01A4 .dbline 92
01A4 0639 cpi R16,150
01A6 E0E0 ldi R30,0
01A8 1E07 cpc R17,R30
01AA C8F3 brlo L33
01AC .dbline -2
01AC .dbline 96
01AC ; {
01AC ; WDR();
01AC ; }
01AC ; }
01AC L32:
01AC .dbline 0 ; func end
01AC 0895 ret
01AE .dbsym r i 16 i
01AE .dbend
01AE .dbfunc e delay_nms _delay_nms fV
01AE ; i -> R20,R21
01AE ; n -> R22,R23
.even
01AE _delay_nms::
01AE 00D0 rcall push_gset2
01B0 B801 movw R22,R16
01B2 .dbline -1
01B2 .dbline 98
01B2 ; void delay_nms(unsigned int n)//延时n毫秒
01B2 ; {
01B2 .dbline 100
01B2 ; unsigned int i;
01B2 ; for (i=0;i<n;i++)//执行n次1毫秒延时
01B2 4427 clr R20
01B4 5527 clr R21
01B6 03C0 rjmp L41
01B8 L38:
01B8 .dbline 101
01B8 EFDF rcall _delay_1ms
01BA L39:
01BA .dbline 100
01BA 4F5F subi R20,255 ; offset = 1
01BC 5F4F sbci R21,255
01BE L41:
01BE .dbline 100
01BE 4617 cp R20,R22
01C0 5707 cpc R21,R23
01C2 D0F3 brlo L38
01C4 .dbline 102
01C4 ; delay_1ms();
01C4 ; WDR();
01C4 A895 wdr
01C6 .dbline -2
01C6 .dbline 103
01C6 ; }
01C6 L37:
01C6 00D0 rcall pop_gset2
01C8 .dbline 0 ; func end
01C8 0895 ret
01CA .dbsym r i 20 i
01CA .dbsym r n 22 i
01CA .dbend
.area vector(rom, abs)
.org 28
001C E5C0 rjmp _adc_isr
.area text(rom, con, rel)
01CA .dbfile E:\avrc\disp.c
01CA .dbfunc e adc_isr _adc_isr fV
.even
01CA _adc_isr::
01CA 8A93 st -y,R24
01CC 8FB7 in R24,0x3f
01CE 8A93 st -y,R24
01D0 .dbline -1
01D0 .dbline 107
01D0 ; //ADC完成中断
01D0 ; #pragma interrupt_handler adc_isr:iv_ADC
01D0 ; void adc_isr(void)
01D0 ; {
01D0 .dbline 108
01D0 ; ADMUX =(1<<REFS0)|(1<<REFS1)|(1<<MUX1)|(1<<MUX0);
01D0 83EC ldi R24,195
01D2 87B9 out 0x7,R24
01D4 .dbline 109
01D4 ; ADCSRA|=(1<<ADSC);//启动AD转换
01D4 369A sbi 0x6,6
01D6 .dbline -2
01D6 .dbline 110
01D6 ; }
01D6 L42:
01D6 8991 ld R24,y+
01D8 8FBF out 0x3f,R24
01DA 8991 ld R24,y+
01DC .dbline 0 ; func end
01DC 1895 reti
01DE .dbend
.area bss(ram, con, rel)
0000 .dbfile E:\avrc\disp.c
0000 _count::
0000 .blkb 2
0002 .dbsym e count _count i
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -