Files
2023-03-13 09:01:12 +00:00

202 lines
8.3 KiB
Plaintext

1 .file "main.c"
2 __SP_L__ = 0x3d
3 __SREG__ = 0x3f
4 __tmp_reg__ = 0
5 __zero_reg__ = 1
6 .text
7 .Ltext0:
8 .cfi_sections .debug_frame
9 .global adc_setup
11 adc_setup:
12 .LFB0:
13 .file 1 "main.c"
1:main.c **** /* ******************************************************** *
2:main.c **** *
3:main.c **** * Simple program with avr-gcc and ATtiny13
4:main.c **** * -------------------------------------------------------- *
5:main.c **** * Created on: 07.06.2016
6:main.c **** * Author: Paolo Iocco
7:main.c **** * ******************************************************** */
8:main.c **** /* ******************************************************** *
9:main.c **** ATtiny 13/45/85 Pin map
10:main.c **** +--\/--+
11:main.c **** /Reset ADC0 PB5 -|1° 8|- Vcc
12:main.c **** ADC3 PB3 -|2 7|- PB2 ADC1 SCK
13:main.c **** ADC2 PB4 -|3 6|- PB1 OC0B MISO AIN1
14:main.c **** GND -|4 5|- PB0 OC0A MOSI AIN0
15:main.c **** +------+
16:main.c **** * ********************************************************* */
17:main.c ****
18:main.c **** #include "main.h"
19:main.c ****
20:main.c **** void adc_setup (void)
21:main.c **** {
14 .loc 1 21 0
15 .cfi_startproc
16 /* prologue: function */
17 /* frame size = 0 */
18 /* stack size = 0 */
19 .L__stack_usage = 0
22:main.c **** // Set the ADC input to PB2/ADC1
23:main.c **** ADMUX |= (1 << MUX0);
20 .loc 1 23 0
21 0000 389A sbi 0x7,0
24:main.c **** ADMUX |= (1 << ADLAR);
22 .loc 1 24 0
23 0002 3D9A sbi 0x7,5
25:main.c **** // Set the prescaler to clock/128 & enable ADC
26:main.c **** ADCSRA |= (1 << ADPS1) | (1 << ADPS0) | (1 << ADEN);
24 .loc 1 26 0
25 0004 86B1 in r24,0x6
26 0006 8368 ori r24,lo8(-125)
27 0008 86B9 out 0x6,r24
28 000a 0895 ret
29 .cfi_endproc
30 .LFE0:
32 .global adc_read
34 adc_read:
35 .LFB1:
27:main.c **** }
28:main.c ****
29:main.c **** int adc_read (void)
30:main.c **** {
36 .loc 1 30 0
37 .cfi_startproc
38 /* prologue: function */
39 /* frame size = 0 */
40 /* stack size = 0 */
41 .L__stack_usage = 0
31:main.c **** // Start the conversion
32:main.c **** ADCSRA |= (1 << ADSC);
42 .loc 1 32 0
43 000c 369A sbi 0x6,6
44 .L3:
33:main.c **** // Wait for it to finish
34:main.c **** while (ADCSRA & (1 << ADSC));
45 .loc 1 34 0 discriminator 1
46 000e 3699 sbic 0x6,6
47 0010 00C0 rjmp .L3
35:main.c **** return ADCH;
48 .loc 1 35 0
49 0012 85B1 in r24,0x5
36:main.c **** }
50 .loc 1 36 0
51 0014 90E0 ldi r25,0
52 0016 0895 ret
53 .cfi_endproc
54 .LFE1:
56 .global pwm_setup
58 pwm_setup:
59 .LFB2:
37:main.c ****
38:main.c **** void pwm_setup (void)
39:main.c **** {
60 .loc 1 39 0
61 .cfi_startproc
62 /* prologue: function */
63 /* frame size = 0 */
64 /* stack size = 0 */
65 .L__stack_usage = 0
40:main.c **** // Set Timer 0 prescaler to clock/8.
41:main.c **** // At 9.6 MHz this is 1.2 MHz.
42:main.c **** TCCR0B |= (1 << CS01) | (1 << CS00);
66 .loc 1 42 0
67 0018 83B7 in r24,0x33
68 001a 8360 ori r24,lo8(3)
69 001c 83BF out 0x33,r24
43:main.c **** // Set to 'Fast PWM' mode
44:main.c **** TCCR0A |= (1 << WGM01) | (1 << WGM00);
70 .loc 1 44 0
71 001e 8FB5 in r24,0x2f
72 0020 8360 ori r24,lo8(3)
73 0022 8FBD out 0x2f,r24
45:main.c **** // Clear OC0B output on compare match, upwards counting.
46:main.c **** TCCR0A |= (1 << COM0B1);
74 .loc 1 46 0
75 0024 8FB5 in r24,0x2f
76 0026 8062 ori r24,lo8(32)
77 0028 8FBD out 0x2f,r24
78 002a 0895 ret
79 .cfi_endproc
80 .LFE2:
82 .global pwm_write
84 pwm_write:
85 .LFB3:
47:main.c **** }
48:main.c ****
49:main.c **** void pwm_write (int val)
50:main.c **** {
86 .loc 1 50 0
87 .cfi_startproc
88 .LVL0:
89 /* prologue: function */
90 /* frame size = 0 */
91 /* stack size = 0 */
92 .L__stack_usage = 0
51:main.c **** OCR0B = val;
93 .loc 1 51 0
94 002c 89BD out 0x29,r24
95 002e 0895 ret
96 .cfi_endproc
97 .LFE3:
99 .section .text.startup,"ax",@progbits
100 .global main
102 main:
103 .LFB4:
52:main.c **** }
53:main.c ****
54:main.c **** int main (void)
55:main.c **** {
104 .loc 1 55 0
105 .cfi_startproc
106 /* prologue: function */
107 /* frame size = 0 */
108 /* stack size = 0 */
109 .L__stack_usage = 0
56:main.c **** int adc_in;
57:main.c **** // LED is an output.
58:main.c **** DDRB |= (1 << LED);
110 .loc 1 58 0
111 0000 BB9A sbi 0x17,3
59:main.c **** adc_setup();
112 .loc 1 59 0
113 0002 00D0 rcall adc_setup
114 .LVL1:
60:main.c **** pwm_setup();
115 .loc 1 60 0
116 0004 00D0 rcall pwm_setup
117 .LVL2:
118 .L9:
61:main.c **** while (1) {
62:main.c **** // Get the ADC value
63:main.c **** adc_in = adc_read();
119 .loc 1 63 0 discriminator 1
120 0006 00D0 rcall adc_read
121 .LVL3:
122 .LBB4:
123 .LBB5:
51:main.c **** }
124 .loc 1 51 0 discriminator 1
125 0008 89BD out 0x29,r24
126 000a 00C0 rjmp .L9
127 .LBE5:
128 .LBE4:
129 .cfi_endproc
130 .LFE4:
132 .text
133 .Letext0:
134 .file 2 "a:\\hardware\\tools\\avr\\avr\\include\\stdint.h"
DEFINED SYMBOLS
*ABS*:00000000 main.c
C:\Users\q242695\AppData\Local\Temp\ccY7rbVv.s:2 *ABS*:0000003d __SP_L__
C:\Users\q242695\AppData\Local\Temp\ccY7rbVv.s:3 *ABS*:0000003f __SREG__
C:\Users\q242695\AppData\Local\Temp\ccY7rbVv.s:4 *ABS*:00000000 __tmp_reg__
C:\Users\q242695\AppData\Local\Temp\ccY7rbVv.s:5 *ABS*:00000001 __zero_reg__
C:\Users\q242695\AppData\Local\Temp\ccY7rbVv.s:11 .text:00000000 adc_setup
C:\Users\q242695\AppData\Local\Temp\ccY7rbVv.s:34 .text:0000000c adc_read
C:\Users\q242695\AppData\Local\Temp\ccY7rbVv.s:58 .text:00000018 pwm_setup
C:\Users\q242695\AppData\Local\Temp\ccY7rbVv.s:84 .text:0000002c pwm_write
C:\Users\q242695\AppData\Local\Temp\ccY7rbVv.s:102 .text.startup:00000000 main
NO UNDEFINED SYMBOLS