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' [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' 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: init:
000001 ef1f ldi r17, 0xFF 000001 ef1f ldi r17, 0xFF
000002 b91a out DDRD, r17 ; Data direction register D (D0-D7) as output 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 000004 e023 ldi r18, 0x03
000005 b924 out DDRB, r18 ; Data direction register B (B0-B1) as output 000005 b924 out DDRB, r18 ; Data direction register B (B0-B1) as output
links_PD: ; Led l<>uft nach links portD_left:
000006 b91b out PORTD, r17 ; D0 leutet 000006 b91b out PORTD, r17
000007 d016 rcall delay 000007 d018 rcall delay
000008 0f11 lsl r17 000008 0f11 lsl r17 ; shift left until PortB is 0x00
000009 3010 cpi r17, 0x00 000009 3010 cpi r17, 0x00 ; if(r17!=0x00) links_PD
00000a f7d9 brne links_PD ; weiter nach links verschieben, ob D7 noch nicht leutet 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 portB_left:
00000c e021 ldi r18, 0x01 00000d b925 out PORTB, r18 ; D8 = 1
00000d b925 out PORTB, r18 ; D8 leutet 00000e d011 rcall delay
00000e d00f rcall delay
00000f 0f22 lsl r18 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 portD_right:
000010 b925 out PORTB, r18 000019 b91b out PORTD, r17 ; turn on D7
000011 d00c rcall delay 00001a d005 rcall delay
000012 9526 lsr r18 00001b 9516 lsr r17
000013 3020 cpi r18, 0x00 00001c 3011 cpi r17, 0x01 ; shift right until D0 is reached
000014 f7d9 brne links_PB 00001d f7d9 brne portD_right
00001e 940c 0006 jmp portD_left ; turn direction
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
delay: delay:
00001e e131 ldi r19, 17 000020 e131 ldi r19, 17
00001f e34c ldi r20, 60 000021 e34c ldi r20, 60
000020 ec5c ldi r21, 204 000022 ec5c ldi r21, 204
000021 955a L1: dec r21 000023 955a L1: dec r21
000022 f7f1 brne L1 000024 f7f1 brne L1
000023 954a dec r20 000025 954a dec r20
000024 f7e1 brne L1 000026 f7e1 brne L1
000025 953a dec r19 000027 953a dec r19
000026 f7d1 brne L1 000028 f7d1 brne L1
RESOURCE USE INFORMATION RESOURCE USE INFORMATION
@@ -1110,7 +1112,7 @@ counted separately from r26..r31 here.
"ATmega328P" register use summary: "ATmega328P" register use summary:
x : 0 y : 0 z : 0 r0 : 0 r1 : 0 r2 : 0 r3 : 0 r4 : 0 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 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 r21: 2 r22: 0 r23: 0 r24: 0 r25: 0 r26: 0 r27: 0 r28: 0
r29: 0 r30: 0 r31: 0 r29: 0 r30: 0 r31: 0
Registers used: 5 out of 35 (14.3%) 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 andi : 0 asr : 0 bclr : 0 bld : 0 brbc : 0 brbs : 0
brcc : 0 brcs : 0 break : 0 breq : 0 brge : 0 brhc : 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 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 brvs : 0 bset : 0 bst : 0 call : 0 cbi : 0 cbr : 0
clc : 0 clh : 0 cli : 0 cln : 0 clr : 0 cls : 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 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 fmulsu: 0 icall : 0 ijmp : 0 in : 0 inc : 0 jmp : 1
ld : 0 ldd : 0 ldi : 8 lds : 0 lpm : 0 lsl : 2 ld : 0 ldd : 0 ldi : 8 lds : 0 lpm : 0 lsl : 2
lsr : 2 mov : 0 movw : 0 mul : 0 muls : 0 mulsu : 0 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]: "ATmega328P" memory use summary [bytes]:
Segment Begin End Code Data Used Size Use% 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% [.dseg] 0x000100 0x000100 0 0 0 2048 0.0%
[.eseg] 0x000000 0x000000 0 0 0 1024 0.0% [.eseg] 0x000000 0x000000 0 0 0 1024 0.0%

View File

@@ -23,10 +23,11 @@
</OUTPUT_FILES> </OUTPUT_FILES>
<LABELS> <LABELS>
<init><FILE>C:\Users\Safak\Desktop\UNI\3. Semester\53107 ARBK\Praktikumsunterlagen\ARBKVS-Praktika\P1\P1\main.asm</FILE><LINE>13</LINE></init> <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> <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>52</LINE></delay> <delay><FILE>C:\Users\Safak\Desktop\UNI\3. Semester\53107 ARBK\Praktikumsunterlagen\ARBKVS-Praktika\P1\P1\main.asm</FILE><LINE>54</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> <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>
<rechts><FILE>C:\Users\Safak\Desktop\UNI\3. Semester\53107 ARBK\Praktikumsunterlagen\ARBKVS-Praktika\P1\P1\main.asm</FILE><LINE>44</LINE></rechts> <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>
<L1><FILE>C:\Users\Safak\Desktop\UNI\3. Semester\53107 ARBK\Praktikumsunterlagen\ARBKVS-Praktika\P1\P1\main.asm</FILE><LINE>57</LINE></L1> <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> </LABELS>
</ASSEMBLER_INFO> </ASSEMBLER_INFO>

View File

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