📄 ad_led.lis
字号:
00C4 E82F mov R30,R24
00C6 F92F mov R31,R25
00C8 C895 lpm
00CA 00920700 sts _ledbuff+5,R0
00CE .dbline 55
; ledbuff[4]=tabel[0x0d];
00CE 80E0 ldi R24,<_tabel+13
00D0 90E0 ldi R25,>_tabel+13
00D2 E82F mov R30,R24
00D4 F92F mov R31,R25
00D6 C895 lpm
00D8 00920600 sts _ledbuff+4,R0
00DC .dbline 56
; ledbuff[3]=0x40;
00DC 80E4 ldi R24,64
00DE 80930500 sts _ledbuff+3,R24
00E2 .dbline 57
; ledbuff[2]|=0x80;
00E2 80910400 lds R24,_ledbuff+2
00E6 8068 ori R24,128
00E8 80930400 sts _ledbuff+2,R24
00EC .dbline -2
00EC .dbline 58
; }
00EC L7:
00EC 00D0 rcall pop_gset4
00EE .dbline 0 ; func end
00EE 0895 ret
00F0 .dbsym l char_p 1 pc
00F0 .dbsym r i 10 c
00F0 .dbsym r temp 12 i
00F0 .dbsym r adc 10 i
.area vector(rom, abs)
.org 28
001C 78C0 rjmp _adc_isr
.area text(rom, con, rel)
00F0 .dbfile D:\ICC-AVR\examples.sl\AD_8535_LED\ad_led.c
00F0 .dbfunc s adc_isr _adc_isr fI
; temp -> R16,R17
.even
00F0 _adc_isr::
00F0 2A92 st -y,R2
00F2 3A92 st -y,R3
00F4 0A93 st -y,R16
00F6 1A93 st -y,R17
00F8 EA93 st -y,R30
00FA 2FB6 in R2,0x3f
00FC 2A92 st -y,R2
00FE .dbline -1
00FE .dbline 62
; /* AD转换程序 */
; #pragma interrupt_handler adc_isr:IT_ADC
; void adc_isr(void)
; {
00FE .dbline 63
; unsigned int temp=0;
00FE 0027 clr R16
0100 1127 clr R17
0102 02C0 rjmp L20
0104 L19:
0104 .dbline 65
0104 0F5F subi R16,255 ; offset = 1
0106 1F4F sbci R17,255
0108 L20:
0108 .dbline 64
; while(temp<6)
0108 0630 cpi R16,6
010A E0E0 ldi R30,0
010C 1E07 cpc R17,R30
010E D0F3 brlo L19
0110 .dbline 66
; temp++;
; ad_con=ADC;
0110 24B0 in R2,0x4
0112 35B0 in R3,0x5
0114 30920100 sts _ad_con+1,R3
0118 20920000 sts _ad_con,R2
011C .dbline 67
; ADCSR|=(1<<ADSC);//启动转换
011C 369A sbi 0x6,6
011E .dbline -2
011E .dbline 68
; }
011E L18:
011E 2990 ld R2,y+
0120 2FBE out 0x3f,R2
0122 E991 ld R30,y+
0124 1991 ld R17,y+
0126 0991 ld R16,y+
0128 3990 ld R3,y+
012A 2990 ld R2,y+
012C .dbline 0 ; func end
012C 1895 reti
012E .dbsym r temp 16 i
012E .dbfunc s main _main fI
; i -> R20
.even
012E _main::
012E .dbline -1
012E .dbline 71
; //将AD转换结果转换成电压数值,然后在LCD上显示
; void main(void)
; {
012E .dbline 73
; unsigned char i;
; port_init();
012E 68DF rcall _port_init
0130 .dbline 74
; MCUCR=0;
0130 2224 clr R2
0132 25BE out 0x35,R2
0134 .dbline 75
; ADMUX=0x00;//0通道
0134 27B8 out 0x7,R2
0136 .dbline 76
; ADCSR=(1<<ADEN)|(1<<ADSC)|(1<<ADIF)|(1<<ADIE)|0x06;
0136 8EED ldi R24,222
0138 86B9 out 0x6,R24
013A .dbline 77
; SEI();
013A 7894 sei
013C .dbline 78
; for(i=0;i<6;i++)
013C 4427 clr R20
013E 11C0 rjmp L26
0140 L23:
0140 .dbline 79
0140 80E0 ldi R24,<_ledbuff
0142 90E0 ldi R25,>_ledbuff
0144 E42F mov R30,R20
0146 FF27 clr R31
0148 E80F add R30,R24
014A F91F adc R31,R25
014C 80E0 ldi R24,<_tabel
014E 90E0 ldi R25,>_tabel
0150 FA93 st -y,R31
0152 EA93 st -y,R30
0154 E82F mov R30,R24
0156 F92F mov R31,R25
0158 C895 lpm
015A E991 ld R30,y+
015C F991 ld R31,y+
015E 0082 std z+0,R0
0160 L24:
0160 .dbline 78
0160 4395 inc R20
0162 L26:
0162 .dbline 78
0162 4630 cpi R20,6
0164 68F3 brlo L23
0166 .dbline 80
; ledbuff[i]=tabel[0];
; i=0;
0166 4427 clr R20
0168 1FC0 rjmp L28
016A L27:
016A .dbline 82
; while(1)
; {
016A .dbline 83
; if((i==127)|(i==0))
016A 4F37 cpi R20,127
016C 29F4 brne L32
016E 81E0 ldi R24,1
0170 90E0 ldi R25,0
0172 A82E mov R10,R24
0174 B92E mov R11,R25
0176 02C0 rjmp L33
0178 L32:
0178 AA24 clr R10
017A BB24 clr R11
017C L33:
017C 4423 tst R20
017E 19F4 brne L34
0180 61E0 ldi R22,1
0182 70E0 ldi R23,0
0184 02C0 rjmp L35
0186 L34:
0186 6627 clr R22
0188 7727 clr R23
018A L35:
018A 2A2C mov R2,R10
018C 3B2C mov R3,R11
018E 262A or R2,R22
0190 372A or R3,R23
0192 2220 tst R2
0194 11F4 brne X1
0196 3320 tst R3
0198 29F0 breq L30
019A X1:
019A .dbline 84
; adctovol(ad_con);//降低AD结果刷新速率
019A 00910000 lds R16,_ad_con
019E 10910100 lds R17,_ad_con+1
01A2 52DF rcall _adctovol
01A4 L30:
01A4 .dbline 85
01A4 34DF rcall _display
01A6 .dbline 86
01A6 4395 inc R20
01A8 .dbline 87
01A8 L28:
01A8 .dbline 81
01A8 E0CF rjmp L27
01AA X0:
01AA .dbline -2
01AA .dbline 88
; display(); //使末位闪烁不太明显
; i++;
; }
; }
01AA L22:
01AA .dbline 0 ; func end
01AA 0895 ret
01AC .dbsym r i 20 c
.area bss(ram, con, rel)
0000 .dbfile D:\ICC-AVR\examples.sl\AD_8535_LED\ad_led.c
0000 _ad_con::
0000 .blkb 2
0002 .dbsym s ad_con _ad_con i
0002 _ledbuff::
0002 .blkb 6
0008 .dbsym s ledbuff _ledbuff A[6:6]c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -