The code below resulted on slow to fast to slow to fast... blinking LED
;based on ADC
.include "../tn13Adef.INC"
.def zero=r19
.def max=r20
.org $0000
init:
ldi r17,0
ldi r18,1 ;increment/decrement check
ldi zero,0
ldi max,255
sbi DDRB,0
;ldi R16,0b10000011
;out TCCR0A,R16 ;fast pwm
main:
cpse r18,zero
rjmp increment
rjmp decrement
back:
cp r17,zero
breq switchUp
cp r17,max
breq switchDown
switch:
rcall delay
sbi PINB,0
rjmp main
increment:
inc r17
rjmp back
decrement:
dec r17
rjmp back
switchUp:
ldi r18,1
rjmp switch
switchDown:
ldi r18,0
rjmp switch
delay:
mov r16,r17
loopDelay:
rcall pause
dec r16
brne loopDelay
ret
pause:
ldi r21,127
lpause:
dec r21
brne lpause
ret
Save it as timer2.s, build it using avra
Nugrohos-MacBook-Air:timer nugroho$ avra -o timer2.hex timer2.s
AVRA: advanced AVR macro assembler Version 1.3.0 Build 1 (8 May 2010)
Copyright (C) 1998-2010. Check out README file for more info
AVRA is an open source assembler for Atmel AVR microcontroller family
It can be used as a replacement of 'AVRASM32.EXE' the original assembler
shipped with AVR Studio. We do not guarantee full compatibility for avra.
AVRA comes with NO WARRANTY, to the extent permitted by law.
You may redistribute copies of avra under the terms
of the GNU General Public License.
For more information about these matters, see the files named COPYING.
Pass 1...
Pass 2...
done
Used memory blocks:
Code : Start = 0x0000, End = 0x0019, Length = 0x001A
Assembly complete with no errors.
Segment usage:
Code : 26 words (52 bytes)
Data : 0 bytes
EEPROM : 0 bytes
Nugrohos-MacBook-Air:timer nugroho$ avra -o timer2.hex timer2.s
AVRA: advanced AVR macro assembler Version 1.3.0 Build 1 (8 May 2010)
Copyright (C) 1998-2010. Check out README file for more info
AVRA is an open source assembler for Atmel AVR microcontroller family
It can be used as a replacement of 'AVRASM32.EXE' the original assembler
shipped with AVR Studio. We do not guarantee full compatibility for avra.
AVRA comes with NO WARRANTY, to the extent permitted by law.
You may redistribute copies of avra under the terms
of the GNU General Public License.
For more information about these matters, see the files named COPYING.
Pass 1...
Pass 2...
done
Used memory blocks:
Code : Start = 0x0000, End = 0x0019, Length = 0x001A
Assembly complete with no errors.
Segment usage:
Code : 26 words (52 bytes)
Data : 0 bytes
EEPROM : 0 bytes
Nugrohos-MacBook-Air:timer nugroho$ vavrdisasm timer2.s.hex
0: e0 10 ldi R17, 0x00
2: e0 21 ldi R18, 0x01
4: e0 30 ldi R19, 0x00
6: ef 4f ser R20
8: 13 23 cpse R18, R19
a: c0 08 rjmp .+16 ; 0x1c
c: c0 09 rjmp .+18 ; 0x20
e: 17 13 cp R17, R19
10: f0 49 breq .+18 ; 0x24
12: 17 14 cp R17, R20
14: f0 49 breq .+18 ; 0x28
16: d0 0a rcall .+20 ; 0x2c
18: 9a b0 sbi $16, 0
1a: cf f6 rjmp .-20 ; 0x8
1c: 95 13 inc R17
1e: cf f7 rjmp .-18 ; 0xe
20: 95 1a dec R17
22: cf f5 rjmp .-22 ; 0xe
24: e0 21 ldi R18, 0x01
26: cf f7 rjmp .-18 ; 0x16
28: e0 20 ldi R18, 0x00
2a: cf f5 rjmp .-22 ; 0x16
2c: 2f 01 mov R16, R17
2e: 95 0a dec R16
30: f7 f1 brne .-4 ; 0x2e
32: 95 08 ret
Nugrohos-MacBook-Air:timer nugroho$
upload using avrdude
Nugrohos-MacBook-Air:timer nugroho$ avrdude -p t13 -P usb -c usbasp -B4 -n
avrdude: set SCK frequency to 187500 Hz
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude: Device signature = 0x1e9007
avrdude: safemode: Fuses OK (H:FF, E:FF, L:6A)
avrdude done. Thank you.
Nugrohos-MacBook-Air:timer nugroho$ avrdude -p t13 -P usb -c usbasp -B4 -U flash:w:timer2.s.hex
avrdude: set SCK frequency to 187500 Hz
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude: Device signature = 0x1e9007
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: set SCK frequency to 187500 Hz
avrdude: reading input file "timer2.s.hex"
avrdude: input file timer2.s.hex auto detected as Intel Hex
avrdude: writing flash (52 bytes):
Writing | ################################################## | 100% 0.04s
avrdude: 52 bytes of flash written
avrdude: verifying flash memory against timer2.s.hex:
avrdude: load data flash data from input file timer2.s.hex:
avrdude: input file timer2.s.hex auto detected as Intel Hex
avrdude: input file timer2.s.hex contains 52 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 0.02s
avrdude: verifying ...
avrdude: 52 bytes of flash verified
avrdude: safemode: Fuses OK (H:FF, E:FF, L:6A)
avrdude done. Thank you.
Nugrohos-MacBook-Air:timer nugroho$
No comments:
Post a Comment