This commit is contained in:
Sergey Yarkov 2023-01-29 17:40:46 +03:00
parent 9a5cd93e9f
commit 01ee88d6fb
No known key found for this signature in database
GPG Key ID: E91CE1FABC619B6F
2 changed files with 22 additions and 15 deletions

View File

@ -6,8 +6,8 @@
; Device Datasheet: http://ww1.microchip.com/downloads/en/DeviceDoc/doc8246.pdf ; Device Datasheet: http://ww1.microchip.com/downloads/en/DeviceDoc/doc8246.pdf
; Package: SOIC-20W_7.5x12.8mm_P1.27mm ; Package: SOIC-20W_7.5x12.8mm_P1.27mm
; Assembler: AVR macro assembler 2.2.7 ; Assembler: AVR macro assembler 2.2.7
; Clock frequency: 12 MHz External Crystal Oscillator ; Clock frequency: 8 MHz Internal with CKDIV8
; Fuses: lfuse: 0x4F, hfuse: 0x9F, efuse: 0xFF, lock: 0xFF ; Fuses: lfuse: 0x64, hfuse: 0x9F, efuse: 0xFF, lock: 0xFF
; ;
; Written by Sergey Yarkov 28.01.2023 ; Written by Sergey Yarkov 28.01.2023
@ -58,13 +58,13 @@ MCU_INIT:
LOOP: LOOP:
rcall TRANSMIT_595 rcall TRANSMIT_595
rcall DELAY
rol DATA rol DATA
rcall DELAY
rjmp LOOP rjmp LOOP
INIT_PORTS: INIT_PORTS:
ldi r16, (1<<CLOCK_PIN) | (1<<LATCH_PIN) | (1<<DATA_PIN) ldi TEMP_A, (1<<CLOCK_PIN) | (1<<LATCH_PIN) | (1<<DATA_PIN)
out DDRB, r16 out DDRB, TEMP_A
ret ret
;========================================; ;========================================;
@ -74,8 +74,10 @@ ret
TRANSMIT_595: TRANSMIT_595:
in r21, SREG in r21, SREG
mov r19, DATA mov r19, DATA
ldi r16, 8 ldi TEMP_B, 8
_TRANSMIT_595_LOOP: _TRANSMIT_595_LOOP:
;
; Shift a bit into the Carry flag and check if it is set to 1 or 0.
lsl r19 lsl r19
brcc _TRANSMIT_595_SEND_LOW brcc _TRANSMIT_595_SEND_LOW
brcs _TRANSMIT_595_SEND_HIGH brcs _TRANSMIT_595_SEND_HIGH
@ -88,16 +90,20 @@ TRANSMIT_595:
cbi PORTB, DATA_PIN cbi PORTB, DATA_PIN
_TRANSMIT_595_COMMIT: _TRANSMIT_595_COMMIT:
sbi PORTB, CLOCK_PIN
cbi PORTB, CLOCK_PIN cbi PORTB, CLOCK_PIN
dec r16 sbi PORTB, CLOCK_PIN
dec TEMP_B
brne _TRANSMIT_595_LOOP brne _TRANSMIT_595_LOOP
;
; Copy data from shift register to storage register
sbi PORTB, LATCH_PIN sbi PORTB, LATCH_PIN
cbi PORTB, LATCH_PIN cbi PORTB, LATCH_PIN
out SREG, r21 out SREG, r21
ret ret
DELAY: DELAY:
push TEMP_A
ldi TEMP_A, 70 ldi TEMP_A, 70
_DELAY_1: _DELAY_1:
ldi TEMP_B, 255 ldi TEMP_B, 255
@ -107,7 +113,7 @@ DELAY:
nop nop
nop nop
brne _DELAY_2 brne _DELAY_2
dec TEMP_A dec TEMP_A
brne _DELAY_1 brne _DELAY_1
pop TEMP_A
ret ret

View File

@ -1,7 +1,8 @@
:020000020000FC :020000020000FC
:1000000000C00FED0DBF06D041E000C006D016D0F5 :1000000000C00FED0DBF06D041E000C006D0441F78
:10001000441FFCCF07E007BB08955FB7342F08E00B :1000100015D0FCCF07E007BB08955FB7342F18E079
:10002000330F18F400F0C19A01C0C198C09AC0986B :10002000330F18F400F0C19A01C0C198C098C09A6B
:100030000A95B1F7C29AC2985FBF089506E41FEF10 :100030001A95B1F7C29AC2985FBF08950F9306E46C
:100040001A95000000000000D9F70A95C1F708953D :100040001FEF1A95000000000000D9F70A95C1F7CC
:040050000F9108956F
:00000001FF :00000001FF