Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
foo.c:
#include
#define F_CPU 8000000
#include int mas[22]; // ¤Єю ўЄюс√ startup ръЄштшЁютрЄ№
int counter;
int main( void )
{
unsigned char led;
PORTB = 0xFF; // Give PORTB and the User LEDs an initial startvalue
led = 1; // Start with LED0
DDRB = 0xFF; // Set PORTB as output
while(1) // Eternal loop
{
counter++;
mas[2]=counter;
PORTB = ~led; // Invert the output since a zero means: LED on
led <<= 1; // Move to next LED by performing a rotate left
if (!led)
led = 1; // If overflow: start with LED0 again
//__delay_cycles(500000); // Wait for 500 000 cycles
// _delay_loop_2 у avr-gcc берёт только 16 бит на входе
for( uint8_t i = 8; --i; ) _delay_loop_2(65535);
}
}
make
======== Beginning of foo processing
avr-gcc.exe (GCC) 4.1.2 (WinAVR 20070525)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.==== Compiling foo.c
==== Link to foo.elf
==== extract foo.hex
======== All OK, project size:
AVR Memory Usage
----------------
Device: attiny45
Program: 130 bytes (3.2% Full)
(.text + .data + .bootloader)
Data: 46 bytes (18.0% Full)
(.data + .bss + .noinit)
foo.dump:
../../exe/foo.elf: file format elf32-avrDisassembly of section .text:
00000000 <__vectors>:
0: 0e c0 rjmp .+28 ; 0x1e <__ctors_end>
2: 29 c0 rjmp .+82 ; 0x56 <__bad_interrupt>
4: 28 c0 rjmp .+80 ; 0x56 <__bad_interrupt>
6: 27 c0 rjmp .+78 ; 0x56 <__bad_interrupt>
8: 26 c0 rjmp .+76 ; 0x56 <__bad_interrupt>
a: 25 c0 rjmp .+74 ; 0x56 <__bad_interrupt>
c: 24 c0 rjmp .+72 ; 0x56 <__bad_interrupt>
e: 23 c0 rjmp .+70 ; 0x56 <__bad_interrupt>
10: 22 c0 rjmp .+68 ; 0x56 <__bad_interrupt>
12: 21 c0 rjmp .+66 ; 0x56 <__bad_interrupt>
14: 20 c0 rjmp .+64 ; 0x56 <__bad_interrupt>
16: 1f c0 rjmp .+62 ; 0x56 <__bad_interrupt>
18: 1e c0 rjmp .+60 ; 0x56 <__bad_interrupt>
1a: 1d c0 rjmp .+58 ; 0x56 <__bad_interrupt>
1c: 1c c0 rjmp .+56 ; 0x56 <__bad_interrupt>
0000001e <__ctors_end>:
1e: 11 24 eor r1, r1
20: 1f be out 0x3f, r1 ; 63
22: cf e5 ldi r28, 0x5F ; 95
24: d1 e0 ldi r29, 0x01 ; 1
26: de bf out 0x3e, r29 ; 62
28: cd bf out 0x3d, r28 ; 61
0000002a <__do_copy_data>:
2a: 10 e0 ldi r17, 0x00 ; 0
2c: a0 e6 ldi r26, 0x60 ; 96
2e: b0 e0 ldi r27, 0x00 ; 0
30: e2 e8 ldi r30, 0x82 ; 130
32: f0 e0 ldi r31, 0x00 ; 0
34: 03 c0 rjmp .+6 ; 0x3c <.do_copy_data_start>
00000036 <.do_copy_data_loop>:
36: c8 95 lpm
38: 31 96 adiw r30, 0x01 ; 1
3a: 0d 92 st X+, r0
0000003c <.do_copy_data_start>:
3c: a0 36 cpi r26, 0x60 ; 96
3e: b1 07 cpc r27, r17
40: d1 f7 brne .-12 ; 0x36 <.do_copy_data_loop>
00000042 <__do_clear_bss>:
42: 10 e0 ldi r17, 0x00 ; 0
44: a0 e6 ldi r26, 0x60 ; 96
46: b0 e0 ldi r27, 0x00 ; 0
48: 01 c0 rjmp .+2 ; 0x4c <.do_clear_bss_start>
0000004a <.do_clear_bss_loop>:
4a: 1d 92 st X+, r1
0000004c <.do_clear_bss_start>:
4c: ae 38 cpi r26, 0x8E ; 142
4e: b1 07 cpc r27, r17
50: e1 f7 brne .-8 ; 0x4a <.do_clear_bss_loop>
52: 02 d0 rcall .+4 ; 0x58
54: 15 c0 rjmp .+42 ; 0x80 <_exit>00000056 <__bad_interrupt>:
56: d4 cf rjmp .-88 ; 0x0 <__vectors>
00000058 :
int mas[22]; // ¤Єю ўЄюс√ startup ръЄштшЁютрЄ№
int counter;int main( void )
{
58: 8f ef ldi r24, 0xFF ; 255
5a: 88 bb out 0x18, r24 ; 24
unsigned char led;
PORTB = 0xFF; // Give PORTB and the User LEDs an initial startvalue
led = 1; // Start with LED0
DDRB = 0xFF; // Set PORTB as output
5c: 87 bb out 0x17, r24 ; 23
5e: 31 e0 ldi r19, 0x01 ; 1
while(1) // Eternal loop
{
counter++;
mas[2]=counter;
PORTB = ~led; // Invert the output since a zero means: LED on
60: 83 2f mov r24, r19
62: 80 95 com r24
64: 88 bb out 0x18, r24 ; 24
led <<= 1; // Move to next LED by performing a rotate left
66: 33 0f add r19, r19
if (!led)
68: 09 f4 brne .+2 ; 0x6c
6a: 31 e0 ldi r19, 0x01 ; 1
6c: 27 e0 ldi r18, 0x07 ; 7
6e: ef ef ldi r30, 0xFF ; 255
70: ff ef ldi r31, 0xFF ; 255
*/
void
_delay_loop_2(uint16_t __count)
{
__asm__ volatile (
72: 8e 2f mov r24, r30
74: 9f 2f mov r25, r31
76: 01 97 sbiw r24, 0x01 ; 1
78: f1 f7 brne .-4 ; 0x76
led = 1; // If overflow: start with LED0 again //__delay_cycles(500000); // Wait for 500 000 cycles
// _delay_loop_2 у avr-gcc берёт только 16 бит на входе
for( uint8_t i = 8; --i; ) _delay_loop_2(65535);
7a: 21 50 subi r18, 0x01 ; 1
7c: d1 f7 brne .-12 ; 0x72
7e: f0 cf rjmp .-32 ; 0x60 00000080 <_exit>:
80: ff cf rjmp .-2 ; 0x80 <_exit>
Составить ответ | Вернуться на конференцию
Ответы