<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Pic dsPIC Arm7 Arm Cortex Programlama ve Projeler &#187; arm assembly</title>
	<atom:link href="http://www.uicroarm.com/tag/arm-assembly/feed" rel="self" type="application/rss+xml" />
	<link>http://www.uicroarm.com</link>
	<description>ds-pic arm-7 cortex nxp proje uygulama</description>
	<lastBuildDate>Fri, 23 Apr 2010 19:11:07 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>ARM7 Assembly &#8211; Port On/Off</title>
		<link>http://www.uicroarm.com/arm7-assembly-port-onoff</link>
		<comments>http://www.uicroarm.com/arm7-assembly-port-onoff#comments</comments>
		<pubDate>Sun, 08 Mar 2009 23:50:47 +0000</pubDate>
		<dc:creator>Aykut</dc:creator>
				<category><![CDATA[ARM7 Uygulamaları]]></category>
		<category><![CDATA[arm assembly]]></category>
		<category><![CDATA[KEIL]]></category>
		<category><![CDATA[LPC2148]]></category>

		<guid isPermaLink="false">http://www.uicroarm.com/?p=42</guid>
		<description><![CDATA[

Merhaba,
Şimdiki uygulamamız ARM7 assembly diliyle port on/off (led on/off veya röle vs yapılabilir) işlemini gerçekleştireceğiz. Microcontroller&#8217;lara ilk olarak assembly diliyle başladığım ve işlemci donanımını tanımayı kolaylaştırdığı için arm işlemcilere de ilk geçtiğimde arm assembly dilini inceledim. Çok fonksiyonlu bir komut seti var ama tabii ki kullanımı oldukça zor. Ayrıca 32bit ile çalışmanın getirdiği zorluklarda var. [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-50" title="arm7_ledasmkucuk2" src="http://www.uicroarm.com/wp-content/dosyalar/2009/03/arm7_ledasmkucuk2.jpg" alt="arm7_ledasmkucuk2" width="295" height="221" /><br />
<span id="more-42"></span></p>
<p>Merhaba,</p>
<p>Şimdiki uygulamamız ARM7 assembly diliyle port on/off (led on/off veya röle vs yapılabilir) işlemini gerçekleştireceğiz. Microcontroller&#8217;lara ilk olarak assembly diliyle başladığım ve işlemci donanımını tanımayı kolaylaştırdığı için arm işlemcilere de ilk geçtiğimde arm assembly dilini inceledim. Çok fonksiyonlu bir komut seti var ama tabii ki kullanımı oldukça zor. Ayrıca 32bit ile çalışmanın getirdiği zorluklarda var. Gerçek hayatta gerektiği yerde C içinde inline kullanmak daha mantıklı. İnternette arm assembly örnekleri gerçekten çok az bu nedenle blogumda  arm7 asm&#8217;den bazı örnekler olsun istiyorum ve ayrıca arm assembly&#8217;nin nasıl olduğunu merak edenler olabilir.</p>
<p>İlk projemiz oldukça basit, port on/off yapacağız, derleyici olarak keil kullanacağım. Bilindiği gibi keil, C compiler&#8217;ın yanısıra  assembler/simulatör ve debugger olarakta kullanılabilmektedir. Detayları için www.keil.com&#8217;dan öğrenebilirsiniz.</p>
<p>Kullanacağım işlemci (LPC2148) ARM7TDMI tabanlı bir işlemci olduğu için ARM7TDMI assembly komut setini kullanıyoruz. Ayrıca buna ek olarak asm  için http://www.peter-cockerell.net/aalp/html/frames.html  adresinden faydalanabilirsiniz.</p>
<p>Keil&#8217;de assembly dili:<br />
<a href="http://www.uicroarm.com/wp-content/dosyalar/2009/03/arm7_ledasm1.jpg" rel="lightbox[42]"><img class="alignnone size-thumbnail wp-image-52" title="arm7_ledasm1" src="http://www.uicroarm.com/wp-content/dosyalar/2009/03/arm7_ledasm1-150x150.jpg" alt="arm7_ledasm1" width="150" height="150" /></a></p>
<pre class="brush: cpp;">
;****************************************************************************
; Aykut ULUSAN , Elektronik Mühendisi , IZMIR
; Arm7 assembly
;****************************************************************************

INCLUDE	  LPC2294.inc  	 			; header ekliyelim

LED	EQU	0x02000000			; led portu P0.25

EXPORT  __main					   ; Main fonksiyonu program disinda kullanilabilir
AREA   	 LED_ONOFF,CODE,READONLY		;

__main
LDR	R0,=PINSEL0		; PINSEL0'in adresini R0 registerine at
MOV    R1,#0x0			 ; R1=0
STR	R1,[R0]		  	   ; PINSEL0=0
LDR	R0,=PINSEL1		 ; PINSEL1=0
STR	R1,[R0]
LDR	R0,=IO0DIR	          ; Led pini cikis
LDR	R1,=LED			    ; led adresini yukle
STR	R1,[R0]			    ; led adres icerigini IO0DIR'a
LOOP
LDR	R1,=LED		           ; led adresini yukle
; led
LDR	R0,=IO0SET	 	  ; port set
STR	R1,[R0]
BL	 DLY
; led
LDR	R0,=IO0CLR  		; port low
STR	R1,[R0]
BL	 DLY			    ; altprograma
B	  LOOP

DLY
MOV	R7,#0x000FF000		;
DLY_1
SUBS	R7,R7,#1		    ; R7-=1
BNE	 DLY_1
MOV	PC,LR		 	      ; link registerini geri yukle

ALIGN					; memory dizilisi 4'er byte
LTORG				       ; ARM komutlari icin PC+/-4K, Trumb komutlari icin PC+/-1K
END
</pre>
<p>Sonuç olarak ;<br />
Proje resimleri aşağıdadır. Önce scop probları , LPC2148 Board&#8217;ta ilgili port pinine bağlanır ve sonuç scop ekranında görülmektedir.</p>
<p><a href="http://www.uicroarm.com/wp-content/dosyalar/2009/03/brd_8006001.jpg" rel="lightbox[42]"><img class="alignnone size-thumbnail wp-image-48" title="brd_8006001" src="http://www.uicroarm.com/wp-content/dosyalar/2009/03/brd_8006001-150x150.jpg" alt="brd_8006001" width="150" height="150" /></a><a href="http://www.uicroarm.com/wp-content/dosyalar/2009/03/scop8006001.jpg" rel="lightbox[42]"><img class="alignnone size-thumbnail wp-image-49" title="scop8006001" src="http://www.uicroarm.com/wp-content/dosyalar/2009/03/scop8006001-150x150.jpg" alt="scop8006001" width="150" height="150" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.uicroarm.com/arm7-assembly-port-onoff/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
