📄 led+ad.lis
字号:
00CA E0E0 ldi R30,<_tabel+13
00CC F0E0 ldi R31,>_tabel+13
00CE E491 lpm R30,Z
00D0 E0930600 sts _ledbuff+4,R30
00D4 .dbline 56
00D4 ; ledbuff[3]=0x40;
00D4 80E4 ldi R24,64
00D6 80930500 sts _ledbuff+3,R24
00DA .dbline 57
00DA ; ledbuff[2]|=0x80;
00DA 80910400 lds R24,_ledbuff+2
00DE 8068 ori R24,128
00E0 80930400 sts _ledbuff+2,R24
00E4 .dbline -2
00E4 .dbline 58
00E4 ; }
00E4 L7:
00E4 0E940000 xcall pop_gset4x
00E8 .dbline 0 ; func end
00E8 0895 ret
00EA .dbsym l char_p 1 pc
00EA .dbsym r i 10 c
00EA .dbsym r temp 12 i
00EA .dbsym r adc 10 i
00EA .dbend
.area vector(rom, abs)
.org 56
0038 0C947500 jmp _adc_isr
.area text(rom, con, rel)
00EA .dbfile F:\李鹏飞\sl-avrad-m16\LED+AD\LED+AD.C
00EA .dbfunc e adc_isr _adc_isr fV
00EA ; temp -> R16,R17
.even
00EA _adc_isr::
00EA 2A92 st -y,R2
00EC 3A92 st -y,R3
00EE 0A93 st -y,R16
00F0 1A93 st -y,R17
00F2 EA93 st -y,R30
00F4 2FB6 in R2,0x3f
00F6 2A92 st -y,R2
00F8 .dbline -1
00F8 .dbline 62
00F8 ; /* AD转换程序 */
00F8 ; #pragma interrupt_handler adc_isr:15
00F8 ; void adc_isr(void)
00F8 ; {
00F8 .dbline 63
00F8 ; unsigned int temp=0;
00F8 0027 clr R16
00FA 1127 clr R17
00FC 02C0 xjmp L20
00FE L19:
00FE .dbline 65
00FE 0F5F subi R16,255 ; offset = 1
0100 1F4F sbci R17,255
0102 L20:
0102 .dbline 64
0102 ; while(temp<6)
0102 0630 cpi R16,6
0104 E0E0 ldi R30,0
0106 1E07 cpc R17,R30
0108 D0F3 brlo L19
010A .dbline 66
010A ; temp++;
010A ; ad_con=ADC;
010A 24B0 in R2,0x4
010C 35B0 in R3,0x5
010E 30920100 sts _ad_con+1,R3
0112 20920000 sts _ad_con,R2
0116 .dbline 67
0116 ; ADCSR|=(1<<ADSC);//启动转换
0116 369A sbi 0x6,6
0118 .dbline -2
0118 .dbline 68
0118 ; }
0118 L18:
0118 2990 ld R2,y+
011A 2FBE out 0x3f,R2
011C E991 ld R30,y+
011E 1991 ld R17,y+
0120 0991 ld R16,y+
0122 3990 ld R3,y+
0124 2990 ld R2,y+
0126 .dbline 0 ; func end
0126 1895 reti
0128 .dbsym r temp 16 i
0128 .dbend
0128 .dbfunc e main _main fV
0128 ; i -> R10
.even
0128 _main::
0128 .dbline -1
0128 .dbline 71
0128 ; //将AD转换结果转换成电压数值,然后在LCD上显示
0128 ; void main(void)
0128 ; {
0128 .dbline 73
0128 ; unsigned char i;
0128 ; port_init();
0128 6BDF xcall _port_init
012A .dbline 74
012A ; MCUCSR=0;
012A 2224 clr R2
012C 24BE out 0x34,R2
012E .dbline 75
012E ; ADMUX=0x00;//0通道
012E 27B8 out 0x7,R2
0130 .dbline 76
0130 ; ADCSR=(1<<ADEN)|(1<<ADSC)|(1<<ADIF)|(1<<ADIE)|0x06;
0130 8EED ldi R24,222
0132 86B9 out 0x6,R24
0134 .dbline 77
0134 ; SEI();
0134 7894 sei
0136 .dbline 78
0136 ; for(i=0;i<6;i++)
0136 AA24 clr R10
0138 10C0 xjmp L26
013A L23:
013A .dbline 79
013A 80E0 ldi R24,<_ledbuff
013C 90E0 ldi R25,>_ledbuff
013E EA2D mov R30,R10
0140 FF27 clr R31
0142 E80F add R30,R24
0144 F91F adc R31,R25
0146 A0E0 ldi R26,<_tabel
0148 B0E0 ldi R27,>_tabel
014A FA93 st -y,R31
014C EA93 st -y,R30
014E FD01 movw R30,R26
0150 A491 lpm R26,Z
0152 E991 ld R30,y+
0154 F991 ld R31,y+
0156 A083 std z+0,R26
0158 L24:
0158 .dbline 78
0158 A394 inc R10
015A L26:
015A .dbline 78
015A 8A2D mov R24,R10
015C 8630 cpi R24,6
015E 68F3 brlo L23
0160 .dbline 80
0160 ; ledbuff[i]=tabel[0];
0160 ; i=0;
0160 AA24 clr R10
0162 1FC0 xjmp L28
0164 L27:
0164 .dbline 82
0164 ; while(1)
0164 ; {
0164 .dbline 83
0164 ; if((i==127)|(i==0))
0164 8A2D mov R24,R10
0166 8F37 cpi R24,127
0168 21F4 brne L32
016A 81E0 ldi R24,1
016C 90E0 ldi R25,0
016E 7C01 movw R14,R24
0170 02C0 xjmp L33
0172 L32:
0172 EE24 clr R14
0174 FF24 clr R15
0176 L33:
0176 AA20 tst R10
0178 21F4 brne L34
017A 81E0 ldi R24,1
017C 90E0 ldi R25,0
017E 6C01 movw R12,R24
0180 02C0 xjmp L35
0182 L34:
0182 CC24 clr R12
0184 DD24 clr R13
0186 L35:
0186 1701 movw R2,R14
0188 2C28 or R2,R12
018A 3D28 or R3,R13
018C 2220 tst R2
018E 11F4 brne X0
0190 3320 tst R3
0192 29F0 breq L30
0194 X0:
0194 .dbline 84
0194 ; adctovol(ad_con);//降低AD结果刷新速率
0194 00910000 lds R16,_ad_con
0198 10910100 lds R17,_ad_con+1
019C 5BDF xcall _adctovol
019E L30:
019E .dbline 85
019E 37DF xcall _display
01A0 .dbline 86
01A0 A394 inc R10
01A2 .dbline 87
01A2 L28:
01A2 .dbline 81
01A2 E0CF xjmp L27
01A4 X1:
01A4 .dbline -2
01A4 .dbline 88
01A4 ; display(); //使末位闪烁不太明显
01A4 ; i++;
01A4 ; }
01A4 ; }
01A4 L22:
01A4 .dbline 0 ; func end
01A4 0895 ret
01A6 .dbsym r i 10 c
01A6 .dbend
.area bss(ram, con, rel)
0000 .dbfile F:\李鹏飞\sl-avrad-m16\LED+AD\LED+AD.C
0000 _ad_con::
0000 .blkb 2
0002 .dbsym e ad_con _ad_con i
0002 _ledbuff::
0002 .blkb 6
0008 .dbsym e ledbuff _ledbuff A[6:6]c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -