Minor Improvements

This commit is contained in:
S170H
2023-10-30 23:15:46 +01:00
parent 2878ed81b7
commit 965a5d073b
4 changed files with 56 additions and 53 deletions

Binary file not shown.

View File

@@ -1,5 +1,5 @@
AVRASM ver. 2.2.7 C:\Users\Safak\Desktop\UNI\3. Semester\53107 ARBK\Praktikumsunterlagen\ARBKVS-Praktika\P1\P1\main.asm Mon Oct 30 17:51:30 2023
AVRASM ver. 2.2.7 C:\Users\Safak\Desktop\UNI\3. Semester\53107 ARBK\Praktikumsunterlagen\ARBKVS-Praktika\P1\P1\main.asm Mon Oct 30 23:15:13 2023
[builtin](2): Including file 'C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\avrasm\inc\m328pdef.inc'
C:\Users\Safak\Desktop\UNI\3. Semester\53107 ARBK\Praktikumsunterlagen\ARBKVS-Praktika\P1\P1\main.asm(8): Including file 'C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\avrasm\inc\m328pdef.inc'
@@ -1044,53 +1044,55 @@ C:\Users\Safak\Desktop\UNI\3. Semester\53107 ARBK\Praktikumsunterlagen\ARBKVS-Pr
init:
000001 ef1f ldi r17, 0xFF
000002 b91a out DDRD, r17 ; Data direction register D (D0-D7) as output
000003 e011 ldi r17, 0x01 ; faengt mit Led D0 ein
000003 e011 ldi r17, 0x01 ; initialize D0
000004 e023 ldi r18, 0x03
000005 b924 out DDRB, r18 ; Data direction register B (B0-B1) as output
links_PD: ; Led l<>uft nach links
000006 b91b out PORTD, r17 ; D0 leutet
000007 d016 rcall delay
000008 0f11 lsl r17
000009 3010 cpi r17, 0x00
00000a f7d9 brne links_PD ; weiter nach links verschieben, ob D7 noch nicht leutet
portD_left:
000006 b91b out PORTD, r17
000007 d018 rcall delay
000008 0f11 lsl r17 ; shift left until PortB is 0x00
000009 3010 cpi r17, 0x00 ; if(r17!=0x00) links_PD
00000a f7d9 brne portD_left
00000b b91b out PORTD, r17 ; D0-D7 = 0
00000c e021 ldi r18, 0x01 ; switch to PortB
00000b b91b out PORTD, r17 ; wenn D7 erreicht, schaltet Port D aus
00000c e021 ldi r18, 0x01
00000d b925 out PORTB, r18 ; D8 leutet
00000e d00f rcall delay
00000f 0f22 lsl r18
portB_left:
00000d b925 out PORTB, r18 ; D8 = 1
00000e d011 rcall delay
00000f 0f22 lsl r18
000010 3022 cpi r18, 0x02 ; length of PortB is variable
000011 f7d9 brne portB_left
; D9 = 1 => last LED turned on
portB_right:
000012 b925 out PORTB, r18
000013 d00c rcall delay
000014 9526 lsr r18 ; turn direction
000015 3020 cpi r18, 0x00 ; shift right until PortB is 0x00
000016 f7d9 brne portB_right
000017 b925 out PORTB, r18 ; turn of PortB or rather D8 & D9
000018 e810 ldi r17, 0x80
links_PB: ; Led laeuft weiter
000010 b925 out PORTB, r18
000011 d00c rcall delay
000012 9526 lsr r18
000013 3020 cpi r18, 0x00
000014 f7d9 brne links_PB
000015 b925 out PORTB, r18
000016 e810 ldi r17, 0x80
rechts: ; Led laeuft nach rechts
000017 b91b out PORTD, r17
000018 d005 rcall delay
000019 9516 lsr r17
00001a 3011 cpi r17, 0x01 ; mit D0 vergleichen
00001b f7d9 brne rechts ; weiter nach rechts verschieben, wenn D0 noch nicht erreicht
00001c 940c 0006 jmp links_PD ; sonst l<>uft Led nach links
portD_right:
000019 b91b out PORTD, r17 ; turn on D7
00001a d005 rcall delay
00001b 9516 lsr r17
00001c 3011 cpi r17, 0x01 ; shift right until D0 is reached
00001d f7d9 brne portD_right
00001e 940c 0006 jmp portD_left ; turn direction
delay:
00001e e131 ldi r19, 17
00001f e34c ldi r20, 60
000020 ec5c ldi r21, 204
000020 e131 ldi r19, 17
000021 e34c ldi r20, 60
000022 ec5c ldi r21, 204
000021 955a L1: dec r21
000022 f7f1 brne L1
000023 954a dec r20
000024 f7e1 brne L1
000025 953a dec r19
000026 f7d1 brne L1
000023 955a L1: dec r21
000024 f7f1 brne L1
000025 954a dec r20
000026 f7e1 brne L1
000027 953a dec r19
000028 f7d1 brne L1
RESOURCE USE INFORMATION
@@ -1110,7 +1112,7 @@ counted separately from r26..r31 here.
"ATmega328P" register use summary:
x : 0 y : 0 z : 0 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: 0 r17: 11 r18: 9 r19: 2 r20: 2
r13: 0 r14: 0 r15: 0 r16: 0 r17: 11 r18: 10 r19: 2 r20: 2
r21: 2 r22: 0 r23: 0 r24: 0 r25: 0 r26: 0 r27: 0 r28: 0
r29: 0 r30: 0 r31: 0
Registers used: 5 out of 35 (14.3%)
@@ -1120,11 +1122,11 @@ Registers used: 5 out of 35 (14.3%)
andi : 0 asr : 0 bclr : 0 bld : 0 brbc : 0 brbs : 0
brcc : 0 brcs : 0 break : 0 breq : 0 brge : 0 brhc : 0
brhs : 0 brid : 0 brie : 0 brlo : 0 brlt : 0 brmi : 0
brne : 6 brpl : 0 brsh : 0 brtc : 0 brts : 0 brvc : 0
brne : 7 brpl : 0 brsh : 0 brtc : 0 brts : 0 brvc : 0
brvs : 0 bset : 0 bst : 0 call : 0 cbi : 0 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 : 3 cpse : 0 dec : 3 eor : 0 fmul : 0 fmuls : 0
cpi : 4 cpse : 0 dec : 3 eor : 0 fmul : 0 fmuls : 0
fmulsu: 0 icall : 0 ijmp : 0 in : 0 inc : 0 jmp : 1
ld : 0 ldd : 0 ldi : 8 lds : 0 lpm : 0 lsl : 2
lsr : 2 mov : 0 movw : 0 mul : 0 muls : 0 mulsu : 0
@@ -1140,7 +1142,7 @@ Instructions used: 11 out of 113 (9.7%)
"ATmega328P" memory use summary [bytes]:
Segment Begin End Code Data Used Size Use%
---------------------------------------------------------------
[.cseg] 0x000000 0x000050 80 0 80 32768 0.2%
[.cseg] 0x000000 0x000054 84 0 84 32768 0.3%
[.dseg] 0x000100 0x000100 0 0 0 2048 0.0%
[.eseg] 0x000000 0x000000 0 0 0 1024 0.0%

View File

@@ -23,10 +23,11 @@
</OUTPUT_FILES>
<LABELS>
<init><FILE>C:\Users\Safak\Desktop\UNI\3. Semester\53107 ARBK\Praktikumsunterlagen\ARBKVS-Praktika\P1\P1\main.asm</FILE><LINE>13</LINE></init>
<links_PD><FILE>C:\Users\Safak\Desktop\UNI\3. Semester\53107 ARBK\Praktikumsunterlagen\ARBKVS-Praktika\P1\P1\main.asm</FILE><LINE>21</LINE></links_PD>
<delay><FILE>C:\Users\Safak\Desktop\UNI\3. Semester\53107 ARBK\Praktikumsunterlagen\ARBKVS-Praktika\P1\P1\main.asm</FILE><LINE>52</LINE></delay>
<links_PB><FILE>C:\Users\Safak\Desktop\UNI\3. Semester\53107 ARBK\Praktikumsunterlagen\ARBKVS-Praktika\P1\P1\main.asm</FILE><LINE>34</LINE></links_PB>
<rechts><FILE>C:\Users\Safak\Desktop\UNI\3. Semester\53107 ARBK\Praktikumsunterlagen\ARBKVS-Praktika\P1\P1\main.asm</FILE><LINE>44</LINE></rechts>
<L1><FILE>C:\Users\Safak\Desktop\UNI\3. Semester\53107 ARBK\Praktikumsunterlagen\ARBKVS-Praktika\P1\P1\main.asm</FILE><LINE>57</LINE></L1>
<portD_left><FILE>C:\Users\Safak\Desktop\UNI\3. Semester\53107 ARBK\Praktikumsunterlagen\ARBKVS-Praktika\P1\P1\main.asm</FILE><LINE>21</LINE></portD_left>
<delay><FILE>C:\Users\Safak\Desktop\UNI\3. Semester\53107 ARBK\Praktikumsunterlagen\ARBKVS-Praktika\P1\P1\main.asm</FILE><LINE>54</LINE></delay>
<portB_left><FILE>C:\Users\Safak\Desktop\UNI\3. Semester\53107 ARBK\Praktikumsunterlagen\ARBKVS-Praktika\P1\P1\main.asm</FILE><LINE>30</LINE></portB_left>
<portB_right><FILE>C:\Users\Safak\Desktop\UNI\3. Semester\53107 ARBK\Praktikumsunterlagen\ARBKVS-Praktika\P1\P1\main.asm</FILE><LINE>37</LINE></portB_right>
<portD_right><FILE>C:\Users\Safak\Desktop\UNI\3. Semester\53107 ARBK\Praktikumsunterlagen\ARBKVS-Praktika\P1\P1\main.asm</FILE><LINE>46</LINE></portD_right>
<L1><FILE>C:\Users\Safak\Desktop\UNI\3. Semester\53107 ARBK\Praktikumsunterlagen\ARBKVS-Praktika\P1\P1\main.asm</FILE><LINE>59</LINE></L1>
</LABELS>
</ASSEMBLER_INFO>

View File

@@ -15,7 +15,7 @@ init:
out DDRD, r17 ; Data direction register D (D0-D7) as output
ldi r17, 0x01 ; initialize D0
ldi r18, 0x01
ldi r18, 0x03
out DDRB, r18 ; Data direction register B (B0-B1) as output
portD_left:
@@ -25,21 +25,21 @@ portD_left:
cpi r17, 0x00 ; if(r17!=0x00) links_PD
brne portD_left
out PORTD, r17 ; D0-D7 = 0
ldi r18, 0x01 ; switch to PortB
portB_left:
;ldi r18, 0x01
out PORTB, r18 ; D8 = 1
rcall delay
lsl r18
cpi r18, 0x02 ; length of PortB is variable
brne portB_left
brne portB_left
; D9 = 1 => last LED turned on
portB_right:
out PORTB, r18
rcall delay
lsr r18 ; turn direction
cpi r18, 0x00 ; shift right until PortB is 0x00
brne portB_right
brne portB_right
out PORTB, r18 ; turn of PortB or rather D8 & D9
ldi r17, 0x80
@@ -48,7 +48,7 @@ portD_right:
rcall delay
lsr r17
cpi r17, 0x01 ; shift right until D0 is reached
brne portD_right
brne portD_right
jmp portD_left ; turn direction
delay: