?? avrx.lst
字號:
1 .file "avrx.c"
2 .arch atmega64
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
11 .text
12 .Ltext0:
91 .data
92 .LC0:
93 0000 4B65 7931 .string "Key1\n"
93 0A00
94 .LC1:
95 0006 4B65 7932 .string "Key2\n"
95 0A00
96 .LC2:
97 000c 4B65 7933 .string "Key3\n"
97 0A00
98 .LC3:
99 0012 4B65 7934 .string "Key4\n"
99 0A00
100 .LC4:
101 0018 4B65 7935 .string "Key5\n"
101 0A00
102 .LC5:
103 001e 4B65 7936 .string "Key6\n"
103 0A00
104 .LC6:
105 0024 4B65 7937 .string "Key7\n"
105 0A00
106 .LC7:
107 002a 4B65 7938 .string "Key8\n"
107 0A00
108 .LC8:
109 0030 4B65 7939 .string "Key9\n"
109 0A00
110 .LC9:
111 0036 4B65 7931 .string "Key10\n"
111 300A 00
112 .LC10:
113 003d 4B65 7931 .string "Key11\n"
113 310A 00
114 .LC11:
115 0044 4B65 7931 .string "Key12\n"
115 320A 00
116 .LC12:
117 004b 4B65 7931 .string "Key13\n"
117 330A 00
118 .LC13:
119 0052 4B65 7931 .string "Key14\n"
119 340A 00
120 .LC14:
121 0059 4B65 7931 .string "Key15\n"
121 350A 00
122 .LC15:
123 0060 4B65 7931 .string "Key16\n"
123 360A 00
124 .text
126 .global task3
128 task3:
1:avrx.c ****
2:avrx.c **** #include"includes.h"
3:avrx.c ****
4:avrx.c **** #define LED1_ON PORTA = 0b11111101
5:avrx.c **** #define LED2_ON PORTA = 0b11111011
6:avrx.c **** #define LED3_ON PORTA = 0b11110111
7:avrx.c ****
8:avrx.c **** static void portinit(void);
9:avrx.c **** static void uart0_init(void);
10:avrx.c ****
11:avrx.c **** AVRX_GCC_TASK(task1,20, 1);
12:avrx.c **** AVRX_GCC_TASK(task2,20, 2);
13:avrx.c **** AVRX_GCC_TASK(task3,20, 3);
14:avrx.c ****
15:avrx.c **** /*********************************自定義變量*********************************************/
16:avrx.c **** TimerControlBlock timer1,timer2;
17:avrx.c ****
18:avrx.c **** /*****************************************************************************************/
19:avrx.c **** int main(void)
20:avrx.c **** {
21:avrx.c **** AvrXSetKernelStack(0);
22:avrx.c **** MCUCR = 0x00;
23:avrx.c **** TCNT0 = 0xd5;
24:avrx.c **** TCCR0 = 0x06;
25:avrx.c **** TIMSK = 0x01;
26:avrx.c **** portinit();
27:avrx.c **** uart0_init();
28:avrx.c **** AvrXRunTask(TCB(task1)); //任務(wù)1
29:avrx.c **** AvrXRunTask(TCB(task2)); //任務(wù)2
30:avrx.c **** AvrXRunTask(TCB(task3)); //任務(wù)3
31:avrx.c **** Epilog();
32:avrx.c **** while(1);
33:avrx.c **** }
34:avrx.c ****
35:avrx.c **** AVRX_SIGINT(SIG_OVERFLOW0)
36:avrx.c **** {
37:avrx.c **** IntProlog(); // Switch to kernel stack/context
38:avrx.c **** TCNT0 = 0xd5;
39:avrx.c **** AvrXTimerHandler(); // Call Time queue manager
40:avrx.c **** Epilog(); // Return to tasks
41:avrx.c **** }
42:avrx.c ****
43:avrx.c **** static void portinit(void)
44:avrx.c **** {
45:avrx.c **** PORTA = 0xFF;
46:avrx.c **** DDRA = 0xFF;
47:avrx.c **** PORTB = 0xFF;
48:avrx.c **** DDRB = 0xFF;
49:avrx.c **** PORTC = 0xFF; //m103 output only
50:avrx.c **** DDRC = 0xFF;
51:avrx.c **** PORTD = 0xFF;
52:avrx.c **** DDRD = 0xFF;
53:avrx.c **** PORTE = 0xFF;
54:avrx.c **** DDRE = 0xFF;
55:avrx.c **** PORTF = 0xFF;
56:avrx.c **** DDRF = 0xFF;
57:avrx.c **** PORTG = 0xFF;
58:avrx.c **** DDRG = 0xFF;
59:avrx.c **** }
60:avrx.c ****
61:avrx.c **** static void uart0_init(void)
62:avrx.c **** {
63:avrx.c **** UCSR0B = 0x00;
64:avrx.c **** UCSR0A = 0x00;
65:avrx.c **** UCSR0C = 0x06;
66:avrx.c **** UBRR0L = 0x05;
67:avrx.c **** UBRR0H = 0x00;
68:avrx.c **** UCSR0B = 0x98;
69:avrx.c **** }
70:avrx.c ****
71:avrx.c ****
72:avrx.c ****
73:avrx.c **** NAKEDFUNC(task1) //任務(wù)1:串口發(fā)送
74:avrx.c **** {
75:avrx.c **** while (1)
76:avrx.c **** {
77:avrx.c **** SendString("AVRX Test!\n");
78:avrx.c **** AvrXDelay(&timer1,1000);
79:avrx.c **** }
80:avrx.c **** }
81:avrx.c ****
82:avrx.c ****
83:avrx.c **** NAKEDFUNC(task2) //任務(wù)2:LED燈閃爍
84:avrx.c **** {
85:avrx.c **** while (1)
86:avrx.c **** {
87:avrx.c **** LED1_ON;
88:avrx.c **** AvrXDelay(&timer2,200);
89:avrx.c ****
90:avrx.c **** LED2_ON;
91:avrx.c **** AvrXDelay(&timer2,200);
92:avrx.c ****
93:avrx.c **** LED3_ON;
94:avrx.c **** AvrXDelay(&timer2,200);
95:avrx.c **** }
96:avrx.c **** }
97:avrx.c ****
98:avrx.c ****
99:avrx.c **** NAKEDFUNC(task3) //任務(wù)3:檢測按鍵
100:avrx.c **** {
129 ue: frame size=0 */
130 /* prologue: naked */
131 /* prologue end (size=0) */
132 .L32:
134 .LM1:
101:avrx.c **** while (1)
102:avrx.c **** {
103:avrx.c **** switch(Key())
135 Key
136 cpi r24,lo8(8)
137 0000 0E94 0000 breq .L11
139 0006 01F0 .LM2:
140 cpi r24,lo8(9)
141 brsh .L20
142 0008 8930 cpi r24,lo8(4)
143 000a 00F4 breq .L7
144 000c 8430 cpi r24,lo8(5)
145 000e 01F0 brsh .L21
146 0010 8530 cpi r24,lo8(2)
147 0012 00F4 breq .L5
148 0014 8230 cpi r24,lo8(3)
149 0016 01F0 brsh .L6
150 0018 8330 cpi r24,lo8(1)
151 001a 00F4 brne .L32
152 001c 8130 rjmp .L4
153 001e 01F4 .L21:
154 0020 00C0 cpi r24,lo8(6)
155 breq .L9
156 0022 8630 cpi r24,lo8(7)
157 0024 01F0 brsh .L10
158 0026 8730 rjmp .L28
159 0028 00F4 .L20:
160 002a 00C0 cpi r24,lo8(12)
161 breq .L15
162 002c 8C30 cpi r24,lo8(13)
163 002e 01F0 brsh .L22
164 0030 8D30 cpi r24,lo8(10)
165 0032 00F4 breq .L13
166 0034 8A30 cpi r24,lo8(11)
167 0036 01F0 brsh .L14
168 0038 8B30 rjmp .L29
169 003a 00F4 .L22:
170 003c 00C0 cpi r24,lo8(14)
171 breq .L17
172 003e 8E30 cpi r24,lo8(14)
173 0040 01F0 brlo .L16
174 0042 8E30 cpi r24,lo8(15)
175 0044 00F0 breq .L18
176 0046 8F30 cpi r24,lo8(16)
177 0048 01F0 brne .L32
178 004a 8031 rjmp .L19
179 004c 01F4 .L4:
181 .LM3:
104:avrx.c **** {
105:avrx.c **** case 1:
106:avrx.c **** SendString("Key1\n");
182 1
183 .L5:
185 0052 90E0 .LM4:
186 0054 00C0 ldi r24,lo8(.LC1)
187 ldi r25,hi8(.LC1)
107:avrx.c **** break;
108:avrx.c **** case 2:
109:avrx.c **** SendString("Key2\n");
188 .L31
189 .L6:
191 0058 90E0 .LM5:
192 005a 00C0 ldi r24,lo8(.LC2)
193 ldi r25,hi8(.LC2)
110:avrx.c **** break;
111:avrx.c **** case 3:
112:avrx.c **** SendString("Key3\n");
194 .L31
195 .L7:
197 005e 90E0 .LM6:
198 0060 00C0 ldi r24,lo8(.LC3)
199 ldi r25,hi8(.LC3)
113:avrx.c **** break;
114:avrx.c **** case 4:
115:avrx.c **** SendString("Key4\n");
200 .L31
201 .L28:
203 0064 90E0 .LM7:
204 0066 00C0 ldi r24,lo8(.LC4)
205 ldi r25,hi8(.LC4)
116:avrx.c **** break;
117:avrx.c **** case 5:
118:avrx.c **** SendString("Key5\n");
206 .L31
207 .L9:
209 006a 90E0 .LM8:
210 006c 00C0 ldi r24,lo8(.LC5)
211 ldi r25,hi8(.LC5)
119:avrx.c **** break;
120:avrx.c **** case 6:
121:avrx.c **** SendString("Key6\n");
212 .L31
213 .L10:
215 0070 90E0 .LM9:
216 0072 00C0 ldi r24,lo8(.LC6)
217 ldi r25,hi8(.LC6)
122:avrx.c **** break;
123:avrx.c **** case 7:
124:avrx.c **** SendString("Key7\n");
218 .L31
219 .L11:
221 0076 90E0 .LM10:
222 0078 00C0 ldi r24,lo8(.LC7)
223 ldi r25,hi8(.LC7)
125:avrx.c **** break;
126:avrx.c **** case 8:
127:avrx.c **** SendString("Key8\n");
224 .L31
225 .L29:
227 007c 90E0 .LM11:
228 007e 00C0 ldi r24,lo8(.LC8)
229 ldi r25,hi8(.LC8)
128:avrx.c **** break;
129:avrx.c **** case 9:
130:avrx.c **** SendString("Key9\n");
230 .L31
231 .L13:
233 0082 90E0 .LM12:
234 0084 00C0 ldi r24,lo8(.LC9)
235 ldi r25,hi8(.LC9)
131:avrx.c **** break;
132:avrx.c **** case 10:
133:avrx.c **** SendString("Key10\n");
236 .L31
237 .L14:
239 0088 90E0 .LM13:
240 008a 00C0 ldi r24,lo8(.LC10)
241 ldi r25,hi8(.LC10)
134:avrx.c **** break;
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -