📄 adc.lis
字号:
00F2 80E0 ldi R24,<_led_buff
00F4 90E0 ldi R25,>_led_buff
00F6 E42F mov R30,R20
00F8 FF27 clr R31
00FA E80F add R30,R24
00FC F91F adc R31,R25
00FE A0E0 ldi R26,<_seg_table+8
0100 B0E0 ldi R27,>_seg_table+8
0102 FA93 st -y,R31
0104 EA93 st -y,R30
0106 FD01 movw R30,R26
0108 A491 lpm R26,Z
010A E991 ld R30,y+
010C F991 ld R31,y+
010E A083 std z+0,R26
0110 .dbline 58
0110 L11:
0110 .dbline 55
0110 4395 inc R20
0112 L13:
0112 .dbline 55
0112 4430 cpi R20,4
0114 70F3 brlo L10
0116 .dbline 59
0116 ; {
0116 ; led_buff[i]=seg_table[8];
0116 ; }
0116 ; for(i=0;i<100;i++)
0116 4427 clr R20
0118 02C0 rjmp L18
011A L15:
011A .dbline 60
011A 00D0 rcall _display
011C L16:
011C .dbline 59
011C 4395 inc R20
011E L18:
011E .dbline 59
011E 4436 cpi R20,100
0120 E0F3 brlo L15
0122 .dbline 62
0122 ; display();
0122 ;
0122 ; adc_old=0;
0122 6627 clr R22
0124 7727 clr R23
0126 .dbline 63
0126 ; adc_rel=0;
0126 2224 clr R2
0128 3324 clr R3
012A 30920200 sts _adc_rel+1,R3
012E 20920100 sts _adc_rel,R2
0132 55C0 rjmp L20
0134 L19:
0134 .dbline 65
0134 ; while(1)
0134 ; {
0134 .dbline 66
0134 ; if(adc_old!=adc_rel)
0134 20900100 lds R2,_adc_rel
0138 30900200 lds R3,_adc_rel+1
013C 6215 cp R22,R2
013E 7305 cpc R23,R3
0140 19F0 breq L22
0142 .dbline 67
0142 ; {
0142 .dbline 68
0142 ; adc_old=adc_rel;
0142 B101 movw R22,R2
0144 .dbline 69
0144 ; ADCtoBCD(adc_old);
0144 8101 movw R16,R2
0146 8ADF rcall _ADCtoBCD
0148 .dbline 70
0148 ; }
0148 L22:
0148 .dbline 71
0148 ; display();
0148 00D0 rcall _display
014A .dbline 73
014A ;
014A ; i=PIND&0x0c;//判断按键
014A 49B1 in R20,0x9
014C 4C70 andi R20,12
014E .dbline 74
014E ; if(i!=0x0c)
014E 4C30 cpi R20,12
0150 09F4 brne X1
0152 45C0 rjmp L24
0154 X1:
0154 .dbline 75
0154 ; {
0154 .dbline 76
0154 ; display();//按键消抖
0154 00D0 rcall _display
0156 .dbline 77
0156 ; if(i==(PIND&0x0c))
0156 89B1 in R24,0x9
0158 8C70 andi R24,12
015A 4817 cp R20,R24
015C 09F0 breq X2
015E 3FC0 rjmp L26
0160 X2:
0160 .dbline 78
0160 ; {
0160 .dbline 79
0160 ; CLI();
0160 F894 cli
0162 .dbline 80
0162 ; adc_rel=0;
0162 2224 clr R2
0164 3324 clr R3
0166 30920200 sts _adc_rel+1,R3
016A 20920100 sts _adc_rel,R2
016E .dbline 81
016E ; adc_old=0;
016E 6627 clr R22
0170 7727 clr R23
0172 .dbline 82
0172 ; if (i==0x08)//INT0键按下
0172 4830 cpi R20,8
0174 59F4 brne L28
0176 .dbline 83
0176 ; {
0176 .dbline 84
0176 ; if(adc_mux<3)
0176 80910000 lds R24,_adc_mux
017A 8330 cpi R24,3
017C 20F4 brsh L30
017E .dbline 85
017E ; adc_mux++;//递增
017E 8F5F subi R24,255 ; addi 1
0180 80930000 sts _adc_mux,R24
0184 03C0 rjmp L31
0186 L30:
0186 .dbline 87
0186 ; else
0186 ; adc_mux=0;
0186 2224 clr R2
0188 20920000 sts _adc_mux,R2
018C L31:
018C .dbline 88
018C ; }
018C L28:
018C .dbline 89
018C ; if (i==0x04)//INT1键按下
018C 4430 cpi R20,4
018E 69F4 brne L32
0190 .dbline 90
0190 ; {
0190 .dbline 91
0190 ; if(adc_mux>0)
0190 2224 clr R2
0192 30900000 lds R3,_adc_mux
0196 2314 cp R2,R3
0198 28F4 brsh L34
019A .dbline 92
019A ; adc_mux--;//递减
019A 832D mov R24,R3
019C 8150 subi R24,1
019E 80930000 sts _adc_mux,R24
01A2 03C0 rjmp L35
01A4 L34:
01A4 .dbline 94
01A4 ; else
01A4 ; adc_mux=3;
01A4 83E0 ldi R24,3
01A6 80930000 sts _adc_mux,R24
01AA L35:
01AA .dbline 95
01AA ; }
01AA L32:
01AA .dbline 96
01AA ; led_buff[0]=seg_table[adc_mux];
01AA 80E0 ldi R24,<_seg_table
01AC 90E0 ldi R25,>_seg_table
01AE E0910000 lds R30,_adc_mux
01B2 FF27 clr R31
01B4 E80F add R30,R24
01B6 F91F adc R31,R25
01B8 E491 lpm R30,Z
01BA E0930000 sts _led_buff,R30
01BE .dbline 97
01BE ; led_buff[1]=0xbf;//-
01BE 8FEB ldi R24,191
01C0 80930100 sts _led_buff+1,R24
01C4 .dbline 98
01C4 ; led_buff[2]=0b10001001;//h
01C4 89E8 ldi R24,137
01C6 80930200 sts _led_buff+2,R24
01CA .dbline 99
01CA ; led_buff[3]=0b11000110;//C
01CA 86EC ldi R24,198
01CC 80930300 sts _led_buff+3,R24
01D0 01C0 rjmp L40
01D2 L39:
01D2 .dbline 101
01D2 00D0 rcall _display
01D4 L40:
01D4 .dbline 100
01D4 ; while((PIND&0x0c)!=0x0c)//检查按键释放
01D4 89B1 in R24,0x9
01D6 8C70 andi R24,12
01D8 8C30 cpi R24,12
01DA D9F7 brne L39
01DC .dbline 102
01DC ; display();
01DC ; SEI();
01DC 7894 sei
01DE .dbline 103
01DE ; }
01DE L26:
01DE .dbline 104
01DE ; }
01DE L24:
01DE .dbline 107
01DE L20:
01DE .dbline 64
01DE AACF rjmp L19
01E0 X0:
01E0 .dbline -2
01E0 L9:
01E0 .dbline 0 ; func end
01E0 0895 ret
01E2 .dbsym r adc_old 22 i
01E2 .dbsym r i 20 c
01E2 .dbend
.area bss(ram, con, rel)
0000 .dbfile C:\调试程序\mega48\ADC\ADC.c
0000 _adc_mux::
0000 .blkb 1
0001 .dbsym e adc_mux _adc_mux c
0001 _adc_rel::
0001 .blkb 2
0003 .dbsym e adc_rel _adc_rel i
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -