diff --git a/Lab3/.vs/Lab3/v14/.atsuo b/Lab3/.vs/Lab3/v14/.atsuo
index 952245bfbaee8b268e6f2d4a319162f86bd8c081..5b7bfc8b4b56c13cf2d7cdfd975b566b965a319d 100644
Binary files a/Lab3/.vs/Lab3/v14/.atsuo and b/Lab3/.vs/Lab3/v14/.atsuo differ
diff --git a/Lab3/Lab3/Debug/Lab3.hex b/Lab3/Lab3/Debug/Lab3.hex
index 447f533a60289c3a630f551857fe01fd0bce455f..40ac34043831feef37a09f3cb551eb78f625b5bb 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 a44c6df61280daaf68c3880912c2fc2bbf7a8224..fc4a6cce557c1b1984f9fee2358059000055c315 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 b6b4ed9e87d57ca1d1370b040b7be472420c0113..07b481b3427bf604b56b8a2c209ccfaef57c3284 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
Binary files a/Lab3/Lab3/Debug/Lab3.obj and b/Lab3/Lab3/Debug/Lab3.obj differ
diff --git a/Lab3/Lab3/Debug/Lab3.tmp b/Lab3/Lab3/Debug/Lab3.tmp
index a770124809b255161469164817d9b5a5eaa70e17..d9663b250ef8c40edcc78793356f76b745289007 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 60d379addc71f01463b81e98cd23887a48f979e3..b48f78ae46eb796dbdf59990944c3d161095bc8b 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 52e7499878941dfc49e7a5f18f3a1c8303174bb0..c2cca93df8ef061c6296681a3641c1512b1a0f90 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 52e7499878941dfc49e7a5f18f3a1c8303174bb0..7b844921bbf6bd0be75cfdf035de1d1d27ae4089 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
Binary files a/Lab4/.vs/Lab4/v14/.atsuo and b/Lab4/.vs/Lab4/v14/.atsuo differ