|
发表于 2009-8-29 03:39:37
|
显示全部楼层
zhxzhx 一丁,你弄错了一点:
你使用了端口地址0x1c~0x1f来作为存放状态的变量,而不是使用寄存器。
端口地址0x1c~0x1f在m48中是EIFR、EIMSK、GPIOR0、EECR,如果用它们来作变量,后果不可预知。
我下载了IAR AVR 5.10A,试了下,效率还是不如汇编,麻烦你再找找吧!
使用寄存器的程序应该是这样:
# include <iom48.h>
# include <intrinsics.h>
# include <stdlib.h>
# include <stdio.h>
# include <string.h>
# include <math.h>
union BIT_VAR
{
unsigned char Val;
struct
{
unsigned char Bit0:1,
Bit1:1,
Bit2:1,
Bit3:1,
Bit4:1,
Bit5:1,
Bit6:1,
Bit7:1;
};
};
__regvar __no_init union BIT_VAR BUTTON_A @ 12;
__regvar __no_init union BIT_VAR BUTTON_B @ 13;
__regvar __no_init union BIT_VAR BUTTON_C @ 14;
__regvar __no_init union BIT_VAR BUTTON_D @ 15;
void BUTTON_0_ON(void)
{BUTTON_A.Bit0=0;
}
void BUTTON_1_ON(void)
{BUTTON_A.Bit1=0;
}
void BUTTON_2_ON(void)
{BUTTON_A.Bit2=0;
}
void BUTTON_3_ON(void)
{BUTTON_A.Bit3=0;
}
void BUTTON_4_ON(void)
{BUTTON_A.Bit4=0;
}
void BUTTON_5_ON(void)
{BUTTON_A.Bit5=0;
}
void BUTTON_6_ON(void)
{BUTTON_A.Bit6=0;
}
void BUTTON_7_ON(void)
{BUTTON_A.Bit7=0;
}
void BUTTON_8_ON(void)
{BUTTON_B.Bit0=0;
}
void BUTTON_9_ON(void)
{BUTTON_B.Bit1=0;
}
void BUTTON_10_ON(void)
{BUTTON_B.Bit2=0;
}
void BUTTON_11_ON(void)
{BUTTON_B.Bit3=0;
}
void BUTTON_12_ON(void)
{BUTTON_B.Bit4=0;
}
void BUTTON_13_ON(void)
{BUTTON_B.Bit5=0;
}
void BUTTON_14_ON(void)
{BUTTON_B.Bit6=0;
}
void BUTTON_15_ON(void)
{BUTTON_B.Bit7=0;
}
void BUTTON_16_ON(void)
{BUTTON_C.Bit0=0;
}
void BUTTON_17_ON(void)
{BUTTON_C.Bit1=0;
}
void BUTTON_18_ON(void)
{BUTTON_C.Bit2=0;
}
void BUTTON_19_ON(void)
{BUTTON_C.Bit3=0;
}
void BUTTON_20_ON(void)
{BUTTON_C.Bit4=0;
}
void BUTTON_21_ON(void)
{BUTTON_C.Bit5=0;
}
void BUTTON_22_ON(void)
{BUTTON_C.Bit6=0;
}
void BUTTON_23_ON(void)
{BUTTON_C.Bit7=0;
}
void BUTTON_24_ON(void)
{BUTTON_D.Bit0=0;
}
void BUTTON_25_ON(void)
{BUTTON_D.Bit1=0;
}
void BUTTON_26_ON(void)
{BUTTON_D.Bit2=0;
}
void BUTTON_27_ON(void)
{BUTTON_D.Bit3=0;
}
void BUTTON_28_ON(void)
{BUTTON_D.Bit4=0;
}
void BUTTON_29_ON(void)
{BUTTON_D.Bit5=0;
}
void BUTTON_30_ON(void)
{BUTTON_D.Bit6=0;
}
void BUTTON_31_ON(void)
{BUTTON_D.Bit7=0;
}
void main(void)
{
while(1)
{
if (BUTTON_A.Bit0) BUTTON_0_ON();
if (BUTTON_A.Bit1) BUTTON_1_ON();
if (BUTTON_A.Bit2) BUTTON_2_ON();
if (BUTTON_A.Bit3) BUTTON_3_ON();
if (BUTTON_A.Bit4) BUTTON_4_ON();
if (BUTTON_A.Bit5) BUTTON_5_ON();
if (BUTTON_A.Bit6) BUTTON_6_ON();
if (BUTTON_A.Bit7) BUTTON_7_ON();
if (BUTTON_B.Bit0) BUTTON_8_ON();
if (BUTTON_B.Bit1) BUTTON_9_ON();
if (BUTTON_B.Bit2) BUTTON_10_ON();
if (BUTTON_B.Bit3) BUTTON_11_ON();
if (BUTTON_B.Bit4) BUTTON_12_ON();
if (BUTTON_B.Bit5) BUTTON_13_ON();
if (BUTTON_B.Bit6) BUTTON_14_ON();
if (BUTTON_B.Bit7) BUTTON_15_ON();
if (BUTTON_C.Bit0) BUTTON_16_ON();
if (BUTTON_C.Bit1) BUTTON_17_ON();
if (BUTTON_C.Bit2) BUTTON_18_ON();
if (BUTTON_C.Bit3) BUTTON_19_ON();
if (BUTTON_C.Bit4) BUTTON_20_ON();
if (BUTTON_C.Bit5) BUTTON_21_ON();
if (BUTTON_C.Bit6) BUTTON_22_ON();
if (BUTTON_C.Bit7) BUTTON_23_ON();
if (BUTTON_D.Bit0) BUTTON_24_ON();
if (BUTTON_D.Bit1) BUTTON_25_ON();
if (BUTTON_D.Bit2) BUTTON_26_ON();
if (BUTTON_D.Bit3) BUTTON_27_ON();
if (BUTTON_D.Bit4) BUTTON_28_ON();
if (BUTTON_D.Bit5) BUTTON_29_ON();
if (BUTTON_D.Bit6) BUTTON_30_ON();
if (BUTTON_D.Bit7) BUTTON_31_ON();
}
}
编译结果是:
###############################################################################
# #
# 29/Aug/2009 03:43:33 #
# IAR Atmel AVR C/C++ Compiler V5.10A/W32 #
# Copyright 1996-2008 IAR Systems. All rights reserved. #
# #
# Source file = F:\单片机\制作\test_iar\main.c #
# Command line = F:\单片机\制作\test_iar\main.c --cpu=m48 -ms -o #
# F:\单片机\制作\test_iar\Debug\Obj\ -lCN #
# F:\单片机\制作\test_iar\Debug\List\ -lB #
# F:\单片机\制作\test_iar\Debug\List\ #
# --initializers_in_flash -z3 --no_cse --no_inline #
# --no_code_motion --no_cross_call --no_clustering #
# --no_tbaa --debug -e -I "I:\Program Files\IAR #
# Systems\Embedded Workbench 5.0 Evaluation\avr\INC\" -I #
# "I:\Program Files\IAR Systems\Embedded Workbench 5.0 #
# Evaluation\avr\INC\CLIB\" --eeprom_size 256 #
# --lock_regs=4 #
# List file = F:\单片机\制作\test_iar\Debug\List\main.lst #
# Object file = F:\单片机\制作\test_iar\Debug\Obj\main.r90 #
# #
# #
###############################################################################
F:\单片机\制作\test_iar\main.c
1 # include <iom48.h>
2 # include <intrinsics.h>
3 # include <stdlib.h>
4 # include <stdio.h>
5 # include <string.h>
6 # include <math.h>
7 union BIT_VAR
8 {
9 unsigned char Val;
10 struct
11 {
12 unsigned char Bit0:1,
13 Bit1:1,
14 Bit2:1,
15 Bit3:1,
16 Bit4:1,
17 Bit5:1,
18 Bit6:1,
19 Bit7:1;
20 };
21 };
\ In segment REGVAR_AN, at 0xc, root
22 __regvar __no_init union BIT_VAR BUTTON_A @ 12;
\ BUTTON_A:
\ 00000000 DS 1
\ In segment REGVAR_AN, at 0xd, root
23 __regvar __no_init union BIT_VAR BUTTON_B @ 13;
\ BUTTON_B:
\ 00000000 DS 1
\ In segment REGVAR_AN, at 0xe, root
24 __regvar __no_init union BIT_VAR BUTTON_C @ 14;
\ BUTTON_C:
\ 00000000 DS 1
\ In segment REGVAR_AN, at 0xf, root
25 __regvar __no_init union BIT_VAR BUTTON_D @ 15;
\ BUTTON_D:
\ 00000000 DS 1
26
\ In segment CODE, align 2, keep-with-next
27 void BUTTON_0_ON(void)
\ BUTTON_0_ON:
28 {BUTTON_A.Bit0=0;
\ 00000000 REQUIRE ?Register_R12_is_global_regvar
\ 00000000 94E8 CLT
\ 00000002 F8C0 BLD R12, 0
29 }
\ 00000004 9508 RET
\ 00000006 REQUIRE BUTTON_A
\ In segment CODE, align 2, keep-with-next
30 void BUTTON_1_ON(void)
\ BUTTON_1_ON:
31 {BUTTON_A.Bit1=0;
\ 00000000 REQUIRE ?Register_R12_is_global_regvar
\ 00000000 94E8 CLT
\ 00000002 F8C1 BLD R12, 1
32 }
\ 00000004 9508 RET
\ 00000006 REQUIRE BUTTON_A
\ In segment CODE, align 2, keep-with-next
33 void BUTTON_2_ON(void)
\ BUTTON_2_ON:
34 {BUTTON_A.Bit2=0;
\ 00000000 REQUIRE ?Register_R12_is_global_regvar
\ 00000000 94E8 CLT
\ 00000002 F8C2 BLD R12, 2
35 }
\ 00000004 9508 RET
\ 00000006 REQUIRE BUTTON_A
\ In segment CODE, align 2, keep-with-next
36 void BUTTON_3_ON(void)
\ BUTTON_3_ON:
37 {BUTTON_A.Bit3=0;
\ 00000000 REQUIRE ?Register_R12_is_global_regvar
\ 00000000 94E8 CLT
\ 00000002 F8C3 BLD R12, 3
38 }
\ 00000004 9508 RET
\ 00000006 REQUIRE BUTTON_A
\ In segment CODE, align 2, keep-with-next
39 void BUTTON_4_ON(void)
\ BUTTON_4_ON:
40 {BUTTON_A.Bit4=0;
\ 00000000 REQUIRE ?Register_R12_is_global_regvar
\ 00000000 94E8 CLT
\ 00000002 F8C4 BLD R12, 4
41 }
\ 00000004 9508 RET
\ 00000006 REQUIRE BUTTON_A
\ In segment CODE, align 2, keep-with-next
42 void BUTTON_5_ON(void)
\ BUTTON_5_ON:
43 {BUTTON_A.Bit5=0;
\ 00000000 REQUIRE ?Register_R12_is_global_regvar
\ 00000000 94E8 CLT
\ 00000002 F8C5 BLD R12, 5
44 }
\ 00000004 9508 RET
\ 00000006 REQUIRE BUTTON_A
\ In segment CODE, align 2, keep-with-next
45 void BUTTON_6_ON(void)
\ BUTTON_6_ON:
46 {BUTTON_A.Bit6=0;
\ 00000000 REQUIRE ?Register_R12_is_global_regvar
\ 00000000 94E8 CLT
\ 00000002 F8C6 BLD R12, 6
47 }
\ 00000004 9508 RET
\ 00000006 REQUIRE BUTTON_A
\ In segment CODE, align 2, keep-with-next
48 void BUTTON_7_ON(void)
\ BUTTON_7_ON:
49 {BUTTON_A.Bit7=0;
\ 00000000 REQUIRE ?Register_R12_is_global_regvar
\ 00000000 94E8 CLT
\ 00000002 F8C7 BLD R12, 7
50 }
\ 00000004 9508 RET
\ 00000006 REQUIRE BUTTON_A
51
\ In segment CODE, align 2, keep-with-next
52 void BUTTON_8_ON(void)
\ BUTTON_8_ON:
53 {BUTTON_B.Bit0=0;
\ 00000000 REQUIRE ?Register_R13_is_global_regvar
\ 00000000 94E8 CLT
\ 00000002 F8D0 BLD R13, 0
54 }
\ 00000004 9508 RET
\ 00000006 REQUIRE BUTTON_B
\ In segment CODE, align 2, keep-with-next
55 void BUTTON_9_ON(void)
\ BUTTON_9_ON:
56 {BUTTON_B.Bit1=0;
\ 00000000 REQUIRE ?Register_R13_is_global_regvar
\ 00000000 94E8 CLT
\ 00000002 F8D1 BLD R13, 1
57 }
\ 00000004 9508 RET
\ 00000006 REQUIRE BUTTON_B
\ In segment CODE, align 2, keep-with-next
58 void BUTTON_10_ON(void)
\ BUTTON_10_ON:
59 {BUTTON_B.Bit2=0;
\ 00000000 REQUIRE ?Register_R13_is_global_regvar
\ 00000000 94E8 CLT
\ 00000002 F8D2 BLD R13, 2
60 }
\ 00000004 9508 RET
\ 00000006 REQUIRE BUTTON_B
\ In segment CODE, align 2, keep-with-next
61 void BUTTON_11_ON(void)
\ BUTTON_11_ON:
62 {BUTTON_B.Bit3=0;
\ 00000000 REQUIRE ?Register_R13_is_global_regvar
\ 00000000 94E8 CLT
\ 00000002 F8D3 BLD R13, 3
63 }
\ 00000004 9508 RET
\ 00000006 REQUIRE BUTTON_B
\ In segment CODE, align 2, keep-with-next
64 void BUTTON_12_ON(void)
\ BUTTON_12_ON:
65 {BUTTON_B.Bit4=0;
\ 00000000 REQUIRE ?Register_R13_is_global_regvar
\ 00000000 94E8 CLT
\ 00000002 F8D4 BLD R13, 4
66 }
\ 00000004 9508 RET
\ 00000006 REQUIRE BUTTON_B
\ In segment CODE, align 2, keep-with-next
67 void BUTTON_13_ON(void)
\ BUTTON_13_ON:
68 {BUTTON_B.Bit5=0;
\ 00000000 REQUIRE ?Register_R13_is_global_regvar
\ 00000000 94E8 CLT
\ 00000002 F8D5 BLD R13, 5
69 }
\ 00000004 9508 RET
\ 00000006 REQUIRE BUTTON_B
\ In segment CODE, align 2, keep-with-next
70 void BUTTON_14_ON(void)
\ BUTTON_14_ON:
71 {BUTTON_B.Bit6=0;
\ 00000000 REQUIRE ?Register_R13_is_global_regvar
\ 00000000 94E8 CLT
\ 00000002 F8D6 BLD R13, 6
72 }
\ 00000004 9508 RET
\ 00000006 REQUIRE BUTTON_B
\ In segment CODE, align 2, keep-with-next
73 void BUTTON_15_ON(void)
\ BUTTON_15_ON:
74 {BUTTON_B.Bit7=0;
\ 00000000 REQUIRE ?Register_R13_is_global_regvar
\ 00000000 94E8 CLT
\ 00000002 F8D7 BLD R13, 7
75 }
\ 00000004 9508 RET
\ 00000006 REQUIRE BUTTON_B
76
\ In segment CODE, align 2, keep-with-next
77 void BUTTON_16_ON(void)
\ BUTTON_16_ON:
78 {BUTTON_C.Bit0=0;
\ 00000000 REQUIRE ?Register_R14_is_global_regvar
\ 00000000 94E8 CLT
\ 00000002 F8E0 BLD R14, 0
79 }
\ 00000004 9508 RET
\ 00000006 REQUIRE BUTTON_C
\ In segment CODE, align 2, keep-with-next
80 void BUTTON_17_ON(void)
\ BUTTON_17_ON:
81 {BUTTON_C.Bit1=0;
\ 00000000 REQUIRE ?Register_R14_is_global_regvar
\ 00000000 94E8 CLT
\ 00000002 F8E1 BLD R14, 1
82 }
\ 00000004 9508 RET
\ 00000006 REQUIRE BUTTON_C
\ In segment CODE, align 2, keep-with-next
83 void BUTTON_18_ON(void)
\ BUTTON_18_ON:
84 {BUTTON_C.Bit2=0;
\ 00000000 REQUIRE ?Register_R14_is_global_regvar
\ 00000000 94E8 CLT
\ 00000002 F8E2 BLD R14, 2
85 }
\ 00000004 9508 RET
\ 00000006 REQUIRE BUTTON_C
\ In segment CODE, align 2, keep-with-next
86 void BUTTON_19_ON(void)
\ BUTTON_19_ON:
87 {BUTTON_C.Bit3=0;
\ 00000000 REQUIRE ?Register_R14_is_global_regvar
\ 00000000 94E8 CLT
\ 00000002 F8E3 BLD R14, 3
88 }
\ 00000004 9508 RET
\ 00000006 REQUIRE BUTTON_C
\ In segment CODE, align 2, keep-with-next
89 void BUTTON_20_ON(void)
\ BUTTON_20_ON:
90 {BUTTON_C.Bit4=0;
\ 00000000 REQUIRE ?Register_R14_is_global_regvar
\ 00000000 94E8 CLT
\ 00000002 F8E4 BLD R14, 4
91 }
\ 00000004 9508 RET
\ 00000006 REQUIRE BUTTON_C
\ In segment CODE, align 2, keep-with-next
92 void BUTTON_21_ON(void)
\ BUTTON_21_ON:
93 {BUTTON_C.Bit5=0;
\ 00000000 REQUIRE ?Register_R14_is_global_regvar
\ 00000000 94E8 CLT
\ 00000002 F8E5 BLD R14, 5
94 }
\ 00000004 9508 RET
\ 00000006 REQUIRE BUTTON_C
\ In segment CODE, align 2, keep-with-next
95 void BUTTON_22_ON(void)
\ BUTTON_22_ON:
96 {BUTTON_C.Bit6=0;
\ 00000000 REQUIRE ?Register_R14_is_global_regvar
\ 00000000 94E8 CLT
\ 00000002 F8E6 BLD R14, 6
97 }
\ 00000004 9508 RET
\ 00000006 REQUIRE BUTTON_C
\ In segment CODE, align 2, keep-with-next
98 void BUTTON_23_ON(void)
\ BUTTON_23_ON:
99 {BUTTON_C.Bit7=0;
\ 00000000 REQUIRE ?Register_R14_is_global_regvar
\ 00000000 94E8 CLT
\ 00000002 F8E7 BLD R14, 7
100 }
\ 00000004 9508 RET
\ 00000006 REQUIRE BUTTON_C
101
\ In segment CODE, align 2, keep-with-next
102 void BUTTON_24_ON(void)
\ BUTTON_24_ON:
103 {BUTTON_D.Bit0=0;
\ 00000000 REQUIRE ?Register_R15_is_global_regvar
\ 00000000 94E8 CLT
\ 00000002 F8F0 BLD R15, 0
104 }
\ 00000004 9508 RET
\ 00000006 REQUIRE BUTTON_D
\ In segment CODE, align 2, keep-with-next
105 void BUTTON_25_ON(void)
\ BUTTON_25_ON:
106 {BUTTON_D.Bit1=0;
\ 00000000 REQUIRE ?Register_R15_is_global_regvar
\ 00000000 94E8 CLT
\ 00000002 F8F1 BLD R15, 1
107 }
\ 00000004 9508 RET
\ 00000006 REQUIRE BUTTON_D
\ In segment CODE, align 2, keep-with-next
108 void BUTTON_26_ON(void)
\ BUTTON_26_ON:
109 {BUTTON_D.Bit2=0;
\ 00000000 REQUIRE ?Register_R15_is_global_regvar
\ 00000000 94E8 CLT
\ 00000002 F8F2 BLD R15, 2
110 }
\ 00000004 9508 RET
\ 00000006 REQUIRE BUTTON_D
\ In segment CODE, align 2, keep-with-next
111 void BUTTON_27_ON(void)
\ BUTTON_27_ON:
112 {BUTTON_D.Bit3=0;
\ 00000000 REQUIRE ?Register_R15_is_global_regvar
\ 00000000 94E8 CLT
\ 00000002 F8F3 BLD R15, 3
113 }
\ 00000004 9508 RET
\ 00000006 REQUIRE BUTTON_D
\ In segment CODE, align 2, keep-with-next
114 void BUTTON_28_ON(void)
\ BUTTON_28_ON:
115 {BUTTON_D.Bit4=0;
\ 00000000 REQUIRE ?Register_R15_is_global_regvar
\ 00000000 94E8 CLT
\ 00000002 F8F4 BLD R15, 4
116 }
\ 00000004 9508 RET
\ 00000006 REQUIRE BUTTON_D
\ In segment CODE, align 2, keep-with-next
117 void BUTTON_29_ON(void)
\ BUTTON_29_ON:
118 {BUTTON_D.Bit5=0;
\ 00000000 REQUIRE ?Register_R15_is_global_regvar
\ 00000000 94E8 CLT
\ 00000002 F8F5 BLD R15, 5
119 }
\ 00000004 9508 RET
\ 00000006 REQUIRE BUTTON_D
\ In segment CODE, align 2, keep-with-next
120 void BUTTON_30_ON(void)
\ BUTTON_30_ON:
121 {BUTTON_D.Bit6=0;
\ 00000000 REQUIRE ?Register_R15_is_global_regvar
\ 00000000 94E8 CLT
\ 00000002 F8F6 BLD R15, 6
122 }
\ 00000004 9508 RET
\ 00000006 REQUIRE BUTTON_D
\ In segment CODE, align 2, keep-with-next
123 void BUTTON_31_ON(void)
\ BUTTON_31_ON:
124 {BUTTON_D.Bit7=0;
\ 00000000 REQUIRE ?Register_R15_is_global_regvar
\ 00000000 94E8 CLT
\ 00000002 F8F7 BLD R15, 7
125 }
\ 00000004 9508 RET
\ 00000006 REQUIRE BUTTON_D
126
\ In segment CODE, align 2, keep-with-next
127 void main(void)
\ main:
128 {
\ 00000000 REQUIRE ?Register_R12_is_global_regvar
\ 00000000 REQUIRE ?Register_R13_is_global_regvar
\ 00000000 REQUIRE ?Register_R14_is_global_regvar
\ 00000000 REQUIRE ?Register_R15_is_global_regvar
129 while(1)
130 {
131 if (BUTTON_A.Bit0) BUTTON_0_ON();
\ ??main_0:
\ 00000000 FAC0 BST R12, 0
\ 00000002 F40E BRTC ??main_1
\ 00000004 .... RCALL BUTTON_0_ON
132 if (BUTTON_A.Bit1) BUTTON_1_ON();
\ ??main_1:
\ 00000006 FAC1 BST R12, 1
\ 00000008 F40E BRTC ??main_2
\ 0000000A .... RCALL BUTTON_1_ON
133 if (BUTTON_A.Bit2) BUTTON_2_ON();
\ ??main_2:
\ 0000000C FAC2 BST R12, 2
\ 0000000E F40E BRTC ??main_3
\ 00000010 .... RCALL BUTTON_2_ON
134 if (BUTTON_A.Bit3) BUTTON_3_ON();
\ ??main_3:
\ 00000012 FAC3 BST R12, 3
\ 00000014 F40E BRTC ??main_4
\ 00000016 .... RCALL BUTTON_3_ON
135 if (BUTTON_A.Bit4) BUTTON_4_ON();
\ ??main_4:
\ 00000018 FAC4 BST R12, 4
\ 0000001A F40E BRTC ??main_5
\ 0000001C .... RCALL BUTTON_4_ON
136 if (BUTTON_A.Bit5) BUTTON_5_ON();
\ ??main_5:
\ 0000001E FAC5 BST R12, 5
\ 00000020 F40E BRTC ??main_6
\ 00000022 .... RCALL BUTTON_5_ON
137 if (BUTTON_A.Bit6) BUTTON_6_ON();
\ ??main_6:
\ 00000024 FAC6 BST R12, 6
\ 00000026 F40E BRTC ??main_7
\ 00000028 .... RCALL BUTTON_6_ON
138 if (BUTTON_A.Bit7) BUTTON_7_ON();
\ ??main_7:
\ 0000002A FAC7 BST R12, 7
\ 0000002C F40E BRTC ??main_8
\ 0000002E .... RCALL BUTTON_7_ON
139
140 if (BUTTON_B.Bit0) BUTTON_8_ON();
\ ??main_8:
\ 00000030 FAD0 BST R13, 0
\ 00000032 F40E BRTC ??main_9
\ 00000034 .... RCALL BUTTON_8_ON
141 if (BUTTON_B.Bit1) BUTTON_9_ON();
\ ??main_9:
\ 00000036 FAD1 BST R13, 1
\ 00000038 F40E BRTC ??main_10
\ 0000003A .... RCALL BUTTON_9_ON
142 if (BUTTON_B.Bit2) BUTTON_10_ON();
\ ??main_10:
\ 0000003C FAD2 BST R13, 2
\ 0000003E F40E BRTC ??main_11
\ 00000040 .... RCALL BUTTON_10_ON
143 if (BUTTON_B.Bit3) BUTTON_11_ON();
\ ??main_11:
\ 00000042 FAD3 BST R13, 3
\ 00000044 F40E BRTC ??main_12
\ 00000046 .... RCALL BUTTON_11_ON
144 if (BUTTON_B.Bit4) BUTTON_12_ON();
\ ??main_12:
\ 00000048 FAD4 BST R13, 4
\ 0000004A F40E BRTC ??main_13
\ 0000004C .... RCALL BUTTON_12_ON
145 if (BUTTON_B.Bit5) BUTTON_13_ON();
\ ??main_13:
\ 0000004E FAD5 BST R13, 5
\ 00000050 F40E BRTC ??main_14
\ 00000052 .... RCALL BUTTON_13_ON
146 if (BUTTON_B.Bit6) BUTTON_14_ON();
\ ??main_14:
\ 00000054 FAD6 BST R13, 6
\ 00000056 F40E BRTC ??main_15
\ 00000058 .... RCALL BUTTON_14_ON
147 if (BUTTON_B.Bit7) BUTTON_15_ON();
\ ??main_15:
\ 0000005A FAD7 BST R13, 7
\ 0000005C F40E BRTC ??main_16
\ 0000005E .... RCALL BUTTON_15_ON
148
149 if (BUTTON_C.Bit0) BUTTON_16_ON();
\ ??main_16:
\ 00000060 FAE0 BST R14, 0
\ 00000062 F40E BRTC ??main_17
\ 00000064 .... RCALL BUTTON_16_ON
150 if (BUTTON_C.Bit1) BUTTON_17_ON();
\ ??main_17:
\ 00000066 FAE1 BST R14, 1
\ 00000068 F40E BRTC ??main_18
\ 0000006A .... RCALL BUTTON_17_ON
151 if (BUTTON_C.Bit2) BUTTON_18_ON();
\ ??main_18:
\ 0000006C FAE2 BST R14, 2
\ 0000006E F40E BRTC ??main_19
\ 00000070 .... RCALL BUTTON_18_ON
152 if (BUTTON_C.Bit3) BUTTON_19_ON();
\ ??main_19:
\ 00000072 FAE3 BST R14, 3
\ 00000074 F40E BRTC ??main_20
\ 00000076 .... RCALL BUTTON_19_ON
153 if (BUTTON_C.Bit4) BUTTON_20_ON();
\ ??main_20:
\ 00000078 FAE4 BST R14, 4
\ 0000007A F40E BRTC ??main_21
\ 0000007C .... RCALL BUTTON_20_ON
154 if (BUTTON_C.Bit5) BUTTON_21_ON();
\ ??main_21:
\ 0000007E FAE5 BST R14, 5
\ 00000080 F40E BRTC ??main_22
\ 00000082 .... RCALL BUTTON_21_ON
155 if (BUTTON_C.Bit6) BUTTON_22_ON();
\ ??main_22:
\ 00000084 FAE6 BST R14, 6
\ 00000086 F40E BRTC ??main_23
\ 00000088 .... RCALL BUTTON_22_ON
156 if (BUTTON_C.Bit7) BUTTON_23_ON();
\ ??main_23:
\ 0000008A FAE7 BST R14, 7
\ 0000008C F40E BRTC ??main_24
\ 0000008E .... RCALL BUTTON_23_ON
157
158 if (BUTTON_D.Bit0) BUTTON_24_ON();
\ ??main_24:
\ 00000090 FAF0 BST R15, 0
\ 00000092 F40E BRTC ??main_25
\ 00000094 .... RCALL BUTTON_24_ON
159 if (BUTTON_D.Bit1) BUTTON_25_ON();
\ ??main_25:
\ 00000096 FAF1 BST R15, 1
\ 00000098 F40E BRTC ??main_26
\ 0000009A .... RCALL BUTTON_25_ON
160 if (BUTTON_D.Bit2) BUTTON_26_ON();
\ ??main_26:
\ 0000009C FAF2 BST R15, 2
\ 0000009E F40E BRTC ??main_27
\ 000000A0 .... RCALL BUTTON_26_ON
161 if (BUTTON_D.Bit3) BUTTON_27_ON();
\ ??main_27:
\ 000000A2 FAF3 BST R15, 3
\ 000000A4 F40E BRTC ??main_28
\ 000000A6 .... RCALL BUTTON_27_ON
162 if (BUTTON_D.Bit4) BUTTON_28_ON();
\ ??main_28:
\ 000000A8 FAF4 BST R15, 4
\ 000000AA F40E BRTC ??main_29
\ 000000AC .... RCALL BUTTON_28_ON
163 if (BUTTON_D.Bit5) BUTTON_29_ON();
\ ??main_29:
\ 000000AE FAF5 BST R15, 5
\ 000000B0 F40E BRTC ??main_30
\ 000000B2 .... RCALL BUTTON_29_ON
164 if (BUTTON_D.Bit6) BUTTON_30_ON();
\ ??main_30:
\ 000000B4 FAF6 BST R15, 6
\ 000000B6 F40E BRTC ??main_31
\ 000000B8 .... RCALL BUTTON_30_ON
165 if (BUTTON_D.Bit7) BUTTON_31_ON();
\ ??main_31:
\ 000000BA FAF7 BST R15, 7
\ 000000BC F00E BRTS $+2+2
\ 000000BE CFA0 RJMP ??main_0
\ 000000C0 .... RCALL BUTTON_31_ON
\ 000000C2 CF9E RJMP ??main_0
\ 000000C4 REQUIRE BUTTON_A
\ 000000C4 REQUIRE BUTTON_B
\ 000000C4 REQUIRE BUTTON_C
\ 000000C4 REQUIRE BUTTON_D
166
167 }
168 }
Maximum stack usage in bytes:
Function CSTACK RSTACK
-------- ------ ------
BUTTON_0_ON 0 2
BUTTON_10_ON 0 2
BUTTON_11_ON 0 2
BUTTON_12_ON 0 2
BUTTON_13_ON 0 2
BUTTON_14_ON 0 2
BUTTON_15_ON 0 2
BUTTON_16_ON 0 2
BUTTON_17_ON 0 2
BUTTON_18_ON 0 2
BUTTON_19_ON 0 2
BUTTON_1_ON 0 2
BUTTON_20_ON 0 2
BUTTON_21_ON 0 2
BUTTON_22_ON 0 2
BUTTON_23_ON 0 2
BUTTON_24_ON 0 2
BUTTON_25_ON 0 2
BUTTON_26_ON 0 2
BUTTON_27_ON 0 2
BUTTON_28_ON 0 2
BUTTON_29_ON 0 2
BUTTON_2_ON 0 2
BUTTON_30_ON 0 2
BUTTON_31_ON 0 2
BUTTON_3_ON 0 2
BUTTON_4_ON 0 2
BUTTON_5_ON 0 2
BUTTON_6_ON 0 2
BUTTON_7_ON 0 2
BUTTON_8_ON 0 2
BUTTON_9_ON 0 2
main 0 2
-> BUTTON_0_ON 0 2
-> BUTTON_1_ON 0 2
-> BUTTON_2_ON 0 2
-> BUTTON_3_ON 0 2
-> BUTTON_4_ON 0 2
-> BUTTON_5_ON 0 2
-> BUTTON_6_ON 0 2
-> BUTTON_7_ON 0 2
-> BUTTON_8_ON 0 2
-> BUTTON_9_ON 0 2
-> BUTTON_10_ON 0 2
-> BUTTON_11_ON 0 2
-> BUTTON_12_ON 0 2
-> BUTTON_13_ON 0 2
-> BUTTON_14_ON 0 2
-> BUTTON_15_ON 0 2
-> BUTTON_16_ON 0 2
-> BUTTON_17_ON 0 2
-> BUTTON_18_ON 0 2
-> BUTTON_19_ON 0 2
-> BUTTON_20_ON 0 2
-> BUTTON_21_ON 0 2
-> BUTTON_22_ON 0 2
-> BUTTON_23_ON 0 2
-> BUTTON_24_ON 0 2
-> BUTTON_25_ON 0 2
-> BUTTON_26_ON 0 2
-> BUTTON_27_ON 0 2
-> BUTTON_28_ON 0 2
-> BUTTON_29_ON 0 2
-> BUTTON_30_ON 0 2
-> BUTTON_31_ON 0 2
Segment part sizes:
Function/Label Bytes
-------------- -----
BUTTON_A 1
BUTTON_B 1
BUTTON_C 1
BUTTON_D 1
BUTTON_0_ON 6
BUTTON_1_ON 6
BUTTON_2_ON 6
BUTTON_3_ON 6
BUTTON_4_ON 6
BUTTON_5_ON 6
BUTTON_6_ON 6
BUTTON_7_ON 6
BUTTON_8_ON 6
BUTTON_9_ON 6
BUTTON_10_ON 6
BUTTON_11_ON 6
BUTTON_12_ON 6
BUTTON_13_ON 6
BUTTON_14_ON 6
BUTTON_15_ON 6
BUTTON_16_ON 6
BUTTON_17_ON 6
BUTTON_18_ON 6
BUTTON_19_ON 6
BUTTON_20_ON 6
BUTTON_21_ON 6
BUTTON_22_ON 6
BUTTON_23_ON 6
BUTTON_24_ON 6
BUTTON_25_ON 6
BUTTON_26_ON 6
BUTTON_27_ON 6
BUTTON_28_ON 6
BUTTON_29_ON 6
BUTTON_30_ON 6
BUTTON_31_ON 6
??main_0 196
388 bytes in segment CODE
4 bytes in segment REGVAR_AN
388 bytes of CODE memory
0 bytes of DATA memory (+ 4 bytes shared)
Errors: none
Warnings: none |
|