From 2878ed81b7ee058938497057fa7a4c065428fa3d Mon Sep 17 00:00:00 2001 From: S170H <64917343+S170H@users.noreply.github.com> Date: Mon, 30 Oct 2023 18:31:52 +0100 Subject: [PATCH] length of PortB variable --- P1/.vs/P1/v14/.atsuo | Bin 20480 -> 27136 bytes P1/P1/Debug/P1.lss | 1147 ++++++++++++++++++++++++++++++++++++++++++ P1/P1/Debug/P1.tmp | 32 ++ P1/P1/P1.asmproj | 61 ++- P1/P1/main.asm | 61 ++- 5 files changed, 1281 insertions(+), 20 deletions(-) create mode 100644 P1/P1/Debug/P1.lss create mode 100644 P1/P1/Debug/P1.tmp diff --git a/P1/.vs/P1/v14/.atsuo b/P1/.vs/P1/v14/.atsuo index 10f42abc2ba29593de08a600180abe11dbdac6b3..b33d05c869a833f1b325676ce5e007259395483d 100644 GIT binary patch literal 27136 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 delta 1833 zcmcgsUuaWj6u;l?O`4|nrZF~2Yib*9)U0)`b^f8+ZK=81SZi)BR+y4)k=3C%a9bPE ziZ)}Lh!0}#5B4$y5q)!;U0xJLDhj@cpc@;$l(9$uj6Jk&3bs2Z=B7dCpTXD(zkJ_! z&Uel|_nhCkxt~PtggDmesFfs1jCNJa!i{-yljp?wnoRQXZK0BWY&M3RLn4Vu*}zq2 zn4=$dEMmV=^Fv{|Q|R+}k#RS;I4}cWx+6+qbH<$^Yc0anilbm1F@LeVy4pzY6$H9G zjhnuR=tfpeY7!Tc8&T4)!=!4cTraL&Nxc?XEs1#GEh`$=1izS4X2xJNrOKq>x|e){ zn2ZjK0J5(c&;y-T;0gtJ58+_5R%nL5>@o&}2I4L6K=xhMM2IZh#zH7F6vbb@4VvJR zF*!;P&|xln1DQ}5dZ^QCOdt_nEd0oZzmU&Lc+|KaSLAl&`V{PK>Q$K|+$G!H!Dasq z51S3woHDhul@1;!h9W&GQ->*IyI^8PO63l6*KDPjhwREtE{5_>A&}&!J9ME5 zX5CzZeFcN92B(*wSba)Ahc#EuAk zRU7@{tJ0eXwtqH|-n8wbZM)L?_JLi49(prQQ%LqLe300Puive~l5QWSx+AXV80xC@ z=U4)`*Iy;lcA%ME{%Fr7`IWisXD)A`+c zBwb7lTaSrIO6BS0`LLBd1`D2iIbJXdUpfCvu47K0J0I&C6Ns%F$N1LyzWiz diff --git a/P1/P1/Debug/P1.lss b/P1/P1/Debug/P1.lss new file mode 100644 index 0000000..286954d --- /dev/null +++ b/P1/P1/Debug/P1.lss @@ -0,0 +1,1147 @@ + +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 + +[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' +[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' + + ; + + ;***** Created: 2011-02-09 12:03 ******* Source: ATmega328P.xml ********** + ;************************************************************************* + ;* A P P L I C A T I O N N O T E F O R T H E A V R F A M I L Y + ;* + ;* Number : AVR000 + ;* File Name : "m328Pdef.inc" + ;* Title : Register/Bit Definitions for the ATmega328P + ;* Date : 2011-02-09 + ;* Version : 2.35 + ;* Support E-mail : avr@atmel.com + ;* Target MCU : ATmega328P + ;* + ;* DESCRIPTION + ;* When including this file in the assembly program file, all I/O register + ;* names and I/O register bit names appearing in the data book can be used. + ;* In addition, the six registers forming the three data pointers X, Y and + ;* Z have been assigned names XL - ZH. Highest RAM address for Internal + ;* SRAM is also defined + ;* + ;* The Register names are represented by their hexadecimal address. + ;* + ;* The Register Bit names are represented by their bit number (0-7). + ;* + ;* Please observe the difference in using the bit names with instructions + ;* such as "sbr"/"cbr" (set/clear bit in register) and "sbrs"/"sbrc" + ;* (skip if bit in register set/cleared). The following example illustrates + ;* this: + ;* + ;* in r16,PORTB ;read PORTB latch + ;* sbr r16,(1< + 2.2.7 + "ATmega328P" + C:\Users\Safak\Desktop\UNI\3. Semester\53107 ARBK\Praktikumsunterlagen\ARBKVS-Praktika\P1\P1\Debug + + C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\avrasm\inc + C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avrassembler\Include + + + C:\Users\Safak\Desktop\UNI\3. Semester\53107 ARBK\Praktikumsunterlagen\ARBKVS-Praktika\P1\P1\main.asm + + 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\Debug\P1.obj + + + P1.hex + + + P1.map + P1.lss + + + C:\Users\Safak\Desktop\UNI\3. Semester\53107 ARBK\Praktikumsunterlagen\ARBKVS-Praktika\P1\P1\main.asm13 + C:\Users\Safak\Desktop\UNI\3. Semester\53107 ARBK\Praktikumsunterlagen\ARBKVS-Praktika\P1\P1\main.asm21 + C:\Users\Safak\Desktop\UNI\3. Semester\53107 ARBK\Praktikumsunterlagen\ARBKVS-Praktika\P1\P1\main.asm52 + C:\Users\Safak\Desktop\UNI\3. Semester\53107 ARBK\Praktikumsunterlagen\ARBKVS-Praktika\P1\P1\main.asm34 + C:\Users\Safak\Desktop\UNI\3. Semester\53107 ARBK\Praktikumsunterlagen\ARBKVS-Praktika\P1\P1\main.asm44 + C:\Users\Safak\Desktop\UNI\3. Semester\53107 ARBK\Praktikumsunterlagen\ARBKVS-Praktika\P1\P1\main.asm57 + + diff --git a/P1/P1/P1.asmproj b/P1/P1/P1.asmproj index 21255aa..6005b46 100644 --- a/P1/P1/P1.asmproj +++ b/P1/P1/P1.asmproj @@ -20,37 +20,66 @@ false true true - + 0x20000000 true - + exception_table 2 0 0 + com.atmel.avrdbg.tool.simulator + + 0x1E950F + + + + + + + + com.atmel.avrdbg.tool.simulator + + + Simulator + + + + + + + + + + custom + + + Custom Programming Tool + - - - %24(PackRepoDir)\atmel\ATmega_DFP\1.2.209\avrasm\inc - - - m328pdef.inc - + + + %24(PackRepoDir)\atmel\ATmega_DFP\1.2.209\avrasm\inc + + + m328pdef.inc + + Executable - - - %24(PackRepoDir)\atmel\ATmega_DFP\1.2.209\avrasm\inc - - - m328pdef.inc - + + + %24(PackRepoDir)\atmel\ATmega_DFP\1.2.209\avrasm\inc + + + m328pdef.inc + diff --git a/P1/P1/main.asm b/P1/P1/main.asm index 42ed9ef..847636f 100644 --- a/P1/P1/main.asm +++ b/P1/P1/main.asm @@ -5,8 +5,61 @@ ; Author : Safak ; +.include "m328pdef.inc" -; Replace with your application code -start: - inc r16 - rjmp start +.org 0x00 +rjmp init + +init: + ldi r17, 0xFF + out DDRD, r17 ; Data direction register D (D0-D7) as output + ldi r17, 0x01 ; initialize D0 + + ldi r18, 0x01 + out DDRB, r18 ; Data direction register B (B0-B1) as output + +portD_left: + out PORTD, r17 + rcall delay + lsl r17 ; shift left until PortB is 0x00 + cpi r17, 0x00 ; if(r17!=0x00) links_PD + brne portD_left + out PORTD, r17 ; D0-D7 = 0 + +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 + ; 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 + out PORTB, r18 ; turn of PortB or rather D8 & D9 + ldi r17, 0x80 + +portD_right: + out PORTD, r17 ; turn on D7 + rcall delay + lsr r17 + cpi r17, 0x01 ; shift right until D0 is reached + brne portD_right + jmp portD_left ; turn direction + +delay: + ldi r19, 17 + ldi r20, 60 + ldi r21, 204 + +L1: dec r21 + brne L1 + dec r20 + brne L1 + dec r19 + brne L1 + ret \ No newline at end of file