From f445087ca89de6a1a34fff928974974a36ba84a1 Mon Sep 17 00:00:00 2001
From: Aron Nikku <aron.nikku@gmail.com>
Date: Wed, 22 Dec 2021 18:53:42 +0100
Subject: [PATCH] Lab3 fix

---
 Lab3/.vs/Lab3/v14/.atsuo           | Bin 18432 -> 18432 bytes
 Lab3/Lab3/Debug/Lab3.hex           |  58 ++--
 Lab3/Lab3/Debug/Lab3.lss           | 432 ++++++++++++++---------------
 Lab3/Lab3/Debug/Lab3.map           |  56 ++--
 Lab3/Lab3/Debug/Lab3.obj           | Bin 2207 -> 2072 bytes
 Lab3/Lab3/Debug/Lab3.tmp           |  56 ++--
 Lab3/Lab3/Lab3.asmproj             |  40 ++-
 Lab3/Lab3/aroni616_lab3_TSIU02.asm |   4 +
 Lab3/Lab3/main.asm                 | 122 +++-----
 Lab4/.vs/Lab4/v14/.atsuo           | Bin 22016 -> 18432 bytes
 10 files changed, 364 insertions(+), 404 deletions(-)

diff --git a/Lab3/.vs/Lab3/v14/.atsuo b/Lab3/.vs/Lab3/v14/.atsuo
index 952245bfbaee8b268e6f2d4a319162f86bd8c081..5b7bfc8b4b56c13cf2d7cdfd975b566b965a319d 100644
GIT binary patch
delta 719
zcmZpez}PT>ae{#Y69W_oFfgz%FfcGOFfjc4|NlQol$n8nVPoKW#>xK~bJ-F!teymX
zpIpS$#OONtE7Lh%1|<dt1~vu;hX4Qn|DQZjL}l|A=1L~s_Xf`bzF%jQ1{okUxr(WZ
z(H){(8BO`*FYGEjd<+Z>;tUK75)2Fs69Yviaj`J|n;0lRIfg}tg&%Bv3F9Iz#!2EV
zf=*DExj<>R$&BLKn;p107&$;Lfw^LG3D1SeN7xKDm+(&D<b-RQ%qT9uS%+JK2_h$X
zo{^Ukqy^+E5DoGGs{;cAL+9j5DRoBU$%@j!yv_^^44EL0FfcHrOlFiZiB4oFV#sI6
zW5{GMV=!beV~A(SVMt_1VlZZiX9!^kX7FSPWiVhcV$fqqWGH6HWthAm_jZBHOJ9w;
z-@<0w_Jb?{hZo377_N7i(DbHMX!1o7gGn;3D&{8*?sJ^hDT#Zsyx!r{mwJ%>Fr_eh
zGQX3!z=^{#hV$%i?ka*A5Foo@lGNeJhnWmPQ6%NZ%c#h}zyOM2kiMbk!^sCkN@OG$
W7(qS&g#rVHk1xm?ZDvyXrwRbej0Zdb

delta 457
zcmZpez}PT>ae{#?0}Kc-FmN$2FfcMOF#P-f|365Wak3(Z_{M}ejFXsh*cvK(JobN@
zT*TDG=rs8&(>Y#7B?bltHU<WU|NsC0pL~%|W%C#2N+wpNc8IdT$<Dlnj1H5(GWqj>
zREZ&}oLs^jF!>0R!Q?OOD!if$3=HB73=9$=n<ob9PvT;k9KmA1s?5N^zzK0d4C5j$
z#>pb$5)%_dHtUE>FtIQ*FfdG36qTQBz{I<`gm(hxWC3xRi3vQLb;QM)CLd-p+*~4g
zo)N@gbzop%$ebLg>pj^;)n@Vm5%tN>W#k0K7!NLbd3xWa&&H{5?<9)ZF-%tE5LS0|
z@(KzybuG&FN>5L>wFLzN2%k6{V>r+L=B}c8hY3w@N`)q06fu#qVaR7FU`S=iW3Xf3
z1&192LuO8Dv0cq%K}X@qG9tp0Upd-vN1O)*D+5DflF?*CC)vp|BK(ufWji<VxiIp8
xLQViBT=)Zcco`TNSdau+EkFX3e;RvDK5Xbad4h?><P%Ifo4=UwFfLM30|28Oijn{T

diff --git a/Lab3/Lab3/Debug/Lab3.hex b/Lab3/Lab3/Debug/Lab3.hex
index 447f533..40ac340 100644
--- a/Lab3/Lab3/Debug/Lab3.hex
+++ b/Lab3/Lab3/Debug/Lab3.hex
@@ -1,32 +1,30 @@
 :020000020000FC
-:040000000C94250037
-:10002C000C9418000F930FB70F930E9472000E944C
-:10003C00A7000E94C2000F910FBF0F9118950E944C
-:10004C00D2000E94D2000E9437000E943B000E9406
-:10005C0063000E94A7000E94C2000E945600789480
-:10006C00FFCF0FEF04B90AB908950E94E3000E9474
-:10007C00D20000E30E94F5000E94F5000E94F500FA
-:10008C0000E20E94F50000E20E94E7000FE00E94EF
-:10009C00E70001E00E94E70006E00E94E7000895F7
-:1000AC000CE00093810004EF0093890003E20093BD
-:1000BC00880002E000936F000895F1E0E0E000E0BA
-:1000CC00019304E0019309E0019305E0019303E03F
-:1000DC00019302E001930895F1E0E0E000810395C3
-:1000EC0000830A3069F500E00193008103950083D9
-:1000FC00063031F500E001930081039500830A304E
-:10010C00F9F400E001930081039500830630C1F4FB
-:10011C0000E001931181123049F4008103950083B2
-:10012C00043071F400E0019300830AC00081039550
-:10013C0000830A3029F400E00193008103950083C9
-:10014C000895F1E0E6E0D1E0C6E00E94B8000E941C
-:10015C00BF000E94B8000E94BF000E94B80000E0DF
-:10016C000883089502910063099302910063099337
-:10017C0008950AE3099308950E94DF000E94DB00B2
-:10018C00F1E0E6E00E94CB0008950191003019F0F7
-:10019C000E94EB00FACF08958F939F9380E090E03C
-:1001AC000197F1F79F918F91089502E00E94E7006B
-:1001BC00089501E00E94E70008952A9A08952A986C
-:1001CC00089528980E94EF000895289A0E94EF0045
-:1001DC0008950E94F50002950E94F5000895299A51
-:0A01EC000BB929980E94D200089573
+:040000000C942F002D
+:10002C000C9418000F930FB70F931F932F933F93BC
+:10003C00CF93DF93EF93FF930E948300FF91EF9197
+:10004C00DF91CF913F912F911F910F910FBF0F9186
+:10005C0018950E94C3000E94C3000E9445000E9494
+:10006C0049000E9471000E949A000E94B5000E94F3
+:10007C00640078940E949A000E94B500FBCF0FEFA9
+:10008C0004B90AB908950E94D4000E94C30000E389
+:10009C000E94E6000E94E6000E94E60000E20E9438
+:1000AC00E60000E20E94D8000CE00E94D80001E0BB
+:1000BC000E94D80006E00E94D80008950CE000933E
+:1000CC00810004EF0093890003E20093880002E0B2
+:1000DC0000936F000895F1E0E0E005E0019304E087
+:1000EC00019309E0019305E0019303E0019302E021
+:1000FC00019308950A060A061818D1E0C0E0F1E051
+:10010C00E0E0088103951591183129F0011751F49D
+:10011C0000E00993F6CF043029F41981123011F460
+:10012C0000E0099308830895F1E0E6E0D1E0C6E031
+:10013C000E94AB000E94B2000E94AB000E94B20071
+:10014C000E94AB0000E008830895029100630993BC
+:10015C0002910063099308950AE3099308950E949C
+:10016C00CC00F1E0E6E00E94BC0008950191003063
+:10017C0019F00E94DC00FACF08958F939F9380E0D2
+:10018C0090E00197F1F79F918F91089502E00E9402
+:10019C00D800089501E00E94D80008952A9A089585
+:1001AC002A98089528980E94E0000895289A0E94A1
+:1001BC00E00008950E94E60002950E94E600089572
+:0C01CC00299A0BB929980E94C3000895DD
 :00000001FF
diff --git a/Lab3/Lab3/Debug/Lab3.lss b/Lab3/Lab3/Debug/Lab3.lss
index a44c6df..fc4a6cc 100644
--- a/Lab3/Lab3/Debug/Lab3.lss
+++ b/Lab3/Lab3/Debug/Lab3.lss
@@ -1,5 +1,5 @@
 
-AVRASM ver. 2.2.8  F:\AVR\Projects\Lab3\Lab3\main.asm Thu Dec 16 20:57:45 2021
+AVRASM ver. 2.2.8  F:\AVR\Projects\Lab3\Lab3\main.asm Wed Dec 22 18:52:34 2021
 
 [builtin](2): Including file 'F:/AVR\7.0\Packs\atmel\ATmega_DFP\1.6.364\avrasm\inc\m328Pdef.inc'
 [builtin](2): Including file 'F:/AVR\7.0\Packs\atmel\ATmega_DFP\1.6.364\avrasm\inc\m328Pdef.inc'
@@ -998,7 +998,7 @@ AVRASM ver. 2.2.8  F:\AVR\Projects\Lab3\Lab3\main.asm Thu Dec 16 20:57:45 2021
                                  	.equ	FN_SET	= 0b00100000 ; 001DL NF--
                                  	; DL:4/8 bit data N:num diplay lines F:Character font
                                  
-                                 	.equ	DISP_ON	= 0b00001111 ;0000 1DCB
+                                 	.equ	DISP_ON	= 0b00001100 ;0000 1DCB
                                  	; D:On/off C:Show cursor B:Cursor blink
                                  
                                  	.equ	LCD_CLR	= 0b00000001 ; Clears Display
@@ -1011,7 +1011,7 @@ AVRASM ver. 2.2.8  F:\AVR\Projects\Lab3\Lab3\main.asm Thu Dec 16 20:57:45 2021
                                  	.equ	SECOND_TICKS = 62500 - 1		; @ 16/256 MHz
                                  
                                  	.org	$0000
-000000 940c 0025                 	jmp		START
+000000 940c 002f                 	jmp		START
                                  
                                  	.org	OC1Aaddr
 000016 940c 0018                 	jmp		DO_TICK
@@ -1022,89 +1022,105 @@ AVRASM ver. 2.2.8  F:\AVR\Projects\Lab3\Lab3\main.asm Thu Dec 16 20:57:45 2021
 000019 b70f                      	in		r16, SREG
 00001a 930f                      	push	r16
                                  
-00001b 940e 0072                 	call	TIME_TICK
-00001d 940e 00a7                 	call	TIME_FORMAT
-00001f 940e 00c2                 	call	LINE_PRINT
-                                 
-000021 910f                      	pop		r16
-000022 bf0f                      	out		SREG, r16
-000023 910f                      	pop		r16
-000024 9518                      	reti
+00001b 931f                      	push	r17
+00001c 932f                      	push	r18
+00001d 933f                      	push	r19
+00001e 93cf                      	push	r28
+00001f 93df                      	push	r29
+000020 93ef                      	push	r30
+000021 93ff                      	push	r31
+                                 
+000022 940e 0083                 	call	TIME_TICK
+                                 
+000024 91ff                      	pop		r31
+000025 91ef                      	pop		r30
+000026 91df                      	pop		r29
+000027 91cf                      	pop		r28
+000028 913f                      	pop		r19
+000029 912f                      	pop		r18
+00002a 911f                      	pop		r17
+                                 
+00002b 910f                      	pop		r16
+00002c bf0f                      	out		SREG, r16
+00002d 910f                      	pop		r16
+00002e 9518                      	reti
                                  
                                  START:
                                  	; Wait for display start
-000025 940e 00d2                 	call	WAIT
-000027 940e 00d2                 	call	WAIT
-000029 940e 0037                 	call	LCD_PORT_INIT
-00002b 940e 003b                 	call	LCD_INIT
+00002f 940e 00c3                 	call	WAIT
+000031 940e 00c3                 	call	WAIT
+000033 940e 0045                 	call	LCD_PORT_INIT
+000035 940e 0049                 	call	LCD_INIT
                                  	
-00002d 940e 0063                 	call	TIME_INIT
-00002f 940e 00a7                 	call	TIME_FORMAT
-000031 940e 00c2                 	call	LINE_PRINT
+000037 940e 0071                 	call	TIME_INIT
+000039 940e 009a                 	call	TIME_FORMAT
+00003b 940e 00b5                 	call	LINE_PRINT
                                  
                                  	; Activate timer and interruption
-000033 940e 0056                 	call	TIMER1_INIT
-000035 9478                      	sei
+00003d 940e 0064                 	call	TIMER1_INIT
+00003f 9478                      	sei
                                  LOOP:
-000036 cfff                      	rjmp	LOOP
+000040 940e 009a                 	call	TIME_FORMAT
+000042 940e 00b5                 	call	LINE_PRINT
+000044 cffb                      	rjmp	LOOP
                                  
                                  ;============================================
                                  
                                  LCD_PORT_INIT:
                                  	; Set port B and D to output
-000037 ef0f                      	ldi		r16, $FF
-000038 b904                      	out		DDRB, r16
-000039 b90a                      	out		DDRD, r16
-00003a 9508                      	ret
+000045 ef0f                      	ldi		r16, $FF
+000046 b904                      	out		DDRB, r16
+000047 b90a                      	out		DDRD, r16
+000048 9508                      	ret
                                  
                                  LCD_INIT:
                                  	; --- turn backlight on
-00003b 940e 00e3                 	call	BACKLIGHT_ON
+000049 940e 00d4                 	call	BACKLIGHT_ON
                                  	; --- wait for LCD ready
-00003d 940e 00d2                 	call	WAIT
+00004b 940e 00c3                 	call	WAIT
                                  
                                  	;
                                  	; --- First initiate 4-bit mode
                                  	;
                                  
-00003f e300                      	ldi		r16, $30
-000040 940e 00f5                 	call	LCD_WRITE4
-000042 940e 00f5                 	call	LCD_WRITE4
-000044 940e 00f5                 	call	LCD_WRITE4
-000046 e200                      	ldi		r16 , $20
-000047 940e 00f5                 	call	LCD_WRITE4
+00004d e300                      	ldi		r16, $30
+00004e 940e 00e6                 	call	LCD_WRITE4
+000050 940e 00e6                 	call	LCD_WRITE4
+000052 940e 00e6                 	call	LCD_WRITE4
+000054 e200                      	ldi		r16 , $20
+000055 940e 00e6                 	call	LCD_WRITE4
                                  
                                  	;
                                  	; --- Now configure display
                                  	;
                                  
                                  	; --- Function set : 4 - bit mode , 2 line , 5 x8 font
-000049 e200                      	ldi		r16, FN_SET
-00004a 940e 00e7                 	call	LCD_COMMAND
+000057 e200                      	ldi		r16, FN_SET
+000058 940e 00d8                 	call	LCD_COMMAND
                                  
                                  	; --- Display on , cursor on , cursor blink
-00004c e00f                      	ldi		r16 , DISP_ON
-00004d 940e 00e7                 	call	LCD_COMMAND
+00005a e00c                      	ldi		r16 , DISP_ON
+00005b 940e 00d8                 	call	LCD_COMMAND
                                  
                                  	; --- Clear display
-00004f e001                      	ldi		r16, LCD_CLR
-000050 940e 00e7                 	call	LCD_COMMAND
+00005d e001                      	ldi		r16, LCD_CLR
+00005e 940e 00d8                 	call	LCD_COMMAND
                                  
                                  	; --- Entry mode : Increment cursor , no shift
-000052 e006                      	ldi		r16, E_MODE
-000053 940e 00e7                 	call	LCD_COMMAND
-000055 9508                      	ret
+000060 e006                      	ldi		r16, E_MODE
+000061 940e 00d8                 	call	LCD_COMMAND
+000063 9508                      	ret
                                  
                                  TIMER1_INIT :
-000056 e00c                      	ldi		r16 ,(1<<WGM12)|(1<<CS12)		; CTC , prescale 256
-000057 9300 0081                 	sts		TCCR1B, r16
-000059 ef04                      	ldi		r16, HIGH (SECOND_TICKS)
-00005a 9300 0089                 	sts		OCR1AH, r16
-00005c e203                      	ldi		r16, LOW (SECOND_TICKS)
-00005d 9300 0088                 	sts		OCR1AL, r16
-00005f e002                      	ldi		r16, (1<<OCIE1A)				; allow to interrupt
-000060 9300 006f                 	sts		TIMSK1, r16
-000062 9508                      	ret
+000064 e00c                      	ldi		r16 ,(1<<WGM12)|(1<<CS12)		; CTC , prescale 256
+000065 9300 0081                 	sts		TCCR1B, r16
+000067 ef04                      	ldi		r16, HIGH (SECOND_TICKS)
+000068 9300 0089                 	sts		OCR1AH, r16
+00006a e203                      	ldi		r16, LOW (SECOND_TICKS)
+00006b 9300 0088                 	sts		OCR1AL, r16
+00006d e002                      	ldi		r16, (1<<OCIE1A)				; allow to interrupt
+00006e 9300 006f                 	sts		TIMSK1, r16
+000070 9508                      	ret
                                  
                                  ;============================================
                                  ; Handles time
@@ -1115,149 +1131,105 @@ AVRASM ver. 2.2.8  F:\AVR\Projects\Lab3\Lab3\main.asm Thu Dec 16 20:57:45 2021
                                  	.cseg
                                  
                                  TIME_INIT:
-000063 e0f1                      	ldi		ZH, HIGH(TIME)
-000064 e0e0                      	ldi		ZL, LOW(TIME)
+000071 e0f1                      	ldi		ZH, HIGH(TIME)
+000072 e0e0                      	ldi		ZL, LOW(TIME)
                                  	
-000065 e000                      	ldi		r16, 0
-000066 9301                      	st		Z+, r16
-000067 e004                      	ldi		r16, 4
-000068 9301                      	st		Z+, r16
-000069 e009                      	ldi		r16, 9
-00006a 9301                      	st		Z+, r16
-00006b e005                      	ldi		r16, 5
-00006c 9301                      	st		Z+, r16
-00006d e003                      	ldi		r16, 3
-00006e 9301                      	st		Z+, r16
-00006f e002                      	ldi		r16, 2
-000070 9301                      	st		Z+, r16
+000073 e005                      	ldi		r16, 5
+000074 9301                      	st		Z+, r16
+000075 e004                      	ldi		r16, 4
+000076 9301                      	st		Z+, r16
+000077 e009                      	ldi		r16, 9
+000078 9301                      	st		Z+, r16
+000079 e005                      	ldi		r16, 5
+00007a 9301                      	st		Z+, r16
+00007b e003                      	ldi		r16, 3
+00007c 9301                      	st		Z+, r16
+00007d e002                      	ldi		r16, 2
+00007e 9301                      	st		Z+, r16
                                  	
-000071 9508                      	ret
+00007f 9508                      	ret
+                                 
+                                 TIME_LIMITS:
+000080 060a
+000081 060a
+000082 1818                      	.db 10, 6, 10, 6, 24, 24
                                  
                                  ; Increments time by 1s
                                  TIME_TICK:
-000072 e0f1                      	ldi		ZH, HIGH(TIME)
-000073 e0e0                      	ldi		ZL, LOW(TIME)
-                                 
-                                 	; SEC
-                                 	; Increment
-000074 8100                      	ld		r16, Z
-000075 9503                      	inc		r16
-000076 8300                      	st		Z, r16
-000077 300a                      	cpi		r16, 10
-000078 f569                      	brne	TIME_TICK_END
-                                 	; Set to zero
-000079 e000                      	ldi		r16, 0
-00007a 9301                      	st		Z+, r16
-                                 	; Increment
-00007b 8100                      	ld		r16, Z
-00007c 9503                      	inc		r16
-00007d 8300                      	st		Z, r16
-00007e 3006                      	cpi		r16, 6
-00007f f531                      	brne	TIME_TICK_END
-                                 	; Set to zero
-000080 e000                      	ldi		r16, 0
-000081 9301                      	st		Z+, r16
-                                 
-                                 	; MIN
-                                 	; Increment
-000082 8100                      	ld		r16, Z
-000083 9503                      	inc		r16
-000084 8300                      	st		Z, r16
-000085 300a                      	cpi		r16, 10
-000086 f4f9                      	brne	TIME_TICK_END
-                                 	; Set to zero
-000087 e000                      	ldi		r16, 0
-000088 9301                      	st		Z+, r16
-                                 	; Increment
-000089 8100                      	ld		r16, Z
-00008a 9503                      	inc		r16
-00008b 8300                      	st		Z, r16
-00008c 3006                      	cpi		r16, 6
-00008d f4c1                      	brne	TIME_TICK_END
-                                 	; Set to zero
-00008e e000                      	ldi		r16, 0
-00008f 9301                      	st		Z+, r16
+000083 e0d1                      	ldi		YH, HIGH(TIME)
+000084 e0c0                      	ldi		YL, LOW(TIME)
                                  
-                                 	; HOUR
-                                 	
-                                 	;get H
-000090 8111                      	ldd		r17, Z+1
-                                 
-                                 	; if H = 2
-000091 3012                      	cpi		r17, 2
-000092 f449                      	brne	TIME_TICK_HOUR_NOT_2x
-                                 
-000093 8100                      	ld		r16, Z
-000094 9503                      	inc		r16
-000095 8300                      	st		Z, r16
-000096 3004                      	cpi		r16, 4
-000097 f471                      	brne	TIME_TICK_END
-000098 e000                      	ldi		r16, 0
-000099 9301                      	st		Z+, r16
-00009a 8300                      	st		Z, r16
-00009b c00a                      	rjmp	TIME_TICK_END
-                                 
-                                 	; else
-                                 TIME_TICK_HOUR_NOT_2x:
-                                 	; Increment
-00009c 8100                      	ld		r16, Z
-00009d 9503                      	inc		r16
-00009e 8300                      	st		Z, r16
-00009f 300a                      	cpi		r16, 10
-0000a0 f429                      	brne	TIME_TICK_END
-                                 	; Set to zero
-0000a1 e000                      	ldi		r16, 0
-0000a2 9301                      	st		Z+, r16
-                                 	; Increment
-0000a3 8100                      	ld		r16, Z
-0000a4 9503                      	inc		r16
-0000a5 8300                      	st		Z, r16
-                                 
-                                 TIME_TICK_END:
-0000a6 9508                      	ret
+000085 e0f1                      	ldi		ZH, HIGH(TIME_LIMITS*2)
+000086 e0e0                      	ldi		ZL, LOW(TIME_LIMITS*2)
+                                 
+                                 TIME_TICK_LOOP:
+000087 8108                      	ld		r16, Y
+                                 
+000088 9503                      	inc		r16
+000089 9115                      	lpm		r17, Z+
                                  
+00008a 3118                      	cpi		r17, 24
+00008b f029                      	breq	TIME_TICK_24		; branch if on Hour
+                                 	
+00008c 1701                      	cp		r16, r17
+00008d f451                      	brne	TIME_TICK_LOOP_END
+00008e e000                      	ldi		r16, 0
+00008f 9309                      	st		Y+, r16
+000090 cff6                      	rjmp	TIME_TICK_LOOP
+                                 
+                                 TIME_TICK_24:
+000091 3004                      	cpi		r16, 4
+000092 f429                      	brne	TIME_TICK_LOOP_END
+000093 8119                      	ldd		r17, Y+1
+000094 3012                      	cpi		r17, 2
+000095 f411                      	brne	TIME_TICK_LOOP_END
+000096 e000                      	ldi		r16, 0
+000097 9309                      	st		Y+, r16
+                                 
+                                 TIME_TICK_LOOP_END:
+000098 8308                      	st		Y, r16
+000099 9508                      	ret
                                  
                                  TIME_FORMAT:
-0000a7 e0f1                      	ldi		ZH, HIGH(TIME + 6)
-0000a8 e0e6                      	ldi		ZL, LOW(TIME + 6)
+00009a e0f1                      	ldi		ZH, HIGH(TIME + 6)
+00009b e0e6                      	ldi		ZL, LOW(TIME + 6)
                                  	
-0000a9 e0d1                      	ldi		YH, HIGH(LINE)
-0000aa e0c6                      	ldi		YL, LOW(LINE)
+00009c e0d1                      	ldi		YH, HIGH(LINE)
+00009d e0c6                      	ldi		YL, LOW(LINE)
                                  	
-0000ab 940e 00b8                 	call	TIME_FORMAT_DIGIT	; sec
-0000ad 940e 00bf                 	call	TIME_FORMAT_COLON
-0000af 940e 00b8                 	call	TIME_FORMAT_DIGIT	; min
-0000b1 940e 00bf                 	call	TIME_FORMAT_COLON
-0000b3 940e 00b8                 	call	TIME_FORMAT_DIGIT	; hour
+00009e 940e 00ab                 	call	TIME_FORMAT_DIGIT	; sec
+0000a0 940e 00b2                 	call	TIME_FORMAT_COLON
+0000a2 940e 00ab                 	call	TIME_FORMAT_DIGIT	; min
+0000a4 940e 00b2                 	call	TIME_FORMAT_COLON
+0000a6 940e 00ab                 	call	TIME_FORMAT_DIGIT	; hour
                                  
-0000b5 e000                      	ldi		r16, $00			; Mark end
-0000b6 8308                      	st		Y, r16
+0000a8 e000                      	ldi		r16, $00			; Mark end
+0000a9 8308                      	st		Y, r16
                                  
-0000b7 9508                      	ret
+0000aa 9508                      	ret
                                  
                                  TIME_FORMAT_DIGIT:
-0000b8 9102                      	ld		r16, -Z
-0000b9 6300                      	ori		r16, 0b00110000
-0000ba 9309                      	st		Y+, r16
-0000bb 9102                      	ld		r16, -Z
-0000bc 6300                      	ori		r16, 0b00110000
-0000bd 9309                      	st		Y+, r16
-0000be 9508                      	ret
+0000ab 9102                      	ld		r16, -Z
+0000ac 6300                      	ori		r16, 0b00110000
+0000ad 9309                      	st		Y+, r16
+0000ae 9102                      	ld		r16, -Z
+0000af 6300                      	ori		r16, 0b00110000
+0000b0 9309                      	st		Y+, r16
+0000b1 9508                      	ret
                                  
                                  TIME_FORMAT_COLON:
-0000bf e30a                      	ldi		r16, $3A
-0000c0 9309                      	st		Y+, r16
-0000c1 9508                      	ret
+0000b2 e30a                      	ldi		r16, $3A
+0000b3 9309                      	st		Y+, r16
+0000b4 9508                      	ret
                                  
                                  ;============================================
                                  
                                  LINE_PRINT:
-0000c2 940e 00df                 	call	LCD_ERASE
-0000c4 940e 00db                 	call	LCD_HOME
-0000c6 e0f1                      	ldi		ZH, HIGH(LINE)
-0000c7 e0e6                      	ldi		ZL, LOW(LINE)
-0000c8 940e 00cb                 	call	LCD_PRINT
-0000ca 9508                      	ret
+0000b5 940e 00cc                 	call	LCD_HOME
+0000b7 e0f1                      	ldi		ZH, HIGH(LINE)
+0000b8 e0e6                      	ldi		ZL, LOW(LINE)
+0000b9 940e 00bc                 	call	LCD_PRINT
+0000bb 9508                      	ret
                                  
                                  	.dseg
                                  LINE:
@@ -1265,81 +1237,81 @@ AVRASM ver. 2.2.8  F:\AVR\Projects\Lab3\Lab3\main.asm Thu Dec 16 20:57:45 2021
                                  	.cseg
                                  
                                  LCD_PRINT:
-0000cb 9101                      	ld		r16, Z+
-0000cc 3000                      	cpi		r16, 0
-0000cd f019                      	breq	LCD_PRINT_END
-0000ce 940e 00eb                 	call	LCD_ASCII
-0000d0 cffa                      	rjmp	LCD_PRINT
+0000bc 9101                      	ld		r16, Z+
+0000bd 3000                      	cpi		r16, 0
+0000be f019                      	breq	LCD_PRINT_END
+0000bf 940e 00dc                 	call	LCD_ASCII
+0000c1 cffa                      	rjmp	LCD_PRINT
                                  LCD_PRINT_END:
-0000d1 9508                      	ret
+0000c2 9508                      	ret
                                  
                                  ;============================================
                                  
                                  ; Wait ~16ms
                                  WAIT:
-0000d2 938f                      	push	r24
-0000d3 939f                      	push	r25
-0000d4 e080                      	ldi		r24,LOW(0)
-0000d5 e090                      	ldi		r25,HIGH(0)
+0000c3 938f                      	push	r24
+0000c4 939f                      	push	r25
+0000c5 e080                      	ldi		r24,LOW(0)
+0000c6 e090                      	ldi		r25,HIGH(0)
                                  WAIT_1:
-0000d6 9701                      	sbiw	r24, 1
-0000d7 f7f1                      	brne	WAIT_1
-0000d8 919f                      	pop		r25
-0000d9 918f                      	pop		r24
-0000da 9508                      	ret
+0000c7 9701                      	sbiw	r24, 1
+0000c8 f7f1                      	brne	WAIT_1
+0000c9 919f                      	pop		r25
+0000ca 918f                      	pop		r24
+0000cb 9508                      	ret
                                  
                                  ;============================================
                                  ; Methods to send commands to display
                                  
                                  ; Moves text cursor to top left
                                  LCD_HOME:
-0000db e002                      	ldi		r16, R_HOME
-0000dc 940e 00e7                 	call	LCD_COMMAND
-0000de 9508                      	ret
+0000cc e002                      	ldi		r16, R_HOME
+0000cd 940e 00d8                 	call	LCD_COMMAND
+0000cf 9508                      	ret
                                  
                                  ; Clears LCD dispaly
                                  LCD_ERASE:
-0000df e001                      	ldi		r16, LCD_CLR
-0000e0 940e 00e7                 	call	LCD_COMMAND
-0000e2 9508                      	ret
+0000d0 e001                      	ldi		r16, LCD_CLR
+0000d1 940e 00d8                 	call	LCD_COMMAND
+0000d3 9508                      	ret
                                  
                                  BACKLIGHT_ON:
-0000e3 9a2a                      	sbi		PORTB, BLGT
-0000e4 9508                      	ret
+0000d4 9a2a                      	sbi		PORTB, BLGT
+0000d5 9508                      	ret
                                  
                                  BACKLIGHT_OFF:
-0000e5 982a                      	cbi		PORTB, BLGT
-0000e6 9508                      	ret
+0000d6 982a                      	cbi		PORTB, BLGT
+0000d7 9508                      	ret
                                  
                                  ;============================================
                                  ; Methods for sending data to display
                                  
                                  ; Sends command in r16
                                  LCD_COMMAND:
-0000e7 9828                      	cbi		PORTB, RS	; s�tt RS r�tt = 0
-0000e8 940e 00ef                 	call	LCD_WRITE8
-0000ea 9508                      	ret
+0000d8 9828                      	cbi		PORTB, RS	; s�tt RS r�tt = 0
+0000d9 940e 00e0                 	call	LCD_WRITE8
+0000db 9508                      	ret
                                  
                                  ; Sends ASCII char in r16
                                  LCD_ASCII:
-0000eb 9a28                      	sbi		PORTB, RS	; s�tt RS r�tt = 1
-0000ec 940e 00ef                 	call	LCD_WRITE8
-0000ee 9508                      	ret
+0000dc 9a28                      	sbi		PORTB, RS	; s�tt RS r�tt = 1
+0000dd 940e 00e0                 	call	LCD_WRITE8
+0000df 9508                      	ret
                                  
                                  ; Writes byte to display in two nibbles
                                  LCD_WRITE8:
-0000ef 940e 00f5                 	call	LCD_WRITE4
-0000f1 9502                      	swap	r16			; Switch high/low nibble
-0000f2 940e 00f5                 	call	LCD_WRITE4
-0000f4 9508                      	ret
+0000e0 940e 00e6                 	call	LCD_WRITE4
+0000e2 9502                      	swap	r16			; Switch high/low nibble
+0000e3 940e 00e6                 	call	LCD_WRITE4
+0000e5 9508                      	ret
                                  
                                  ; Writes nible to display
                                  LCD_WRITE4:
-0000f5 9a29                      	sbi		PORTB, E
-0000f6 b90b                      	out		PORTD, r16
-0000f7 9829                      	cbi		PORTB, E	; Send
-0000f8 940e 00d2                 	call	WAIT
-0000fa 9508                      	ret
+0000e6 9a29                      	sbi		PORTB, E
+0000e7 b90b                      	out		PORTD, r16
+0000e8 9829                      	cbi		PORTB, E	; Send
+0000e9 940e 00c3                 	call	WAIT
+0000eb 9508                      	ret
 
 
 RESOURCE USE INFORMATION
@@ -1357,39 +1329,39 @@ counted separately from r26..r31 here.
 .dseg memory usage only counts static data declared with .byte
 
 "ATmega328P" register use summary:
-x  :   0 y  :   4 z  :  31 r0 :   0 r1 :   0 r2 :   0 r3 :   0 r4 :   0 
+x  :   0 y  :   9 z  :  10 r0 :   0 r1 :   0 r2 :   0 r3 :   0 r4 :   0 
 r5 :   0 r6 :   0 r7 :   0 r8 :   0 r9 :   0 r10:   0 r11:   0 r12:   0 
-r13:   0 r14:   0 r15:   0 r16:  91 r17:   2 r18:   0 r19:   0 r20:   0 
-r21:   0 r22:   0 r23:   0 r24:   4 r25:   3 r26:   0 r27:   0 r28:   1 
-r29:   1 r30:   4 r31:   4 
-Registers used: 10 out of 35 (28.6%)
+r13:   0 r14:   0 r15:   0 r16:  60 r17:   7 r18:   2 r19:   2 r20:   0 
+r21:   0 r22:   0 r23:   0 r24:   4 r25:   3 r26:   0 r27:   0 r28:   4 
+r29:   4 r30:   6 r31:   6 
+Registers used: 12 out of 35 (34.3%)
 
 "ATmega328P" instruction use summary:
 .lds  :   0 .sts  :   0 adc   :   0 add   :   0 adiw  :   0 and   :   0 
 andi  :   0 asr   :   0 bclr  :   0 bld   :   0 brbc  :   0 brbs  :   0 
-brcc  :   0 brcs  :   0 break :   0 breq  :   1 brge  :   0 brhc  :   0 
+brcc  :   0 brcs  :   0 break :   0 breq  :   2 brge  :   0 brhc  :   0 
 brhs  :   0 brid  :   0 brie  :   0 brlo  :   0 brlt  :   0 brmi  :   0 
-brne  :   8 brpl  :   0 brsh  :   0 brtc  :   0 brts  :   0 brvc  :   0 
-brvs  :   0 bset  :   0 bst   :   0 call  :  37 cbi   :   3 cbr   :   0 
+brne  :   4 brpl  :   0 brsh  :   0 brtc  :   0 brts  :   0 brvc  :   0 
+brvs  :   0 bset  :   0 bst   :   0 call  :  36 cbi   :   3 cbr   :   0 
 clc   :   0 clh   :   0 cli   :   0 cln   :   0 clr   :   0 cls   :   0 
-clt   :   0 clv   :   0 clz   :   0 com   :   0 cp    :   0 cpc   :   0 
-cpi   :   8 cpse  :   0 dec   :   0 eor   :   0 fmul  :   0 fmuls :   0 
-fmulsu:   0 icall :   0 ijmp  :   0 in    :   1 inc   :   7 jmp   :   2 
-ld    :  10 ldd   :   1 ldi   :  39 lds   :   0 lpm   :   0 lsl   :   0 
+clt   :   0 clv   :   0 clz   :   0 com   :   0 cp    :   1 cpc   :   0 
+cpi   :   4 cpse  :   0 dec   :   0 eor   :   0 fmul  :   0 fmuls :   0 
+fmulsu:   0 icall :   0 ijmp  :   0 in    :   1 inc   :   1 jmp   :   2 
+ld    :   4 ldd   :   1 ldi   :  37 lds   :   0 lpm   :   1 lsl   :   0 
 lsr   :   0 mov   :   0 movw  :   0 mul   :   0 muls  :   0 mulsu :   0 
-neg   :   0 nop   :   0 or    :   0 ori   :   2 out   :   4 pop   :   4 
-push  :   4 rcall :   0 ret   :  19 reti  :   1 rjmp  :   3 rol   :   0 
+neg   :   0 nop   :   0 or    :   0 ori   :   2 out   :   4 pop   :  11 
+push  :  11 rcall :   0 ret   :  19 reti  :   1 rjmp  :   3 rol   :   0 
 ror   :   0 sbc   :   0 sbci  :   0 sbi   :   3 sbic  :   0 sbis  :   0 
 sbiw  :   1 sbr   :   0 sbrc  :   0 sbrs  :   0 sec   :   0 seh   :   0 
 sei   :   1 sen   :   0 ser   :   0 ses   :   0 set   :   0 sev   :   0 
-sez   :   0 sleep :   0 spm   :   0 st    :  24 std   :   0 sts   :   4 
+sez   :   0 sleep :   0 spm   :   0 st    :  13 std   :   0 sts   :   4 
 sub   :   0 subi  :   0 swap  :   1 tst   :   0 wdr   :   0 
-Instructions used: 24 out of 113 (21.2%)
+Instructions used: 26 out of 113 (23.0%)
 
 "ATmega328P" memory use summary [bytes]:
 Segment   Begin    End      Code   Data   Used    Size   Use%
 ---------------------------------------------------------------
-[.cseg] 0x000000 0x0001f6    462      0    462   32768   1.4%
+[.cseg] 0x000000 0x0001d8    426      6    432   32768   1.3%
 [.dseg] 0x000100 0x000117      0     23     23    2048   1.1%
 [.eseg] 0x000000 0x000000      0      0      0    1024   0.0%
 
diff --git a/Lab3/Lab3/Debug/Lab3.map b/Lab3/Lab3/Debug/Lab3.map
index b6b4ed9..07b481b 100644
--- a/Lab3/Lab3/Debug/Lab3.map
+++ b/Lab3/Lab3/Debug/Lab3.map
@@ -1,5 +1,5 @@
 
-AVRASM ver. 2.2.8  F:\AVR\Projects\Lab3\Lab3\main.asm Thu Dec 16 20:57:45 2021
+AVRASM ver. 2.2.8  F:\AVR\Projects\Lab3\Lab3\main.asm Wed Dec 22 18:52:34 2021
 
 
 EQU  SIGNATURE_000 0000001e
@@ -699,36 +699,38 @@ EQU  BLGT         00000002
 EQU  E            00000001
 EQU  RS           00000000
 EQU  FN_SET       00000020
-EQU  DISP_ON      0000000f
+EQU  DISP_ON      0000000c
 EQU  LCD_CLR      00000001
 EQU  E_MODE       00000006
 EQU  R_HOME       00000002
 EQU  SECOND_TICKS 0000f423
-CSEG START        00000025
+CSEG START        0000002f
 CSEG DO_TICK      00000018
-CSEG TIME_TICK    00000072
-CSEG TIME_FORMAT  000000a7
-CSEG LINE_PRINT   000000c2
-CSEG WAIT         000000d2
-CSEG LCD_PORT_INIT 00000037
-CSEG LCD_INIT     0000003b
-CSEG TIME_INIT    00000063
-CSEG TIMER1_INIT  00000056
-CSEG LOOP         00000036
-CSEG BACKLIGHT_ON 000000e3
-CSEG LCD_WRITE4   000000f5
-CSEG LCD_COMMAND  000000e7
+CSEG TIME_TICK    00000083
+CSEG WAIT         000000c3
+CSEG LCD_PORT_INIT 00000045
+CSEG LCD_INIT     00000049
+CSEG TIME_INIT    00000071
+CSEG TIME_FORMAT  0000009a
+CSEG LINE_PRINT   000000b5
+CSEG TIMER1_INIT  00000064
+CSEG LOOP         00000040
+CSEG BACKLIGHT_ON 000000d4
+CSEG LCD_WRITE4   000000e6
+CSEG LCD_COMMAND  000000d8
 DSEG TIME         00000100
-CSEG TIME_TICK_END 000000a6
-CSEG TIME_TICK_HOUR_NOT_2x 0000009c
+CSEG TIME_LIMITS  00000080
+CSEG TIME_TICK_LOOP 00000087
+CSEG TIME_TICK_24 00000091
+CSEG TIME_TICK_LOOP_END 00000098
 DSEG LINE         00000106
-CSEG TIME_FORMAT_DIGIT 000000b8
-CSEG TIME_FORMAT_COLON 000000bf
-CSEG LCD_ERASE    000000df
-CSEG LCD_HOME     000000db
-CSEG LCD_PRINT    000000cb
-CSEG LCD_PRINT_END 000000d1
-CSEG LCD_ASCII    000000eb
-CSEG WAIT_1       000000d6
-CSEG BACKLIGHT_OFF 000000e5
-CSEG LCD_WRITE8   000000ef
+CSEG TIME_FORMAT_DIGIT 000000ab
+CSEG TIME_FORMAT_COLON 000000b2
+CSEG LCD_HOME     000000cc
+CSEG LCD_PRINT    000000bc
+CSEG LCD_PRINT_END 000000c2
+CSEG LCD_ASCII    000000dc
+CSEG WAIT_1       000000c7
+CSEG LCD_ERASE    000000d0
+CSEG BACKLIGHT_OFF 000000d6
+CSEG LCD_WRITE8   000000e0
diff --git a/Lab3/Lab3/Debug/Lab3.obj b/Lab3/Lab3/Debug/Lab3.obj
index 32d99692a1b87f454f575987ccbcbbe005d519bf..267f86bb450466a11f0021f9edb48d55c0b8826e 100644
GIT binary patch
literal 2072
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

literal 2207
zcmZQz;IL$1V36WuatsSn@K4H0O)gPz%gjk-U|?XF!o$EI!@$76$e;>gh=D}p85kJE
z86+4OKn#h={0t1r3=9mC+xZz7R6s_7L{u3V7^J80F)*kzfOHl?7_uM{4F(1VIfms7
z3?PO)NJNu?fkA=c5Ca2<p*WGBfkB&rfkA0MKLdjf0|SFHNJN)`fk9=e1OtN}0|SF9
zNS6@<1A`jFB?bl%Lmeby%m6a<5(5K>p$QT(VPIg;VlZc505P;dBBl%=L#-JYKnz`w
zh&cnu&}0UXG6sE+hy?=!g8|5eAci4G1QbL@AQyrd#vl<J29Tj)3=ANK>68iv23rOO
z2D9`385ryt7#Pgo^D{8GGB7Y$>||kJaARO#u-wVTz~Iinz+g3%gMq<=fq}sqWR4F5
z$cV=b3?POrNW_nUfx!;sFA&52F#`ib2m=Fy14t^Afq}u1;VT0Jh~Weh31eVja0ZEh
z7%m`@a0ZaYUl|xc47W!N3=9zr3=HldsYnKp#a|g1KnzciR00D7gBM6Dk%581o8dVF
z1Bl`CfS-XOg@J*=7bFEr34S0c5X1igBLhPQ0|P?<NGg+ofguni1!4p}U}Ip&VPIeg
z21(_D-Tj<_0mKLec{z`Pfg$Vx4+BFX0|P_&WCjL?BCz8cA&kiPEDQ|A3=9lWAgK}t
z28L*cP6h@LBjyn^14AhT14ArGs*HhwA&#MgfdRybf561RP|m=>kN}dZU;ud_pMe3y
zNCH_}$-uyn{NN)4Lkj}~L&}2(3=FLd3=F9c7#JAZ85kJSCNnaCjABTCz`_8sjv)gi
z(#62Qkoka<fuWm$fguYd(!;>Oko|y_fuWayfguMZ(#OESko$m{fuWy)fgukhGJ%1C
zAs^(Pi3|)31t5`03=9l~AZJVg`4;4i84L^z#UN+QWME(@X=Gqvn9IPxP&$>Ffngp4
z14CIe0|Uc+1_p+511<)J1q=)f6<;$M7#1=xFjRuvyqJN3p$cU35(Wl_YLND23=9l4
zAnnT;7#M0n+E*|zFw_~aF)*xTU|^{KYRJH_ih+Tl0i=Bm0|P@NNc&m_28Je(_Kge-
z49y_zn-~}vT0q)2GcYi;f^6Tyz`)S<<tGEfR#0Gpv~Oo%VCVp8-@(AZ&<WDMi-Ccm
z3#5HF0|P@hNc$cJ28JGx?Ryy*7<#`PWMJ6Gz`)Q4(tdz}fuSFy{U8Ga!-Pgb28Lq{
z3=9(ugcul3GB7Yq`r^sJaEgI}VKT_%Goa!JWb#=C28O91lg}|QFibOGVPH7Vz`!v5
zOCbZp1qKF&86cA{GB7aA1ett^fq`KbNbzL`28P)OxEL6&FfcI80U3A`6xJXEZ!s`1
z%mb;p4GL?JPwy}=Ff90@$-r=zfq`Km$iVvy3=E4v27)+?LE1sNWeG?-C_^p<X@A1N
zz_1Jyxz8CG7?y(~_ca3p!-@yb7#Q9#FfgoqaFK!G9RmZyst3my7~V55FsugUi;oNp
z3~Ly6Fff1^Ye6EP7#JAVG3;kx05R5sL_RYxFl+#+0Wmg$M7}UEFl+*;0Wmg%M7}aG
zFl+&-0Wr3MocW!Bfni%S2Lr<o1_p-hAcy^8U|`rWk%@ufF9QR^&SVA#hJOqU47(<C
zGBEsSU|`rik%@s3RLt*5W?*0hvGz{pWME`sU|`rcm4ktinSp^}|6?u&Mm7cph65le
zb_NE9gCHpm1_p*hQ}`Gdc^McO4l~?`Fphvk_!t-%jxyY4U<5IaJ^0AL$j`vQaQwkD
z21Wq}28I(LHG&MFC_l}>2x6Q987RcSz;JpZBLkxp0|Ubu0|o|0X$A&{vmYcG7(o@#
zIgl<{22k9;W?%#{E}Z|xz$nMSz;F?yU4emt;nL)O21Ydo28PR%=QA*Z>YXbO8W<Qs
zwanEA6BrmlmCLp1j0}vR%H{g^j|_~U%H_ty`3#Jp%H`(7eg;NR<#G#Tpgscw!|ex5
z42)(B3=DTbwu7pPyA0167(tACAT^-c;r;_g21Za7@BpL+R0TW)sR1z_fz;SBFfcrx
zrNzML$iTqx1SI0bz`*cyh86=OsCIY;5&_i?&u3^bF#0kuFuVYn11kAnGQ4MC1TkKL
z)c7+nFub0n!N3^Iz`*bZqy|(eyalNNG2VgHfGUOeASqDs{(<2u10#s>aVir7V-y1e
z!zYkbGy?;}XOI+#@dczShJk_M>nu$MMo?YwZ6`MaBd7}aK0}j%F^PeJ;Ri?;DCzuU
zxWvE+V*CQ>N?~xbig64JiU}yn2Q?XrV|)^mj3GpBVrHIRVsS2mo0UFDiMgIZOh96C
zc5zH%Np5ORjAKY{YI<V4i(5d9p`MwZv6)FsVp&mQac)dzUUE#Xv5`eUN@|*3W?nJ_
F0|5KAx10a~

diff --git a/Lab3/Lab3/Debug/Lab3.tmp b/Lab3/Lab3/Debug/Lab3.tmp
index a770124..d9663b2 100644
--- a/Lab3/Lab3/Debug/Lab3.tmp
+++ b/Lab3/Lab3/Debug/Lab3.tmp
@@ -22,33 +22,35 @@
   <FILE>Lab3.lss</FILE>
  </OUTPUT_FILES>
  <LABELS>
-  <START><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>48</LINE></START>
+  <START><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>62</LINE></START>
   <DO_TICK><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>34</LINE></DO_TICK>
-  <TIME_TICK><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>151</LINE></TIME_TICK>
-  <TIME_FORMAT><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>234</LINE></TIME_FORMAT>
-  <LINE_PRINT><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>268</LINE></LINE_PRINT>
-  <WAIT><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>293</LINE></WAIT>
-  <LCD_PORT_INIT><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>67</LINE></LCD_PORT_INIT>
-  <LCD_INIT><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>74</LINE></LCD_INIT>
-  <TIME_INIT><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>131</LINE></TIME_INIT>
-  <TIMER1_INIT><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>112</LINE></TIMER1_INIT>
-  <LOOP><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>62</LINE></LOOP>
-  <BACKLIGHT_ON><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>320</LINE></BACKLIGHT_ON>
-  <LCD_WRITE4><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>351</LINE></LCD_WRITE4>
-  <LCD_COMMAND><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>332</LINE></LCD_COMMAND>
-  <TIME><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>127</LINE></TIME>
-  <TIME_TICK_END><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>230</LINE></TIME_TICK_END>
-  <TIME_TICK_HOUR_NOT_2x><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>215</LINE></TIME_TICK_HOUR_NOT_2x>
-  <LINE><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>277</LINE></LINE>
-  <TIME_FORMAT_DIGIT><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>252</LINE></TIME_FORMAT_DIGIT>
-  <TIME_FORMAT_COLON><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>261</LINE></TIME_FORMAT_COLON>
-  <LCD_ERASE><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>315</LINE></LCD_ERASE>
-  <LCD_HOME><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>309</LINE></LCD_HOME>
-  <LCD_PRINT><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>281</LINE></LCD_PRINT>
-  <LCD_PRINT_END><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>287</LINE></LCD_PRINT_END>
-  <LCD_ASCII><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>338</LINE></LCD_ASCII>
-  <WAIT_1><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>298</LINE></WAIT_1>
-  <BACKLIGHT_OFF><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>324</LINE></BACKLIGHT_OFF>
-  <LCD_WRITE8><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>344</LINE></LCD_WRITE8>
+  <TIME_TICK><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>170</LINE></TIME_TICK>
+  <WAIT><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>263</LINE></WAIT>
+  <LCD_PORT_INIT><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>83</LINE></LCD_PORT_INIT>
+  <LCD_INIT><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>90</LINE></LCD_INIT>
+  <TIME_INIT><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>147</LINE></TIME_INIT>
+  <TIME_FORMAT><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>205</LINE></TIME_FORMAT>
+  <LINE_PRINT><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>239</LINE></LINE_PRINT>
+  <TIMER1_INIT><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>128</LINE></TIMER1_INIT>
+  <LOOP><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>76</LINE></LOOP>
+  <BACKLIGHT_ON><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>290</LINE></BACKLIGHT_ON>
+  <LCD_WRITE4><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>321</LINE></LCD_WRITE4>
+  <LCD_COMMAND><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>302</LINE></LCD_COMMAND>
+  <TIME><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>143</LINE></TIME>
+  <TIME_LIMITS><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>166</LINE></TIME_LIMITS>
+  <TIME_TICK_LOOP><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>177</LINE></TIME_TICK_LOOP>
+  <TIME_TICK_24><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>192</LINE></TIME_TICK_24>
+  <TIME_TICK_LOOP_END><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>201</LINE></TIME_TICK_LOOP_END>
+  <LINE><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>247</LINE></LINE>
+  <TIME_FORMAT_DIGIT><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>223</LINE></TIME_FORMAT_DIGIT>
+  <TIME_FORMAT_COLON><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>232</LINE></TIME_FORMAT_COLON>
+  <LCD_HOME><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>279</LINE></LCD_HOME>
+  <LCD_PRINT><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>251</LINE></LCD_PRINT>
+  <LCD_PRINT_END><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>257</LINE></LCD_PRINT_END>
+  <LCD_ASCII><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>308</LINE></LCD_ASCII>
+  <WAIT_1><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>268</LINE></WAIT_1>
+  <LCD_ERASE><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>285</LINE></LCD_ERASE>
+  <BACKLIGHT_OFF><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>294</LINE></BACKLIGHT_OFF>
+  <LCD_WRITE8><FILE>F:\AVR\Projects\Lab3\Lab3\main.asm</FILE><LINE>314</LINE></LCD_WRITE8>
  </LABELS>
 </ASSEMBLER_INFO>
diff --git a/Lab3/Lab3/Lab3.asmproj b/Lab3/Lab3/Lab3.asmproj
index 60d379a..b48f78a 100644
--- a/Lab3/Lab3/Lab3.asmproj
+++ b/Lab3/Lab3/Lab3.asmproj
@@ -41,30 +41,42 @@
       </ToolNumber>
       <ToolName xmlns="">Simulator</ToolName>
     </com_atmel_avrdbg_tool_simulator>
+    <AsfFrameworkConfig>
+      <framework-data xmlns="">
+  <options />
+  <configurations />
+  <files />
+  <documentation help="" />
+  <offline-documentation help="" />
+  <dependencies>
+    <content-extension eid="atmel.asf" uuidref="Atmel.ASF" version="3.49.1" />
+  </dependencies>
+</framework-data>
+    </AsfFrameworkConfig>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
     <ToolchainSettings>
       <AvrAssembler>
-  <avrasm.assembler.general.AdditionalIncludeDirectories>
-    <ListValues>
-      <Value>%24(PackRepoDir)\atmel\ATmega_DFP\1.6.364\avrasm\inc</Value>
-    </ListValues>
-  </avrasm.assembler.general.AdditionalIncludeDirectories>
-  <avrasm.assembler.general.IncludeFile>m328Pdef.inc</avrasm.assembler.general.IncludeFile>
-</AvrAssembler>
+        <avrasm.assembler.general.AdditionalIncludeDirectories>
+          <ListValues>
+            <Value>%24(PackRepoDir)\atmel\ATmega_DFP\1.6.364\avrasm\inc</Value>
+          </ListValues>
+        </avrasm.assembler.general.AdditionalIncludeDirectories>
+        <avrasm.assembler.general.IncludeFile>m328Pdef.inc</avrasm.assembler.general.IncludeFile>
+      </AvrAssembler>
     </ToolchainSettings>
     <OutputType>Executable</OutputType>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
     <ToolchainSettings>
       <AvrAssembler>
-  <avrasm.assembler.general.AdditionalIncludeDirectories>
-    <ListValues>
-      <Value>%24(PackRepoDir)\atmel\ATmega_DFP\1.6.364\avrasm\inc</Value>
-    </ListValues>
-  </avrasm.assembler.general.AdditionalIncludeDirectories>
-  <avrasm.assembler.general.IncludeFile>m328Pdef.inc</avrasm.assembler.general.IncludeFile>
-</AvrAssembler>
+        <avrasm.assembler.general.AdditionalIncludeDirectories>
+          <ListValues>
+            <Value>%24(PackRepoDir)\atmel\ATmega_DFP\1.6.364\avrasm\inc</Value>
+          </ListValues>
+        </avrasm.assembler.general.AdditionalIncludeDirectories>
+        <avrasm.assembler.general.IncludeFile>m328Pdef.inc</avrasm.assembler.general.IncludeFile>
+      </AvrAssembler>
     </ToolchainSettings>
   </PropertyGroup>
   <ItemGroup>
diff --git a/Lab3/Lab3/aroni616_lab3_TSIU02.asm b/Lab3/Lab3/aroni616_lab3_TSIU02.asm
index 52e7499..c2cca93 100644
--- a/Lab3/Lab3/aroni616_lab3_TSIU02.asm
+++ b/Lab3/Lab3/aroni616_lab3_TSIU02.asm
@@ -36,10 +36,14 @@ DO_TICK:
 	in		r16, SREG
 	push	r16
 
+	push	r17
+
 	call	TIME_TICK
 	call	TIME_FORMAT
 	call	LINE_PRINT
 
+	pop		r17
+
 	pop		r16
 	out		SREG, r16
 	pop		r16
diff --git a/Lab3/Lab3/main.asm b/Lab3/Lab3/main.asm
index 52e7499..7b84492 100644
--- a/Lab3/Lab3/main.asm
+++ b/Lab3/Lab3/main.asm
@@ -12,7 +12,7 @@
 	.equ	FN_SET	= 0b00100000 ; 001DL NF--
 	; DL:4/8 bit data N:num diplay lines F:Character font
 
-	.equ	DISP_ON	= 0b00001111 ;0000 1DCB
+	.equ	DISP_ON	= 0b00001100 ;0000 1DCB
 	; D:On/off C:Show cursor B:Cursor blink
 
 	.equ	LCD_CLR	= 0b00000001 ; Clears Display
@@ -36,9 +36,23 @@ DO_TICK:
 	in		r16, SREG
 	push	r16
 
+	push	r17
+	push	r18
+	push	r19
+	push	r28
+	push	r29
+	push	r30
+	push	r31
+
 	call	TIME_TICK
-	call	TIME_FORMAT
-	call	LINE_PRINT
+
+	pop		r31
+	pop		r30
+	pop		r29
+	pop		r28
+	pop		r19
+	pop		r18
+	pop		r17
 
 	pop		r16
 	out		SREG, r16
@@ -60,6 +74,8 @@ START:
 	call	TIMER1_INIT
 	sei
 LOOP:
+	call	TIME_FORMAT
+	call	LINE_PRINT
 	rjmp	LOOP
 
 ;============================================
@@ -132,7 +148,7 @@ TIME_INIT:
 	ldi		ZH, HIGH(TIME)
 	ldi		ZL, LOW(TIME)
 	
-	ldi		r16, 0
+	ldi		r16, 5
 	st		Z+, r16
 	ldi		r16, 4
 	st		Z+, r16
@@ -147,90 +163,45 @@ TIME_INIT:
 	
 	ret
 
+TIME_LIMITS:
+	.db 10, 6, 10, 6, 24, 24
+
 ; Increments time by 1s
 TIME_TICK:
-	ldi		ZH, HIGH(TIME)
-	ldi		ZL, LOW(TIME)
+	ldi		YH, HIGH(TIME)
+	ldi		YL, LOW(TIME)
 
-	; SEC
-	; Increment
-	ld		r16, Z
-	inc		r16
-	st		Z, r16
-	cpi		r16, 10
-	brne	TIME_TICK_END
-	; Set to zero
-	ldi		r16, 0
-	st		Z+, r16
-	; Increment
-	ld		r16, Z
-	inc		r16
-	st		Z, r16
-	cpi		r16, 6
-	brne	TIME_TICK_END
-	; Set to zero
-	ldi		r16, 0
-	st		Z+, r16
+	ldi		ZH, HIGH(TIME_LIMITS*2)
+	ldi		ZL, LOW(TIME_LIMITS*2)
+
+TIME_TICK_LOOP:
+	ld		r16, Y
 
-	; MIN
-	; Increment
-	ld		r16, Z
-	inc		r16
-	st		Z, r16
-	cpi		r16, 10
-	brne	TIME_TICK_END
-	; Set to zero
-	ldi		r16, 0
-	st		Z+, r16
-	; Increment
-	ld		r16, Z
 	inc		r16
-	st		Z, r16
-	cpi		r16, 6
-	brne	TIME_TICK_END
-	; Set to zero
-	ldi		r16, 0
-	st		Z+, r16
+	lpm		r17, Z+
 
-	; HOUR
+	cpi		r17, 24
+	breq	TIME_TICK_24		; branch if on Hour
 	
-	;get H
-	ldd		r17, Z+1
-
-	; if H = 2
-	cpi		r17, 2
-	brne	TIME_TICK_HOUR_NOT_2x
-
-	ld		r16, Z
-	inc		r16
-	st		Z, r16
-	cpi		r16, 4
-	brne	TIME_TICK_END
+	cp		r16, r17
+	brne	TIME_TICK_LOOP_END
 	ldi		r16, 0
-	st		Z+, r16
-	st		Z, r16
-	rjmp	TIME_TICK_END
+	st		Y+, r16
+	rjmp	TIME_TICK_LOOP
 
-	; else
-TIME_TICK_HOUR_NOT_2x:
-	; Increment
-	ld		r16, Z
-	inc		r16
-	st		Z, r16
-	cpi		r16, 10
-	brne	TIME_TICK_END
-	; Set to zero
+TIME_TICK_24:
+	cpi		r16, 4
+	brne	TIME_TICK_LOOP_END
+	ldd		r17, Y+1
+	cpi		r17, 2
+	brne	TIME_TICK_LOOP_END
 	ldi		r16, 0
-	st		Z+, r16
-	; Increment
-	ld		r16, Z
-	inc		r16
-	st		Z, r16
+	st		Y+, r16
 
-TIME_TICK_END:
+TIME_TICK_LOOP_END:
+	st		Y, r16
 	ret
 
-
 TIME_FORMAT:
 	ldi		ZH, HIGH(TIME + 6)
 	ldi		ZL, LOW(TIME + 6)
@@ -266,7 +237,6 @@ TIME_FORMAT_COLON:
 ;============================================
 
 LINE_PRINT:
-	call	LCD_ERASE
 	call	LCD_HOME
 	ldi		ZH, HIGH(LINE)
 	ldi		ZL, LOW(LINE)
diff --git a/Lab4/.vs/Lab4/v14/.atsuo b/Lab4/.vs/Lab4/v14/.atsuo
index 3dfe6952295fc725bc0ebfbf9276336cd8e0b63d..0a8dae519c8002febf6f988aafe0b2d91ac4490a 100644
GIT binary patch
delta 789
zcmZoz!`Lu^ae{#Y0}Kc-FmNz1FfcMOF#P-f|363=#NHUVo^kSj##~kh@#BdfCl@kZ
zW?^GsV3@oxNPe;b6Yt~_W`ACW|NsC02WbY;lP~hCO#Z@bASwbiNtA&BtbmJwfq{SW
zLJo0J2?hoRNvJ4D3pWD;1MlQi7G)Mb1_p+WfhCNSm~vPRcJE63xVexin2`sh2xKdW
zhM3Q;APF)bWF`-iNg$VtPF~2NjMWY{upR7BJ2r7SGx0Klbjw3c02^H*62bv88fMq#
zFCu)5o0*Ip87CiRGMro@>(9$5#{dZ|m>M2$1_p*qP>?Y&FiZ++706$7ZR$zA!XSfv
zF_9un>f)QH24ypD5^`bUA;vx)#z}lGU{4F6xQs7^g9S-o^A|oI#!XU(8F?9585kHq
z{(?IQ6cAANFf0mT+GOO6=6q%(gNSlI^CTUC%>qgv*e40Nuz<oHkpu(+z>XC{GIH`4
zfdC#*9P=X!mIwy$fKr?yk|3)z0|Nuo<e&2X9H4Xn^TFm4g+5TQJ3(R}C3Tg^_DpVc
zSDl<5B)8ewU@zk)6KBTB&ho7soJi(Q{vt0kSwLwA%$b|N=<zTvQeoR<^M_L~9+b49
Q;UmMqz`(Vc*X=VS02;^?TL1t6

delta 1076
zcmZpez}T>cae{#Y69W_oFfgz%FfcGOFfjc4|NlQol$n8nVPoKW#>xK~b6F?cTYvK2
z=0dh$Mjm+v1_m|;28RFt|NozSkxymv7iI$<E(Qh$Nd^W6Q3eKviGd1}6<AmV#TXbE
zB%lgK7#JA1C#SL~vuJ@;$gpaItlAhD%s7e3hf!*>B9lC)!L7(s_r6|d6r5bj<j2T3
zd9Hx+WCJGN$zRwmV6l~5!G|4W#{d8S`JlFdoCL%CP-pTmFfa%(Ffi~kFfa%)Ffa%+
zFffRtsaFQONk>wJfq_Alfq_Adfq_Atfq_ATfq_92WXHz9XvR%k&P<aJGZ{`U;qm7M
zhZM+DAnPEZz;hlf`$aT>hn0bWfdgs>Sh7ScghLKVVDlF-9>z&pE-c&(3=ESO3dn=~
zS)vud0}4ctGZE%$1@M44Apd}9h<VxpJRnagBALk}&A`9_i_lG6E=(*SS%l#{AsjMD
z$~S-E;bWZ4q~*i{vJRn4D}YA<-T7a%{COEbfsEk@kc*H##tL@C<e%bRyo?|@kpDn5
z#MKi1ykHl?!XGU9MdAVvC?r9V2~)}fN`#w#h@WO;WdOMb<~&xAIK$+hyr*~>K{mnl
zG>U6X{-Ni?1Bz`<BwtQ0(eIgL<P32PD22mp*j!>1!Z_JO$z!sBjs?v4%_Ta0jGLL1
z{;^LIbLIu7a8M}2^h^dtBgh80z!x!pUPe%w2SpoPv_!mTl9Iq=0UZ-?N<ejwjz1`w
zZ2qDH3Vo%65RM5C<K#wn)ye4sa+{qE_A+kLb7ABGITw_#5a#OlY%+3Y<Yg3OU|>)}
z@ujgpBELWaY4cB0W&y!=P>u%WW(Ed^S&R$}Qk!|*J~M8z`@@byYLY;!z?qKX>z}f&
T*>JCtcyBW^B6{;wxol<tmK<%h

-- 
GitLab