mirror of
https://github.com/sergeyyarkov/attiny2313a_shift-register-example.git
synced 2026-10-11 10:18:52 +03:00
refactored
This commit is contained in:
parent
1f057d5d55
commit
9a5cd93e9f
62
firmware.asm
62
firmware.asm
@ -14,7 +14,9 @@
|
|||||||
.INCLUDE "tn2313Adef.inc"
|
.INCLUDE "tn2313Adef.inc"
|
||||||
.LIST
|
.LIST
|
||||||
|
|
||||||
.DEF DATA = r20 ; DATA to transmit
|
.DEF TEMP_A = r16 ; Temp register A
|
||||||
|
.DEF TEMP_B = r17 ; Temp register B
|
||||||
|
.DEF DATA = r20 ; DATA to transmit
|
||||||
|
|
||||||
;========================================;
|
;========================================;
|
||||||
; LABELS ;
|
; LABELS ;
|
||||||
@ -36,39 +38,30 @@
|
|||||||
;========================================;
|
;========================================;
|
||||||
|
|
||||||
rjmp RESET_vect ; Program start at RESET vector
|
rjmp RESET_vect ; Program start at RESET vector
|
||||||
;reti ; External Interrupt Request 0 / inactive
|
|
||||||
;reti ; External Interrupt Request 1 / inactive
|
|
||||||
;reti ; Timer/Counter1 Capture Event / inactive
|
|
||||||
;reti ; Timer/Counter1 Compare Match A / inactive
|
|
||||||
;reti ; Timer/Counter1 Overflow / inactive
|
|
||||||
;reti ; Timer/Counter0 Overflow / inactive
|
|
||||||
;reti ; USART0, Rx Complete / inactive
|
|
||||||
;reti ; USART0 Data Register Empty / inactive
|
|
||||||
;reti ; USART0, Tx Complete / inactive
|
|
||||||
;reti ; Analog Comparator / inactive
|
|
||||||
;reti ; Pin Change Interrupt Request 0/ inactive
|
|
||||||
;reti ; Timer/Counter1 Compare Match B / inactive
|
|
||||||
;reti ; Timer/Counter0 Compare Match A / inactive
|
|
||||||
;reti ; Timer/Counter0 Compare Match B / inactive
|
|
||||||
;reti ; USI Start Condition/ inactive
|
|
||||||
;reti ; USI Overflow / inactive
|
|
||||||
;reti ; EEPROM Ready/ inactive
|
|
||||||
;reti ; Watchdog Timer Overflow / inactive
|
|
||||||
;reti ; Pin Change Interrupt Request 1 / inactive
|
|
||||||
;reti ; Pin Change Interrupt Request 2 / inactive
|
|
||||||
|
|
||||||
RESET_vect:
|
RESET_vect:
|
||||||
;========================================;
|
;========================================;
|
||||||
; INITIALIZE STACK POINTER ;
|
; INITIALIZE STACK POINTER ;
|
||||||
;========================================;
|
;========================================;
|
||||||
ldi r16, low(RAMEND)
|
|
||||||
out SPL, r16
|
ldi TEMP_A, low(RAMEND)
|
||||||
|
out SPL, TEMP_A
|
||||||
|
|
||||||
MCU_INIT:
|
MCU_INIT:
|
||||||
rcall INIT_PORTS
|
rcall INIT_PORTS
|
||||||
ldi DATA, 0b00000001
|
ldi DATA, 0b00000001
|
||||||
rjmp LOOP
|
rjmp LOOP
|
||||||
|
|
||||||
|
;========================================;
|
||||||
|
; MAIN PROGRAM LOOP ;
|
||||||
|
;========================================;
|
||||||
|
|
||||||
|
LOOP:
|
||||||
|
rcall TRANSMIT_595
|
||||||
|
rcall DELAY
|
||||||
|
rol DATA
|
||||||
|
rjmp LOOP
|
||||||
|
|
||||||
INIT_PORTS:
|
INIT_PORTS:
|
||||||
ldi r16, (1<<CLOCK_PIN) | (1<<LATCH_PIN) | (1<<DATA_PIN)
|
ldi r16, (1<<CLOCK_PIN) | (1<<LATCH_PIN) | (1<<DATA_PIN)
|
||||||
out DDRB, r16
|
out DDRB, r16
|
||||||
@ -77,9 +70,8 @@ ret
|
|||||||
;========================================;
|
;========================================;
|
||||||
; SEND BYTE TO 74HC595 ;
|
; SEND BYTE TO 74HC595 ;
|
||||||
;========================================;
|
;========================================;
|
||||||
|
|
||||||
TRANSMIT_595:
|
TRANSMIT_595:
|
||||||
push r19
|
|
||||||
push r21
|
|
||||||
in r21, SREG
|
in r21, SREG
|
||||||
mov r19, DATA
|
mov r19, DATA
|
||||||
ldi r16, 8
|
ldi r16, 8
|
||||||
@ -103,31 +95,19 @@ TRANSMIT_595:
|
|||||||
sbi PORTB, LATCH_PIN
|
sbi PORTB, LATCH_PIN
|
||||||
cbi PORTB, LATCH_PIN
|
cbi PORTB, LATCH_PIN
|
||||||
out SREG, r21
|
out SREG, r21
|
||||||
pop r21
|
|
||||||
pop r19
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
;========================================;
|
|
||||||
; MAIN PROGRAM LOOP ;
|
|
||||||
;========================================;
|
|
||||||
|
|
||||||
LOOP:
|
|
||||||
rcall TRANSMIT_595
|
|
||||||
rcall DELAY
|
|
||||||
rol DATA
|
|
||||||
rjmp LOOP
|
|
||||||
|
|
||||||
DELAY:
|
DELAY:
|
||||||
ldi r16, 70
|
ldi TEMP_A, 70
|
||||||
_DELAY_1:
|
_DELAY_1:
|
||||||
ldi r17, 255
|
ldi TEMP_B, 255
|
||||||
_DELAY_2:
|
_DELAY_2:
|
||||||
dec r17
|
dec TEMP_B
|
||||||
nop
|
nop
|
||||||
nop
|
nop
|
||||||
nop
|
nop
|
||||||
brne _DELAY_2
|
brne _DELAY_2
|
||||||
|
|
||||||
dec r16
|
dec TEMP_A
|
||||||
brne _DELAY_1
|
brne _DELAY_1
|
||||||
ret
|
ret
|
||||||
11
firmware.hex
11
firmware.hex
@ -1,8 +1,7 @@
|
|||||||
:020000020000FC
|
:020000020000FC
|
||||||
:1000000000C00FED0DBF02D041E018C007E007BBF4
|
:1000000000C00FED0DBF06D041E000C006D016D0F5
|
||||||
:1000100008953F935F935FB7342F08E0330F18F4D0
|
:10001000441FFCCF07E007BB08955FB7342F08E00B
|
||||||
:1000200000F0C19A01C0C198C09AC0980A95B1F772
|
:10002000330F18F400F0C19A01C0C198C09AC0986B
|
||||||
:10003000C29AC2985FBF5F913F910895EADF02D0F4
|
:100030000A95B1F7C29AC2985FBF089506E41FEF10
|
||||||
:10004000441FFCCF06E41FEF1A95000000000000DB
|
:100040001A95000000000000D9F70A95C1F708953D
|
||||||
:08005000D9F70A95C1F70895E4
|
|
||||||
:00000001FF
|
:00000001FF
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user