📄 ac11-3.lis
字号:
.module ac11-3.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\ac11-3\ac11-3.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\ac11-3\ac11-3.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 20
0000 ; #include <iom16v.h>
0000 ; #include<eeprom.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 ; #define LED1_0 (PORTB=PORTB&0xfe)
0000 ; #define S1 (PIND&0x10)
0000 ; #define S2 (PIND&0x20)
0000 ; #define S3 (PIND&0x40)
0000 ; #define S4 (PIND&0x80)
0000 ; #define SINT0 (PIND&0x04)
0000 ; #define SINT1 (PIND&0x08)
0000 ; uchar dpw,dpt,write_flag,time_flag,cnt;
0000 ; uint key_cnt,ms_cnt;
0000 ; uchar sec,min,set_sec,set_min;
0000 ; /************************************************/
0000 ; void port_init(void)
0000 ; {
0000 .dbline 21
0000 ; PORTA = 0xFF;
0000 8FEF ldi R24,255
0002 8BBB out 0x1b,R24
0004 .dbline 22
0004 ; DDRA = 0xFF;
0004 8ABB out 0x1a,R24
0006 .dbline 23
0006 ; PORTB = 0xFF;
0006 88BB out 0x18,R24
0008 .dbline 24
0008 ; DDRB = 0xFF;
0008 87BB out 0x17,R24
000A .dbline 25
000A ; PORTC = 0xFF;
000A 85BB out 0x15,R24
000C .dbline 26
000C ; DDRC = 0xFF;
000C 84BB out 0x14,R24
000E .dbline 27
000E ; PORTD = 0xFF;
000E 82BB out 0x12,R24
0010 .dbline 28
0010 ; DDRD = 0x00;
0010 2224 clr R2
0012 21BA out 0x11,R2
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 32
0016 ; }
0016 ; //***************************
0016 ; void timer0_init(void)
0016 ; {
0016 .dbline 33
0016 ; TCNT0 = 0x83;
0016 83E8 ldi R24,131
0018 82BF out 0x32,R24
001A .dbline 34
001A ; TCCR0 = 0x03;
001A 83E0 ldi R24,3
001C 83BF out 0x33,R24
001E .dbline 35
001E ; TIMSK = 0x01;
001E 81E0 ldi R24,1
0020 89BF out 0x39,R24
0022 .dbline -2
0022 L2:
0022 .dbline 0 ; func end
0022 0895 ret
0024 .dbend
0024 .dbfunc e init_devices _init_devices fV
.even
0024 _init_devices::
0024 .dbline -1
0024 .dbline 39
0024 ; }
0024 ; /*********************************************/
0024 ; void init_devices(void)
0024 ; {
0024 .dbline 40
0024 ; port_init();
0024 EDDF xcall _port_init
0026 .dbline 41
0026 ; timer0_init();
0026 F7DF xcall _timer0_init
0028 .dbline 42
0028 ; SREG=0x80;
0028 80E8 ldi R24,128
002A 8FBF out 0x3f,R24
002C .dbline -2
002C L3:
002C .dbline 0 ; func end
002C 0895 ret
002E .dbend
.area vector(rom, abs)
.org 36
0024 0C941700 jmp _timer0_ovf_isr
.area text(rom, con, rel)
002E .dbfile d:\MYDOCU~1\ac11-3\ac11-3.c
002E .dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
.even
002E _timer0_ovf_isr::
002E 2A92 st -y,R2
0030 3A92 st -y,R3
0032 0A93 st -y,R16
0034 1A93 st -y,R17
0036 2A93 st -y,R18
0038 3A93 st -y,R19
003A 8A93 st -y,R24
003C 9A93 st -y,R25
003E EA93 st -y,R30
0040 FA93 st -y,R31
0042 2FB6 in R2,0x3f
0044 2A92 st -y,R2
0046 0E940000 xcall push_gset1
004A .dbline -1
004A .dbline 47
004A ; }
004A ; //***************************
004A ; #pragma interrupt_handler timer0_ovf_isr:10
004A ; void timer0_ovf_isr(void)
004A ; {
004A .dbline 48
004A ; TCNT0 = 0x83;
004A 83E8 ldi R24,131
004C 82BF out 0x32,R24
004E .dbline 49
004E ; if(++key_cnt>300)key_cnt=0;
004E 80910600 lds R24,_key_cnt
0052 90910700 lds R25,_key_cnt+1
0056 0196 adiw R24,1
0058 1C01 movw R2,R24
005A 30920700 sts _key_cnt+1,R3
005E 20920600 sts _key_cnt,R2
0062 8CE2 ldi R24,300
0064 91E0 ldi R25,1
0066 8215 cp R24,R2
0068 9305 cpc R25,R3
006A 30F4 brsh L5
006C .dbline 49
006C 2224 clr R2
006E 3324 clr R3
0070 30920700 sts _key_cnt+1,R3
0074 20920600 sts _key_cnt,R2
0078 L5:
0078 .dbline 50
0078 ; if(++cnt>7)cnt=0;
0078 80910800 lds R24,_cnt
007C 8F5F subi R24,255 ; addi 1
007E 282E mov R2,R24
0080 20920800 sts _cnt,R2
0084 87E0 ldi R24,7
0086 8215 cp R24,R2
0088 18F4 brsh L7
008A .dbline 50
008A 2224 clr R2
008C 20920800 sts _cnt,R2
0090 L7:
0090 .dbline 51
0090 ; if(++ms_cnt>999){ms_cnt=0;sec++;}
0090 80910400 lds R24,_ms_cnt
0094 90910500 lds R25,_ms_cnt+1
0098 0196 adiw R24,1
009A 1C01 movw R2,R24
009C 30920500 sts _ms_cnt+1,R3
00A0 20920400 sts _ms_cnt,R2
00A4 87EE ldi R24,999
00A6 93E0 ldi R25,3
00A8 8215 cp R24,R2
00AA 9305 cpc R25,R3
00AC 58F4 brsh L9
00AE .dbline 51
00AE .dbline 51
00AE 2224 clr R2
00B0 3324 clr R3
00B2 30920500 sts _ms_cnt+1,R3
00B6 20920400 sts _ms_cnt,R2
00BA .dbline 51
00BA 80910300 lds R24,_sec
00BE 8F5F subi R24,255 ; addi 1
00C0 80930300 sts _sec,R24
00C4 .dbline 51
00C4 L9:
00C4 .dbline 52
00C4 ; if(sec>59){min++;sec=0;}
00C4 8BE3 ldi R24,59
00C6 20900300 lds R2,_sec
00CA 8215 cp R24,R2
00CC 40F4 brsh L11
00CE .dbline 52
00CE .dbline 52
00CE 80910200 lds R24,_min
00D2 8F5F subi R24,255 ; addi 1
00D4 80930200 sts _min,R24
00D8 .dbline 52
00D8 2224 clr R2
00DA 20920300 sts _sec,R2
00DE .dbline 52
00DE L11:
00DE .dbline 53
00DE ; if(min>59)min=59;
00DE 8BE3 ldi R24,59
00E0 20900200 lds R2,_min
00E4 8215 cp R24,R2
00E6 10F4 brsh L13
00E8 .dbline 53
00E8 80930200 sts _min,R24
00EC L13:
00EC .dbline 54
00EC ; switch(cnt)
00EC 40910800 lds R20,_cnt
00F0 5527 clr R21
00F2 4030 cpi R20,0
00F4 4507 cpc R20,R21
00F6 21F1 breq L18
00F8 X0:
00F8 4130 cpi R20,1
00FA E0E0 ldi R30,0
00FC 5E07 cpc R21,R30
00FE 09F4 brne X3
0100 32C0 xjmp L19
0102 X3:
0102 4230 cpi R20,2
0104 E0E0 ldi R30,0
0106 5E07 cpc R21,R30
0108 09F4 brne X4
010A 40C0 xjmp L21
010C X4:
010C 4330 cpi R20,3
010E E0E0 ldi R30,0
0110 5E07 cpc R21,R30
0112 09F4 brne X5
0114 4EC0 xjmp L23
0116 X5:
0116 4430 cpi R20,4
0118 E0E0 ldi R30,0
011A 5E07 cpc R21,R30
011C 09F4 brne X6
011E 5CC0 xjmp L25
0120 X6:
0120 4530 cpi R20,5
0122 E0E0 ldi R30,0
0124 5E07 cpc R21,R30
0126 09F4 brne X7
0128 7EC0 xjmp L29
012A X7:
012A 4630 cpi R20,6
012C E0E0 ldi R30,0
012E 5E07 cpc R21,R30
0130 09F4 brne X8
0132 8CC0 xjmp L31
0134 X8:
0134 4730 cpi R20,7
0136 E0E0 ldi R30,0
0138 5E07 cpc R21,R30
013A 09F4 brne X9
013C 9AC0 xjmp L33
013E X9:
013E BFC0 xjmp L16
0140 X1:
0140 .dbline 55
0140 ; {
0140 L18:
0140 .dbline 56
0140 ; case 0:PORTA=SEG7[sec%10];PORTC=ACT[0];break;
0140 2AE0 ldi R18,10
0142 30E0 ldi R19,0
0144 00910300 lds R16,_sec
0148 1127 clr R17
014A 0E940000 xcall mod16s
014E F801 movw R30,R16
0150 80E0 ldi R24,<_SEG7
0152 90E0 ldi R25,>_SEG7
0154 E80F add R30,R24
0156 F91F adc R31,R25
0158 E491 lpm R30,Z
015A EBBB out 0x1b,R30
015C .dbline 56
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -