📄 ac10-1.lis
字号:
.module ac10-1.c
.area lit(rom, con, rel)
0000 _SEG7::
0000 3F06 .byte 63,6
0002 5B4F .byte 91,'O
0004 666D .byte 'f,'m
0006 7D07 .byte 125,7
0008 7F6F .byte 127,'o
000A .dbfile d:\MYDOCU~1\ac10-1\ac10-1.c
000A .dbsym e SEG7 _SEG7 A[10:10]kc
000A _ACT::
000A FEFD .byte 254,253
000C FBF7 .byte 251,247
000E .dbsym e ACT _ACT A[4:4]kc
.area text(rom, con, rel)
0000 .dbfile d:\MYDOCU~1\ac10-1\ac10-1.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 11
0000 ; #include <iom16v.h>
0000 ; #define uchar unsigned char
0000 ; #define uint unsigned int
0000 ; uchar const SEG7[10]={0x3f,0x06,0x5b,
0000 ; 0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
0000 ; uchar const ACT[4]={0xfe,0xfd,0xfb,0xf7};
0000 ; uint adc_val,dis_val;
0000 ; uchar i,cnt;
0000 ; /************************************************/
0000 ; void port_init(void)
0000 ; {
0000 .dbline 12
0000 ; PORTA = 0x7F;
0000 8FE7 ldi R24,127
0002 8BBB out 0x1b,R24
0004 .dbline 13
0004 ; DDRA = 0x7F;
0004 8ABB out 0x1a,R24
0006 .dbline 14
0006 ; PORTB = 0xFF;
0006 8FEF ldi R24,255
0008 88BB out 0x18,R24
000A .dbline 15
000A ; DDRB = 0xFF;
000A 87BB out 0x17,R24
000C .dbline 16
000C ; PORTC = 0xFF;
000C 85BB out 0x15,R24
000E .dbline 17
000E ; DDRC = 0xFF;
000E 84BB out 0x14,R24
0010 .dbline 18
0010 ; PORTD = 0xFF;
0010 82BB out 0x12,R24
0012 .dbline 19
0012 ; DDRD = 0xFF;
0012 81BB out 0x11,R24
0014 .dbline -2
0014 L1:
0014 .dbline 0 ; func end
0014 0895 ret
0016 .dbend
0016 .dbfunc e adc_init _adc_init fV
.even
0016 _adc_init::
0016 .dbline -1
0016 .dbline 23
0016 ; }
0016 ; /************************************************/
0016 ; void adc_init(void)
0016 ; {
0016 .dbline 24
0016 ; ADCSRA = 0xE3;
0016 83EE ldi R24,227
0018 86B9 out 0x6,R24
001A .dbline 25
001A ; ADMUX = 0xC7;
001A 87EC ldi R24,199
001C 87B9 out 0x7,R24
001E .dbline -2
001E L2:
001E .dbline 0 ; func end
001E 0895 ret
0020 .dbend
0020 .dbfunc e timer0_init _timer0_init fV
.even
0020 _timer0_init::
0020 .dbline -1
0020 .dbline 29
0020 ; }
0020 ; //***************************
0020 ; void timer0_init(void)
0020 ; {
0020 .dbline 30
0020 ; TCNT0 = 0x83;
0020 83E8 ldi R24,131
0022 82BF out 0x32,R24
0024 .dbline 31
0024 ; TCCR0 = 0x03;
0024 83E0 ldi R24,3
0026 83BF out 0x33,R24
0028 .dbline 32
0028 ; TIMSK = 0x01;
0028 81E0 ldi R24,1
002A 89BF out 0x39,R24
002C .dbline -2
002C L3:
002C .dbline 0 ; func end
002C 0895 ret
002E .dbend
002E .dbfunc e init_devices _init_devices fV
.even
002E _init_devices::
002E .dbline -1
002E .dbline 36
002E ; }
002E ; /*********************************************/
002E ; void init_devices(void)
002E ; {
002E .dbline 37
002E ; port_init();
002E E8DF xcall _port_init
0030 .dbline 38
0030 ; timer0_init();
0030 F7DF xcall _timer0_init
0032 .dbline 39
0032 ; adc_init();
0032 F1DF xcall _adc_init
0034 .dbline 40
0034 ; SREG=0x80;
0034 80E8 ldi R24,128
0036 8FBF out 0x3f,R24
0038 .dbline -2
0038 L4:
0038 .dbline 0 ; func end
0038 0895 ret
003A .dbend
.area vector(rom, abs)
.org 36
0024 0C941D00 jmp _timer0_ovf_isr
.area text(rom, con, rel)
003A .dbfile d:\MYDOCU~1\ac10-1\ac10-1.c
003A .dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
.even
003A _timer0_ovf_isr::
003A 2A92 st -y,R2
003C 0A93 st -y,R16
003E 1A93 st -y,R17
0040 2A93 st -y,R18
0042 3A93 st -y,R19
0044 8A93 st -y,R24
0046 9A93 st -y,R25
0048 EA93 st -y,R30
004A FA93 st -y,R31
004C 2FB6 in R2,0x3f
004E 2A92 st -y,R2
0050 0E940000 xcall push_gset1
0054 .dbline -1
0054 .dbline 45
0054 ; }
0054 ; //***************************
0054 ; #pragma interrupt_handler timer0_ovf_isr:10
0054 ; void timer0_ovf_isr(void)
0054 ; {
0054 .dbline 46
0054 ; TCNT0 = 0x83;
0054 83E8 ldi R24,131
0056 82BF out 0x32,R24
0058 .dbline 47
0058 ; cnt++;
0058 80910000 lds R24,_cnt
005C 8F5F subi R24,255 ; addi 1
005E 80930000 sts _cnt,R24
0062 .dbline 48
0062 ; if(++i>3)i=0;
0062 80910100 lds R24,_i
0066 8F5F subi R24,255 ; addi 1
0068 282E mov R2,R24
006A 20920100 sts _i,R2
006E 83E0 ldi R24,3
0070 8215 cp R24,R2
0072 18F4 brsh L6
0074 .dbline 48
0074 2224 clr R2
0076 20920100 sts _i,R2
007A L6:
007A .dbline 49
007A ; switch(i)
007A 40910100 lds R20,_i
007E 5527 clr R21
0080 4030 cpi R20,0
0082 4507 cpc R20,R21
0084 79F0 breq L11
0086 X0:
0086 4130 cpi R20,1
0088 E0E0 ldi R30,0
008A 5E07 cpc R21,R30
008C F9F0 breq L12
008E 4230 cpi R20,2
0090 E0E0 ldi R30,0
0092 5E07 cpc R21,R30
0094 09F4 brne X2
0096 32C0 xjmp L14
0098 X2:
0098 4330 cpi R20,3
009A E0E0 ldi R30,0
009C 5E07 cpc R21,R30
009E 09F4 brne X3
00A0 45C0 xjmp L16
00A2 X3:
00A2 57C0 xjmp L9
00A4 X1:
00A4 .dbline 50
00A4 ; {
00A4 L11:
00A4 .dbline 51
00A4 ; case 0:PORTA=SEG7[dis_val%10];PORTC=ACT[0];break;
00A4 2AE0 ldi R18,10
00A6 30E0 ldi R19,0
00A8 00910200 lds R16,_dis_val
00AC 10910300 lds R17,_dis_val+1
00B0 0E940000 xcall mod16u
00B4 F801 movw R30,R16
00B6 80E0 ldi R24,<_SEG7
00B8 90E0 ldi R25,>_SEG7
00BA E80F add R30,R24
00BC F91F adc R31,R25
00BE E491 lpm R30,Z
00C0 EBBB out 0x1b,R30
00C2 .dbline 51
00C2 E0E0 ldi R30,<_ACT
00C4 F0E0 ldi R31,>_ACT
00C6 E491 lpm R30,Z
00C8 E5BB out 0x15,R30
00CA .dbline 51
00CA 43C0 xjmp L9
00CC L12:
00CC .dbline 52
00CC ; case 1:PORTA=SEG7[(dis_val/10)%10];PORTC=ACT[1];break;
00CC 2AE0 ldi R18,10
00CE 30E0 ldi R19,0
00D0 00910200 lds R16,_dis_val
00D4 10910300 lds R17,_dis_val+1
00D8 0E940000 xcall div16u
00DC 2AE0 ldi R18,10
00DE 30E0 ldi R19,0
00E0 0E940000 xcall mod16u
00E4 F801 movw R30,R16
00E6 80E0 ldi R24,<_SEG7
00E8 90E0 ldi R25,>_SEG7
00EA E80F add R30,R24
00EC F91F adc R31,R25
00EE E491 lpm R30,Z
00F0 EBBB out 0x1b,R30
00F2 .dbline 52
00F2 E0E0 ldi R30,<_ACT+1
00F4 F0E0 ldi R31,>_ACT+1
00F6 E491 lpm R30,Z
00F8 E5BB out 0x15,R30
00FA .dbline 52
00FA 2BC0 xjmp L9
00FC L14:
00FC .dbline 53
00FC ; case 2:PORTA=SEG7[(dis_val/100)%10];PORTC=ACT[2];break;
00FC 24E6 ldi R18,100
00FE 30E0 ldi R19,0
0100 00910200 lds R16,_dis_val
0104 10910300 lds R17,_dis_val+1
0108 0E940000 xcall div16u
010C 2AE0 ldi R18,10
010E 30E0 ldi R19,0
0110 0E940000 xcall mod16u
0114 F801 movw R30,R16
0116 80E0 ldi R24,<_SEG7
0118 90E0 ldi R25,>_SEG7
011A E80F add R30,R24
011C F91F adc R31,R25
011E E491 lpm R30,Z
0120 EBBB out 0x1b,R30
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -