📄 conter_icc.lst
字号:
__text_start:
__start:
32 E5CF LDI R28,0x5F
33 E0D4 LDI R29,4
34 BFCD OUT 0x3D,R28
35 BFDE OUT 0x3E,R29
36 51CE SUBI R28,0x1E
37 40D0 SBCI R29,0
38 EA0A LDI R16,0xAA
39 8308 STD Y+0,R16
3A 2400 CLR R0
3B E6EF LDI R30,0x6F
3C E0F0 LDI R31,0
3D E010 LDI R17,0
3E 37E1 CPI R30,0x71
3F 07F1 CPC R31,R17
40 F011 BEQ 0x0043
41 9201 ST R0,Z+
42 CFFB RJMP 0x003E
43 8300 STD Z+0,R16
44 E5E4 LDI R30,0x54
45 E0F0 LDI R31,0
46 E6A0 LDI R26,0x60
47 E0B0 LDI R27,0
48 E010 LDI R17,0
49 E000 LDI R16,0
4A BF0B OUT 0x3B,R16
4B 36E3 CPI R30,0x63
4C 07F1 CPC R31,R17
4D F021 BEQ 0x0052
4E 95C8 LPM
4F 9631 ADIW R30,1
50 920D ST R0,X+
51 CFF9 RJMP 0x004B
52 940E 00A9 CALL _main
_exit:
54 CFFF RJMP _exit
FILE: E:\新建文件夹\conter_icc\cfile\delay.c
(0001) #define DELAY_C
(0002) #include "includes.h"
(0003) #define XTAL 4 //晶振频率,单位MHz
(0004) void delay_1us(void) //1us延时函数
(0005) {
(0006) asm("nop");
_delay_1us:
55 0000 NOP
56 9508 RET
_delay_nus:
i --> R20
n --> R10
57 940E 0145 CALL push_xgset300C
59 0158 MOVW R10,R16
(0007) }
(0008)
(0009) void delay_nus(unsigned int n) //N us延时函数
(0010) {
(0011) unsigned int i=0;
(0012) for (i=0;i<n;i++)
5A 2744 CLR R20
5B 2755 CLR R21
5C C003 RJMP 0x0060
(0013) delay_1us();
5D DFF7 RCALL _delay_1us
5E 5F4F SUBI R20,0xFF
5F 4F5F SBCI R21,0xFF
60 154A CP R20,R10
61 055B CPC R21,R11
62 F3D0 BCS 0x005D
63 940C 014A JMP pop_xgset300C
(0014) }
(0015)
(0016) void delay_1ms(void) //1ms延时函数
(0017) {
(0018) unsigned int i;
(0019) for (i=0;i<(unsigned int)(XTAL*143-2);i++);
_delay_1ms:
i --> R16
65 2700 CLR R16
66 2711 CLR R17
67 C002 RJMP 0x006A
68 5F0F SUBI R16,0xFF
69 4F1F SBCI R17,0xFF
6A E38A LDI R24,0x3A
6B E092 LDI R25,2
6C 1708 CP R16,R24
6D 0719 CPC R17,R25
6E F3C8 BCS 0x0068
6F 9508 RET
_delay_nms:
i --> R20
n --> R10
70 940E 0145 CALL push_xgset300C
72 0158 MOVW R10,R16
(0020) }
(0021)
(0022) void delay_nms(unsigned int n) //N ms延时函数
(0023) {
(0024) unsigned int i=0;
(0025) for (i=0;i<n;i++)
73 2744 CLR R20
74 2755 CLR R21
75 C003 RJMP 0x0079
(0026) {
(0027) delay_1ms();
76 DFEE RCALL _delay_1ms
77 5F4F SUBI R20,0xFF
78 4F5F SBCI R21,0xFF
79 154A CP R20,R10
7A 055B CPC R21,R11
7B F3D0 BCS 0x0076
7C 940C 014A JMP pop_xgset300C
FILE: E:\新建文件夹\conter_icc\cfile\init.c
(0001) #define INIT_C
(0002) #include "includes.h"
(0003) void InitIo(void)
(0004) {
(0005) DDRA = 0xff;
_InitIo:
7E EF8F LDI R24,0xFF
7F BB8A OUT 0x1A,R24
(0006) PORTA = 0xff;
80 BB8B OUT 0x1B,R24
(0007) DDRB = 0x00;
81 2422 CLR R2
82 BA27 OUT 0x17,R2
(0008) //PORTB = 0x00;
(0009) PORTB = 0xff;
83 BB88 OUT 0x18,R24
(0010) DDRC = 0xff;
84 BB84 OUT 0x14,R24
(0011) PORTC = 0xff;
85 BB85 OUT 0x15,R24
86 9508 RET
_display:
sel --> R20
i --> R22
p --> R10
87 940E 014F CALL push_xgsetF00C
89 0158 MOVW R10,R16
FILE: E:\新建文件夹\conter_icc\cfile\main.c
(0001) #define MAIN_C
(0002) #include "includes.h"
(0003) /***************************************************/
(0004) /*T0工作于计数方式*/
(0005) /*计数脉冲从PB0(T0)脚输入*/
(0006) /***************************************************/
(0007) //数码管字形表
(0008) //数码管为公阴极
(0009) unsigned char table[10] =
(0010) {
(0011) 0x3f, //0
(0012) 0x06, //1
(0013) 0x5b, //2
(0014) 0x4f, //3
(0015) 0x66, //4
(0016) 0x6d, //5
(0017) 0x7d, //6
(0018) 0x07, //7
(0019) 0x7f, //8
(0020) 0x6f //9
(0021) };
(0022)
(0023) void display(unsigned char *p)
(0024) {
(0025) unsigned char i;
(0026) unsigned sel = 0x08;
8A E048 LDI R20,0x8
8B E050 LDI R21,0
(0027) for(i=0;i<4;i++)
8C 2766 CLR R22
8D C017 RJMP 0x00A5
(0028) {
(0029) ConPort = ~sel;
8E 011A MOVW R2,R20
8F 9420 COM R2
90 9430 COM R3
91 BA25 OUT 0x15,R2
(0030) OutPort = table[p[i]];
92 2FE6 MOV R30,R22
93 27FF CLR R31
94 0DEA ADD R30,R10
95 1DFB ADC R31,R11
96 81E0 LDD R30,Z+0
97 27FF CLR R31
98 E685 LDI R24,0x65
99 E090 LDI R25,0
9A 0FE8 ADD R30,R24
9B 1FF9 ADC R31,R25
9C 8020 LDD R2,Z+0
9D BA2B OUT 0x1B,R2
(0031) delay_nms(1);
9E E001 LDI R16,1
9F E010 LDI R17,0
A0 940E 0070 CALL _delay_nms
(0032) sel = sel>>1;
A2 9556 LSR R21
A3 9547 ROR R20
A4 9563 INC R22
A5 3064 CPI R22,4
A6 F338 BCS 0x008E
A7 940C 0156 JMP pop_xgsetF00C
(0033) }
(0034) }
(0035)
(0036)
(0037)
(0038)
(0039)
(0040) void main(void)
(0041) {
(0042) unsigned char load;
(0043) InitIo();
_main:
load --> R10
A9 940E 007E CALL _InitIo
(0044) PORTA = 0xff; //点亮测试所有数码管
AB EF8F LDI R24,0xFF
AC BB8B OUT 0x1B,R24
(0045) PORTC = 0x00;
AD 2422 CLR R2
AE BA25 OUT 0x15,R2
(0046) delay_nms(10);
AF E00A LDI R16,0xA
B0 E010 LDI R17,0
B1 940E 0070 CALL _delay_nms
(0047) PORTC = 0xff; //熄灭所有数码管
B3 EF8F LDI R24,0xFF
B4 BB85 OUT 0x15,R24
(0048) TCCR0 |= (1<<CS02)|(1<<CS01);//T/C0工作于计数方式,下降沿触发
B5 B783 IN R24,0x33
B6 6086 ORI R24,6
B7 BF83 OUT 0x33,R24
(0049) TCNT0 = CNT; //计数初值
B8 9020 0064 LDS R2,CNT
BA BE22 OUT 0x32,R2
BB C00A RJMP 0x00C6
(0050) while(1)
(0051) {
(0052) load = TCNT0;
BC B6A2 IN R10,0x32
(0053) process(load,data);
BD E620 LDI R18,0x60
BE E030 LDI R19,0
BF 2D0A MOV R16,R10
C0 2711 CLR R17
C1 940E 00C8 CALL _process
(0054) display(data);
C3 E600 LDI R16,0x60
C4 E010 LDI R17,0
C5 DFC1 RCALL _display
C6 CFF5 RJMP 0x00BC
C7 9508 RET
_process:
p --> R20
i --> R10
C8 940E 0145 CALL push_xgset300C
CA 01A9 MOVW R20,R18
CB 2EA0 MOV R10,R16
FILE: E:\新建文件夹\conter_icc\cfile\number.c
(0001) #define NUMBER_C
(0002) #include "includes.h"
(0003)
(0004)
(0005) void process(unsigned char i,unsigned char *p)
(0006) {
(0007) p[0] = i/1000;
CC EE28 LDI R18,0xE8
CD E033 LDI R19,3
CE 2D0A MOV R16,R10
CF 2711 CLR R17
D0 940E 00F7 CALL div16s
D2 01FA MOVW R30,R20
D3 8300 STD Z+0,R16
(0008) i = i%1000;
D4 EE28 LDI R18,0xE8
D5 E033 LDI R19,3
D6 2D0A MOV R16,R10
D7 2711 CLR R17
D8 940E 00F3 CALL mod16s
DA 2EA0 MOV R10,R16
(0009) p[1] = i/100;
DB E614 LDI R17,0x64
DC 940E 012F CALL div8u
DE 01FA MOVW R30,R20
DF 8301 STD Z+1,R16
(0010) i = i%100;
E0 E614 LDI R17,0x64
E1 2D0A MOV R16,R10
E2 940E 012D CALL mod8u
E4 2EA0 MOV R10,R16
(0011) p[2] = i/10;
E5 E01A LDI R17,0xA
E6 940E 012F CALL div8u
E8 01FA MOVW R30,R20
E9 8302 STD Z+2,R16
(0012) i = i%10;
EA E01A LDI R17,0xA
EB 2D0A MOV R16,R10
EC 940E 012D CALL mod8u
EE 2EA0 MOV R10,R16
(0013) p[3] = i;
FILE: <library>
EF 01FA MOVW R30,R20
F0 82A3 STD Z+3,R10
F1 940C 014A JMP pop_xgset300C
mod16s:
F3 9468 BSET 6
F4 92DA ST R13,-Y
F5 2ED1 MOV R13,R17
F6 C004 RJMP 0x00FB
div16s:
F7 94E8 BCLR 6
F8 92DA ST R13,-Y
F9 2ED1 MOV R13,R17
FA 26D3 EOR R13,R19
FB FF17 SBRS R17,7
FC C004 RJMP 0x0101
FD 9510 COM R17
FE 9500 COM R16
FF 5F0F SUBI R16,0xFF
100 4F1F SBCI R17,0xFF
101 FF37 SBRS R19,7
102 C004 RJMP 0x0107
103 9530 COM R19
104 9520 COM R18
105 5F2F SUBI R18,0xFF
106 4F3F SBCI R19,0xFF
107 940E 0114 CALL xdiv16u
109 FED7 SBRS R13,7
10A C004 RJMP 0x010F
10B 9510 COM R17
10C 9500 COM R16
10D 5F0F SUBI R16,0xFF
10E 4F1F SBCI R17,0xFF
10F 90D9 LD R13,Y+
110 9508 RET
mod16u:
111 9468 BSET 6
112 C001 RJMP xdiv16u
div16u:
113 94E8 BCLR 6
xdiv16u:
114 92EA ST R14,-Y
115 92FA ST R15,-Y
116 938A ST R24,-Y
117 24EE CLR R14
118 24FF CLR R15
119 E180 LDI R24,0x10
11A 0F00 LSL R16
11B 1F11 ROL R17
11C 1CEE ROL R14
11D 1CFF ROL R15
11E 16E2 CP R14,R18
11F 06F3 CPC R15,R19
120 F018 BCS 0x0124
121 1AE2 SUB R14,R18
122 0AF3 SBC R15,R19
123 9503 INC R16
124 958A DEC R24
125 F7A1 BNE 0x011A
126 F416 BRTC 0x0129
127 2D0E MOV R16,R14
128 2D1F MOV R17,R15
129 9189 LD R24,Y+
12A 90F9 LD R15,Y+
12B 90E9 LD R14,Y+
12C 9508 RET
mod8u:
12D 9468 BSET 6
12E C001 RJMP xdiv8u
div8u:
12F 94E8 BCLR 6
xdiv8u:
130 932A ST R18,-Y
131 92FA ST R15,-Y
132 92EA ST R14,-Y
133 24FF CLR R15
134 24EE CLR R14
135 E120 LDI R18,0x10
136 0F00 LSL R16
137 1CFF ROL R15
138 1CEE ROL R14
139 16E1 CP R14,R17
13A F010 BCS 0x013D
13B 1AE1 SUB R14,R17
13C 9503 INC R16
13D 952A DEC R18
13E F7B9 BNE 0x0136
13F F40E BRTC 0x0141
140 2D0E MOV R16,R14
141 90E9 LD R14,Y+
142 90F9 LD R15,Y+
143 9129 LD R18,Y+
144 9508 RET
push_xgset300C:
145 935A ST R21,-Y
146 934A ST R20,-Y
147 92BA ST R11,-Y
148 92AA ST R10,-Y
149 9508 RET
pop_xgset300C:
14A 90A9 LD R10,Y+
14B 90B9 LD R11,Y+
14C 9149 LD R20,Y+
14D 9159 LD R21,Y+
14E 9508 RET
push_xgsetF00C:
14F 937A ST R23,-Y
150 936A ST R22,-Y
151 935A ST R21,-Y
152 934A ST R20,-Y
153 92BA ST R11,-Y
154 92AA ST R10,-Y
155 9508 RET
pop_xgsetF00C:
156 90A9 LD R10,Y+
157 90B9 LD R11,Y+
158 9149 LD R20,Y+
159 9159 LD R21,Y+
15A 9169 LD R22,Y+
15B 9179 LD R23,Y+
15C 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -