⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 disp.lis

📁 电压计(c语言编写的) 通过led灯显示 电路图说明: 1、R1、R2、D1、D2 组成发光二极管显示
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 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 + -