mirror of
https://github.com/sergeyyarkov/attiny2313a_shift-register-example.git
synced 2026-10-11 02:08:50 +03:00
info
This commit is contained in:
parent
49dc55f597
commit
1f057d5d55
2
.gitignore
vendored
2
.gitignore
vendored
@ -1 +1,3 @@
|
|||||||
*.lss
|
*.lss
|
||||||
|
*.lst
|
||||||
|
*.pro
|
||||||
5
README.md
Normal file
5
README.md
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# Shift Register Example
|
||||||
|
|
||||||
|
This is my example of working with a shift register 74HC595 using an AVR microcontroller. This example does not use any data interface (SPI, USI). Instead, a small algorithm is implemented that controls the three pins of the microcontroller (DATA, LATCH and CLOCK).
|
||||||
|
|
||||||
|

|
||||||
30
firmware.asm
30
firmware.asm
@ -14,15 +14,15 @@
|
|||||||
.INCLUDE "tn2313Adef.inc"
|
.INCLUDE "tn2313Adef.inc"
|
||||||
.LIST
|
.LIST
|
||||||
|
|
||||||
.DEF COUNTER = r20
|
.DEF DATA = r20 ; DATA to transmit
|
||||||
|
|
||||||
;========================================;
|
;========================================;
|
||||||
; LABELS ;
|
; LABELS ;
|
||||||
;========================================;
|
;========================================;
|
||||||
|
|
||||||
.EQU CLOCK_PIN = PB0 ; ST_CP on 74HC595
|
.EQU CLOCK_PIN = PB0 ; SH_CP on 74HC595
|
||||||
.EQU DATA_PIN = PB1 ; DS on 74HC595
|
.EQU DATA_PIN = PB1 ; DS on 74HC595
|
||||||
.EQU LATCH_PIN = PB2 ; SH_CP on 74HC595
|
.EQU LATCH_PIN = PB2 ; ST_CP on 74HC595
|
||||||
|
|
||||||
;========================================;
|
;========================================;
|
||||||
; CODE SEGMENT ;
|
; CODE SEGMENT ;
|
||||||
@ -66,8 +66,7 @@ RESET_vect:
|
|||||||
|
|
||||||
MCU_INIT:
|
MCU_INIT:
|
||||||
rcall INIT_PORTS
|
rcall INIT_PORTS
|
||||||
|
ldi DATA, 0b00000001
|
||||||
ldi COUNTER, 0
|
|
||||||
rjmp LOOP
|
rjmp LOOP
|
||||||
|
|
||||||
INIT_PORTS:
|
INIT_PORTS:
|
||||||
@ -80,7 +79,9 @@ ret
|
|||||||
;========================================;
|
;========================================;
|
||||||
TRANSMIT_595:
|
TRANSMIT_595:
|
||||||
push r19
|
push r19
|
||||||
mov r19, COUNTER
|
push r21
|
||||||
|
in r21, SREG
|
||||||
|
mov r19, DATA
|
||||||
ldi r16, 8
|
ldi r16, 8
|
||||||
_TRANSMIT_595_LOOP:
|
_TRANSMIT_595_LOOP:
|
||||||
lsl r19
|
lsl r19
|
||||||
@ -97,10 +98,12 @@ TRANSMIT_595:
|
|||||||
_TRANSMIT_595_COMMIT:
|
_TRANSMIT_595_COMMIT:
|
||||||
sbi PORTB, CLOCK_PIN
|
sbi PORTB, CLOCK_PIN
|
||||||
cbi PORTB, CLOCK_PIN
|
cbi PORTB, CLOCK_PIN
|
||||||
sbi PORTB, LATCH_PIN
|
|
||||||
cbi PORTB, LATCH_PIN
|
|
||||||
dec r16
|
dec r16
|
||||||
brne _TRANSMIT_595_LOOP
|
brne _TRANSMIT_595_LOOP
|
||||||
|
sbi PORTB, LATCH_PIN
|
||||||
|
cbi PORTB, LATCH_PIN
|
||||||
|
out SREG, r21
|
||||||
|
pop r21
|
||||||
pop r19
|
pop r19
|
||||||
ret
|
ret
|
||||||
|
|
||||||
@ -110,15 +113,12 @@ ret
|
|||||||
|
|
||||||
LOOP:
|
LOOP:
|
||||||
rcall TRANSMIT_595
|
rcall TRANSMIT_595
|
||||||
inc COUNTER
|
|
||||||
rcall DELAY
|
rcall DELAY
|
||||||
|
rol DATA
|
||||||
rjmp LOOP
|
rjmp LOOP
|
||||||
|
|
||||||
DELAY:
|
DELAY:
|
||||||
push r16
|
ldi r16, 70
|
||||||
push r17
|
|
||||||
cli
|
|
||||||
ldi r16, 20
|
|
||||||
_DELAY_1:
|
_DELAY_1:
|
||||||
ldi r17, 255
|
ldi r17, 255
|
||||||
_DELAY_2:
|
_DELAY_2:
|
||||||
@ -130,8 +130,4 @@ DELAY:
|
|||||||
|
|
||||||
dec r16
|
dec r16
|
||||||
brne _DELAY_1
|
brne _DELAY_1
|
||||||
sei
|
|
||||||
|
|
||||||
pop r17
|
|
||||||
pop r16
|
|
||||||
ret
|
ret
|
||||||
12
firmware.hex
12
firmware.hex
@ -1,8 +1,8 @@
|
|||||||
:020000020000FC
|
:020000020000FC
|
||||||
:1000000000C00FED0DBF02D040E014C007E007BBF9
|
:1000000000C00FED0DBF02D041E018C007E007BBF4
|
||||||
:1000100008953F93342F08E0330F18F400F0C19A8D
|
:1000100008953F935F935FB7342F08E0330F18F4D0
|
||||||
:1000200001C0C198C09AC098C29AC2980A95A1F717
|
:1000200000F0C19A01C0C198C09AC0980A95B1F772
|
||||||
:100030003F910895EEDF439501D0FCCF0F931F93BE
|
:10003000C29AC2985FBF5F913F910895EADF02D0F4
|
||||||
:10004000F89404E11FEF1A95000000000000D9F7B2
|
:10004000441FFCCF06E41FEF1A95000000000000DB
|
||||||
:0C0050000A95C1F778941F910F91089554
|
:08005000D9F70A95C1F70895E4
|
||||||
:00000001FF
|
:00000001FF
|
||||||
|
|||||||
BIN
sim_proteus.pdsprj
Normal file
BIN
sim_proteus.pdsprj
Normal file
Binary file not shown.
BIN
simulation.gif
Normal file
BIN
simulation.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 191 KiB |
Loading…
x
Reference in New Issue
Block a user