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 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 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