📄 ac10-2.lis
字号:
.module ac10-2.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-2\ac10-2.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-2\ac10-2.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 15
0000 ; #include <iom16v.h>
0000 ; #define uchar unsigned char
0000 ; #define uint unsigned int
0000 ; #define OUT1_0 (PORTB=PORTB&0xfe)
0000 ; #define OUT1_1 (PORTB=PORTB|0x01)
0000 ; #define OUT2_0 (PORTB=PORTB&0xfd)
0000 ; #define OUT2_1 (PORTB=PORTB|0x02)
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 value,dis_val;
0000 ; uchar i,flag;
0000 ; /****************************************/
0000 ; void port_init(void)
0000 ; {
0000 .dbline 16
0000 ; PORTA = 0x7F;
0000 8FE7 ldi R24,127
0002 8BBB out 0x1b,R24
0004 .dbline 17
0004 ; DDRA = 0x7F;
0004 8ABB out 0x1a,R24
0006 .dbline 18
0006 ; PORTB = 0xFF;
0006 8FEF ldi R24,255
0008 88BB out 0x18,R24
000A .dbline 19
000A ; DDRB = 0xFF;
000A 87BB out 0x17,R24
000C .dbline 20
000C ; PORTC = 0xFF;
000C 85BB out 0x15,R24
000E .dbline 21
000E ; DDRC = 0xFF;
000E 84BB out 0x14,R24
0010 .dbline 22
0010 ; PORTD = 0xFF;
0010 82BB out 0x12,R24
0012 .dbline 23
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 timer0_init _timer0_init fV
.even
0016 _timer0_init::
0016 .dbline -1
0016 .dbline 27
0016 ; }
0016 ; /************************************/
0016 ; void timer0_init(void)
0016 ; {
0016 .dbline 28
0016 ; TCNT0 = 0x83;
0016 83E8 ldi R24,131
0018 82BF out 0x32,R24
001A .dbline 29
001A ; OCR0 = 0x7D;
001A 8DE7 ldi R24,125
001C 8CBF out 0x3c,R24
001E .dbline 30
001E ; TCCR0 = 0x03;
001E 83E0 ldi R24,3
0020 83BF out 0x33,R24
0022 .dbline -2
0022 L2:
0022 .dbline 0 ; func end
0022 0895 ret
0024 .dbend
.area vector(rom, abs)
.org 36
0024 0C941200 jmp _timer0_ovf_isr
.area text(rom, con, rel)
0024 .dbfile d:\MYDOCU~1\ac10-2\ac10-2.c
0024 .dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
.even
0024 _timer0_ovf_isr::
0024 2A92 st -y,R2
0026 0A93 st -y,R16
0028 1A93 st -y,R17
002A 2A93 st -y,R18
002C 3A93 st -y,R19
002E 8A93 st -y,R24
0030 9A93 st -y,R25
0032 EA93 st -y,R30
0034 FA93 st -y,R31
0036 2FB6 in R2,0x3f
0038 2A92 st -y,R2
003A 0E940000 xcall push_gset1
003E .dbline -1
003E .dbline 35
003E ; }
003E ; /*************************************/
003E ; #pragma interrupt_handler timer0_ovf_isr:10
003E ; void timer0_ovf_isr(void)
003E ; {
003E .dbline 36
003E ; TCNT0 = 0x83;
003E 83E8 ldi R24,131
0040 82BF out 0x32,R24
0042 .dbline 37
0042 ; if(++i>3)i=0;
0042 80910100 lds R24,_i
0046 8F5F subi R24,255 ; addi 1
0048 282E mov R2,R24
004A 20920100 sts _i,R2
004E 83E0 ldi R24,3
0050 8215 cp R24,R2
0052 18F4 brsh L4
0054 .dbline 37
0054 2224 clr R2
0056 20920100 sts _i,R2
005A L4:
005A .dbline 38
005A ; switch(i)
005A 40910100 lds R20,_i
005E 5527 clr R21
0060 4030 cpi R20,0
0062 4507 cpc R20,R21
0064 79F0 breq L9
0066 X0:
0066 4130 cpi R20,1
0068 E0E0 ldi R30,0
006A 5E07 cpc R21,R30
006C F9F0 breq L10
006E 4230 cpi R20,2
0070 E0E0 ldi R30,0
0072 5E07 cpc R21,R30
0074 09F4 brne X2
0076 32C0 xjmp L12
0078 X2:
0078 4330 cpi R20,3
007A E0E0 ldi R30,0
007C 5E07 cpc R21,R30
007E 09F4 brne X3
0080 45C0 xjmp L14
0082 X3:
0082 57C0 xjmp L7
0084 X1:
0084 .dbline 39
0084 ; {
0084 L9:
0084 .dbline 40
0084 ; case 0:PORTA=SEG7[dis_val%10];PORTC=ACT[0];break;
0084 2AE0 ldi R18,10
0086 30E0 ldi R19,0
0088 00910200 lds R16,_dis_val
008C 10910300 lds R17,_dis_val+1
0090 0E940000 xcall mod16u
0094 F801 movw R30,R16
0096 80E0 ldi R24,<_SEG7
0098 90E0 ldi R25,>_SEG7
009A E80F add R30,R24
009C F91F adc R31,R25
009E E491 lpm R30,Z
00A0 EBBB out 0x1b,R30
00A2 .dbline 40
00A2 E0E0 ldi R30,<_ACT
00A4 F0E0 ldi R31,>_ACT
00A6 E491 lpm R30,Z
00A8 E5BB out 0x15,R30
00AA .dbline 40
00AA 43C0 xjmp L7
00AC L10:
00AC .dbline 41
00AC ; case 1:PORTA=SEG7[(dis_val/10)%10];PORTC=ACT[1];break;
00AC 2AE0 ldi R18,10
00AE 30E0 ldi R19,0
00B0 00910200 lds R16,_dis_val
00B4 10910300 lds R17,_dis_val+1
00B8 0E940000 xcall div16u
00BC 2AE0 ldi R18,10
00BE 30E0 ldi R19,0
00C0 0E940000 xcall mod16u
00C4 F801 movw R30,R16
00C6 80E0 ldi R24,<_SEG7
00C8 90E0 ldi R25,>_SEG7
00CA E80F add R30,R24
00CC F91F adc R31,R25
00CE E491 lpm R30,Z
00D0 EBBB out 0x1b,R30
00D2 .dbline 41
00D2 E0E0 ldi R30,<_ACT+1
00D4 F0E0 ldi R31,>_ACT+1
00D6 E491 lpm R30,Z
00D8 E5BB out 0x15,R30
00DA .dbline 41
00DA 2BC0 xjmp L7
00DC L12:
00DC .dbline 42
00DC ; case 2:PORTA=SEG7[(dis_val/100)%10];PORTC=ACT[2];break;
00DC 24E6 ldi R18,100
00DE 30E0 ldi R19,0
00E0 00910200 lds R16,_dis_val
00E4 10910300 lds R17,_dis_val+1
00E8 0E940000 xcall div16u
00EC 2AE0 ldi R18,10
00EE 30E0 ldi R19,0
00F0 0E940000 xcall mod16u
00F4 F801 movw R30,R16
00F6 80E0 ldi R24,<_SEG7
00F8 90E0 ldi R25,>_SEG7
00FA E80F add R30,R24
00FC F91F adc R31,R25
00FE E491 lpm R30,Z
0100 EBBB out 0x1b,R30
0102 .dbline 42
0102 E0E0 ldi R30,<_ACT+2
0104 F0E0 ldi R31,>_ACT+2
0106 E491 lpm R30,Z
0108 E5BB out 0x15,R30
010A .dbline 42
010A 13C0 xjmp L7
010C L14:
010C .dbline 43
010C 28EE ldi R18,1000
010E 33E0 ldi R19,3
0110 00910200 lds R16,_dis_val
0114 10910300 lds R17,_dis_val+1
0118 0E940000 xcall div16u
011C F801 movw R30,R16
011E 80E0 ldi R24,<_SEG7
0120 90E0 ldi R25,>_SEG7
0122 E80F add R30,R24
0124 F91F adc R31,R25
0126 E491 lpm R30,Z
0128 EBBB out 0x1b,R30
012A .dbline 43
012A E0E0 ldi R30,<_ACT+3
012C F0E0 ldi R31,>_ACT+3
012E E491 lpm R30,Z
0130 E5BB out 0x15,R30
0132 .dbline 43
0132 .dbline 44
0132 L7:
0132 .dbline -2
0132 L3:
0132 0E940000 xcall pop_gset1
0136 2990 ld R2,y+
0138 2FBE out 0x3f,R2
013A F991 ld R31,y+
013C E991 ld R30,y+
013E 9991 ld R25,y+
0140 8991 ld R24,y+
0142 3991 ld R19,y+
0144 2991 ld R18,y+
0146 1991 ld R17,y+
0148 0991 ld R16,y+
014A 2990 ld R2,y+
014C .dbline 0 ; func end
014C 1895 reti
014E .dbend
014E .dbfunc e timer1_init _timer1_init fV
.even
014E _timer1_init::
014E .dbline -1
014E .dbline 49
014E ; case 3:PORTA=SEG7[dis_val/1000];PORTC=ACT[3];break;
014E ; default:break;
014E ; }
014E ; }
014E ; /************************************/
014E ; void timer1_init(void)
014E ; {
014E .dbline 50
014E ; TCNT1H = 0xE7;
014E 87EE ldi R24,231
0150 8DBD out 0x2d,R24
0152 .dbline 51
0152 ; TCNT1L = 0x96;
0152 86E9 ldi R24,150
0154 8CBD out 0x2c,R24
0156 .dbline 52
0156 ; TCCR1B = 0x03;
0156 83E0 ldi R24,3
0158 8EBD out 0x2e,R24
015A .dbline -2
015A L16:
015A .dbline 0 ; func end
015A 0895 ret
015C .dbend
.area vector(rom, abs)
.org 32
0020 0C94AE00 jmp _timer1_ovf_isr
.area text(rom, con, rel)
015C .dbfile d:\MYDOCU~1\ac10-2\ac10-2.c
015C .dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
.even
015C _timer1_ovf_isr::
015C 8A93 st -y,R24
015E 8FB7 in R24,0x3f
0160 8A93 st -y,R24
0162 .dbline -1
0162 .dbline 57
0162 ; }
0162 ; /***************************************************/
0162 ; #pragma interrupt_handler timer1_ovf_isr:9
0162 ; void timer1_ovf_isr(void)
0162 ; {
0162 .dbline 58
0162 ; TCNT1H = 0xE7;
0162 87EE ldi R24,231
0164 8DBD out 0x2d,R24
0166 .dbline 59
0166 ; TCNT1L = 0x96;
0166 86E9 ldi R24,150
0168 8CBD out 0x2c,R24
016A .dbline -2
016A L17:
016A 8991 ld R24,y+
016C 8FBF out 0x3f,R24
016E 8991 ld R24,y+
0170 .dbline 0 ; func end
0170 1895 reti
0172 .dbend
0172 .dbfunc e adc_init _adc_init fV
.even
0172 _adc_init::
0172 .dbline -1
0172 .dbline 63
0172 ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -