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