ROBOTİK UYGULAMALARDA YAZILIM
EĞİTİMİ
• BU ÇALIŞMALAR İKİ BÖLÜMDEN OLUŞUR
1-)DONANIM
a-)Mikroişlemciler
b-)Mikrodenetleyiciler
2-)YAZILIM
a-)Assembly yazılımı
b-)C tabanlı yazılımlar
DONANIM BİLGİLENDİRME
1 PIC16F628A’nın DIŞ GÖRÜNÜŞÜ
Microchip PIC16F628A’yı üç farklı kılıf tipiyle üretmektedir. Kullanımı en koly olan
PDIP tipi piyasada en kolay bulunandır. Bunun dışında 20 bacaklı SSOP kılıflı ve 28
bacaklı QFN tipleri de mevcuttur.
PIC16F628A’nın ÇALIŞMASI
Harvard mimarisi ile üretilen PIC16F628 8-bit’lik bir RISC işlemcidir. program
belleği ve veri belleğine farklı adres/veri yolu ile ulaşır.
Mikroişlemcinin çalışmasını çizilebilecek en basit bir blok diyagram üzerinde
görelim. Bu diyagram tüm PIC’lerin çalışması için geçerlidir.
CPU: İçerisinde PC-program counter (Program sayıcısı), ALU (ritmetic-Logic-Unit)
bulunan ve diğer bloklar arasındaki çalışmayı organize eden ve flash bellekteki kullanıcı
programını çalıştırankısımdır.
Program belleği (FLASH) : Programların saklandığı ve defalarca yazılıp,
silinebilen flash bellek.
Veri belliği (EEPROM) : PIC Üzerindeki gerilim sessizde bile kaybolması
istenmeyen verilerin saklandığı bellek. Bu bellek üzerine de defalarca
yazma/silme yapılabilir.
Veri belliği (RAM) : Programın çalışması esnasında geçici olarak saklanması
gereken veriler için kullanılır. GBR (General Purpose Register-Genel amaçlı
saklayıcı) olarak da adlandırılan bu bellekte programı yazılması esnasında değişkenler
içerisine atanacak veriler bu alanda saklanır. Bu bellekte ayrıca SPR (Special Function
Register-Özel amaçlı saklayıcı) adı verilen saklayıcılar da vardır. Bunlara
PIC’in çalışma biçimini yönlendiren veriler yazılır.
PORTA ve PORTB : Mikrodenetleyicinin dışarıya açılan elektronik kapısıdır.
PIC’e girilecek ve PIC’ten dışarıya aktarılacak tüm veriler Bugün yoklar içerisindeki
elektronik devreler aracılığı ile yapılır.
Zamanlayıcı (TIMER0/TIMER1/TIMER2) : Programın çalışmasından bağımsız
olarak içerisindeki sayı binary olarak artan 8-bit’lik (Not: TIMER1=16-bit) bir
saklayıcıdır. Her 4 harici saat yedide bir defa içerisindeki sayı bir defa artarak
255’e ulaştığında tekrar 0’dan başlayarak saymaya devam eder.
Bir mikroişlemcinin çalışması kısaca şöyledir; Program belleğinden CPU
tarafından alınan komutu kodu çözerek işlenir. komut işleme göre diğer ünitelerden
veri okunabilir ya da bu ünitelere veri gönderilebilir. Program komutları gerektiriyorsa
zamanlayıcıdan da veri alabilir. Sonuç olarak bir ortama elektronik olarak bağlantısı
bulunan PORTA/PORTB’den gönderilen lojik veri mikroişlemcinin kontrol ettiği
3 BESLEME GERİLİMİ
PIC'in çalışması için gerekli olan gerilim 5 ve 14 numaralı pin'lerden uygulanır. 14
numaralı Vdd ucu +5 V'a, 5 numaralı Vss ucu da toprağa bağlanır. PIC'e gerilim 15
uygulandığında devredeki fazla akım çeken elemanların devreye girmesiyle ya da
şebekedeki gerilim dalgalanmaları nedeniyle PIC'in resetlenmesini önlemek amacıyla
Vdd ile Vss arasına 0.1 µf lık bir dekuplaj kondansatörü bağlamak gerekir. Bu durumda
kararlı bir gerilim değeri elde edilmiş olur.
:PIC16F627A,PIC16F628A,PIC16F648Aarasındakifarklar
Device
Program
Memory
DataMemory
I/O
CCP
(PWM)
USART Comparators
Timers
8/16-BitFlash
(words)
SRAM
(bytes)
EEPROM
(bytes)
PIC16F627A 1024 224 128 16 1 Y 2 2/1
PIC16F628A 2046 224 128 16 1 Y 2 2/1
PIC16F648A 4096 256 256 16 1 Y 2 2/1
PIC 16F877A BACAK NUMARALARI
• Bacak Yapısı
• PIC16F877 'nin 40 pininden 33 tanesi I/O (
input/output - giriş/çıkış ) pinleridir.
PIC16F877; 6 bitlik A portu, her biri 8 bitlik
B,C ve D portları ve 3 bitlik E portu olmak
üzere 5 porta sahiptir. I/O pinlerinin gerekli
konfigürasyonlar yapılarak başka
amaçlarla kullanılması da mümkündür.
PIC 16F877A ÖZELLİKLER
• Temel Özellikleri
• *İşlem hızı DC-20 MHz dir. (bir komut DC-200 ns hızında çalışmaktadır.)
*Dallanma komutları iki çevrim (cycle) sürede, bunların dışındaki komutlar ise bir
çevrimlik sürede
uygulanır.
*8 Kword Flash ROM programlama belleği (EEPROM özellikli program belleği), 368
Byte kullanıcı RAM belleği ve 256 Byte EEPROM belleği olmak üzere üç adet bellek
bloğu vardır.
*8 Kword 'lük Flash ROM programlama belleği 1000000 kez programlanabilir.
*CPU azaltılmış komut setine sahiptir.
*Statik RAM üzerinde 32 adet özel işlem kaydedicisi (SFR - Special Function
Register) vardır.
*RISC temeline dayanır.
*CPU azaltılmış komut setine sahiptir.
*Öğrenilecek gereken her biri 14 bitlik 35 komut vardır.
*Pin çıkışları PIC 16C73B/74B/76 ve 77 ile uyumludur.
* 8 bitlik veri yolu (databus) vardır.
*14 kaynaktan kesme yapabilir.
PIC ASSEMBLY DİLİ ve DERLEYİCİ
Derleyici (assembler), bir text editöründe assembly dili kurallarına göre yazılmış
olan komutların PIC’in anlayabileceği hexadesimal kodlara çeviren (derleyen) bir
programdır. Microchip firmasının MPASM bu işi yapan assembler programıdır.
Assembler’e çoğu zaman compiler de (derleyici) denilir.
Assembly dili, bir PIC’e Yaptırılması isteyen işlerin belirli kurallara göre yazılmış
komutlar dizisidir. Assembly dili komutları İngilizce dilindeki bazı kısaltmalardan
meydana gelir. Bu kısaltmalar genellikle bir komutan çalışmasını ifade eden cümlenin
baş harflerinden oluşur. Böylece elde edilen komut, bellekte tutulması kolay
(mnemonic) bir hale getirilmiştir. Örneğin:
BTFSC (Bit Test File register Skip if Clear) - saklayıcıdaki bit’i test et, eğer
sıfırsa bir sonraki komutu atla, anlamında kullanılan İngilizce cümlenin kısaltmasıdır.
Buarada: 8 bit’lik bir saklayıcıdaki 1 bit’i ifade eder. Test : kontrol etmek anlamındadır.
File register : 8 bit’lik port saklayıcı veya değişken ifade eder. Skip : Atlamak, bir
sonrakine geçmek anlamına gelir. If : Eğer. Clear : ‘0’ anlamına gelir.
PIC ASSEMBLY DİLİ YAZIM KURALLARI
PIC assembly programlarının yazılması için kullanılan metin editörlerinden
1.bölümde bahsetmiştik. Bu editörlerden, Windows altında çalışan NOTPAD veya DOS
altında çalışan EDIT en kolay elde edilebilenlerdir. Bunların dışında printer kontrol
…
komutları içermeyen ve ASCII kodunda dosya üretebilen herhangi bir editör de
kullanılabilir. MPLAB kullanıldığında ayrıca bir editör kullanmaya gerek yoktur.
Çünkü MPLAB’ın içinde hem bir metin editörü hemde MPASM bulunmaktadır
MPASM asembler programının yazılan komutlaru doğru olarak algılayıp, PIC’in
anlayabileceği heksadesimal kodlara dönüştürebilmesi için şu bilgiler program içinde
özel formatta yazılması gerekir :
 Komutların hangi PIC16XX için yazıldığı,
 Programın bellekteki hangi adres başlayacağı,
 Komutların ve etkiketlerin neler olduğu,
 Programın bitiş yeri.
Basit bir örnekle bu bilgilerin program içinde nasıl yazıldığını gösterelim. Program
ilk olarak PIC16F628A’ya B port’unun 8 ucunu da çıkış tanıtacaktır. Daha sonra bu
port’un ilk dört bit’ini lojik 1, sonrakş dört bit’ini de lojik 0 yapacak. Son olarak
program sonsuz bir döngüye girecektir. Bu işlemleri yapacak olan programın akış
diyagramı ve komutları aşağıdaki gibi olacaktır.
4.2.1 Noktalı Virgül (;)
Baş tarafına (;) konulan satır, assembler tarafından heksadesimal kodlara
dönüştürülmez. Bu satırlar programın geliştirilmesi esnasında hatırlatıcı açıklamaların
yazılmasında kullanılır. Örneğin CLRF ile başlayan satırda ‘porB’nin içini
sıfırla’ cümlesi, CLRF komutunun ne iş yaptığını açıklar. Programın bölümlerini
birbirinden ayırmak için (---------veya =====) çizgileri kullanmak, programı görsel
olarak daha okunur hale getirdiği gibi bu çizgiler arasına uyarılar ve açıklamalarda
yazılabilir.
4.2.2 Girintiler ve Program Bölümleri
Metin editörlerin de birbirinden farklı uzunlukta girintiler veren TAB (
sekme) özelliği vardır. Bu özellikten yararlanarak assembly komutları üç kolona
...
bölünerek yazılır. Bir assembly programı temel olarak dört bölüme
ayrılır. Bunlar; Başlık, atama, program ve sonuç bölümleridir.
4.3 PIC ASSEMBLY KOMUTLARININ YAZILIŞ BİÇİMİ
PIC16F628A’nın toplam 35 tane komutu vardır. Bu komutların yazılış biçimini üç
grupta toplayabiliriz.
1. Byte-yönlendirmeli komutlar.
2. Bit-yönlendirlemli komutlar.
3. Sabit işleyen komutlar.
4. Kontrol komutları
Komutların yazılış biçimleri ne açıklarken bazı tanımlama harfleri
kullanacağız. bu tanımlama harfleri mikroçipin veri kataloglarında da aynı şekilde
geçtiğinden orijinal biçiminde verilmiştir. Önce bu harflerin anlamları verelim:
f = fiel register (özel veya genel amaçlı saklayıcı)
d = destination (hedef, gönderilen yer)
d=0 Verinin gönderileceği yer (W saklayıcı.)
d=1 Verinin gönderileceği yer ( özel veya genel amaçlı saklayıcı.)
k = Sabit sayı veya adres etiketi
b = bit tanımlayıcı
b = binary sayıları belirleyen harf (Örneğin b’00001111’ gibi)
d = desimal sayıları belirleyen harf (Örneğin d ‘16’ gibi)
• *PIC16F877 dolaylı ve göreceli adresleme yapabilme özelliğine sahiptir.
• *CMOSFlash EEPROM teknoloji ile düşük güçle yüksek hıza erişebilir.
• *Enerji verildiğinde sistemi resetleme özelliği (Power-on Reset),
• *Power-up zamanlayıcı (Power-up Timer)
• *Osilatör başlatma zamanlayıcısı (Osilatör Start-up Timer)
• *Özel tip zamanlayıcı (Watch-dog Timer), devre içi RC osilatör
• *Hata ayıklamada kullanılanabilecek modül (devre içi Debugger)
• *Seçimli osilatör özellikleri
• *Statik tasarım
• *Enerji tasarrufu sağlayan uyku modu ( Sleep Mode) özelliği vardır.
• *Programla kod güvenliği sağlanabilir.
• *Düşük gerilimli programalama özelliğine sahiptir.
• *Sadece 5 V giriş ile devre içi seri programlanabilir.
• *2 pinle programlanabilir.
• *Program belleğine okuma/yazma özelliği ile erişilebilir.
• *2,0 V ile 5,0 V arasında değişen geniş işletim aralığına sahiptir.
• *Kaynak akımı 25 mA dir.
• *Geniş sıcaklık aralığında ve düşük güçle çalışabilir.
• *Devre içi iki pin ile hata ayıklama özelliği vardır.
• PIC 16F877A BESLEME BAĞLANTISI
YAZILIM BİLGİLENDİRME
PIC ASSEMBLY 35 KOMUTU
PIC ASSEMBLY KOMUTLARI
Yer Değiştirme ve Yükleme Komutları
Komut ve Örnek İngilizce
tanımı
Türkçe açıklaması
MOVLW K Move
Literal to
W
k sabit değerini W saklayıcısına yükler.
MOVLW h'1A' W←1A. Hexadecimal 1A sayısı W registerine yüklenir.
MOVF f,d Move f f saklayıcısının içeriğini W veya f'e yükler.
MOVF SAYAC,0
d=0 W←SAYAC
d=1 SAYAC←SAYAC
MOVWF F
Move W to
f
W saklayıcısının içeriğini f saklayıcısına yükler.
MOVWF PORTA PORTA←W
Saklayıcı İçeriğini Değiştire Komutları
CLRF F CleaR f f saklayıcısının içeriğini siler (sıfırlar).
CLRF TRISB TRISB←00000000
CLRW CleaR W W saklayıcısının içeriğini siler (sıfırlar).
CLRW W←00000000
COMF f,d Complement f
F saklayıcısının içindeki sayı terslenir. Yani tüm 1'ler
0, 0'lar 1 olur. Sonuç W veya f saklayıcısına yüklenir.
Diğer bir anlamda sayının tümleyeni alınır.
COMF SAYAC,0
SAYAC=10110110 ise,
d=0 W←01001001
d=1 olsaydı SAYAC←01001001
DECF f,d Decrement f
F registerinin içerisindeki sayıyı "1" eksiltir. Registerin içeriği h'00'
ise, "1" eksiltildiğinde h'FF' olur. Sonuç W veya f registerine yazılır.
DECF GIT,1
GIT=h'2C' ise 2C-1=2B
d=1 GIT←2B
d=0 olsaydı W←2B
INCF f,d Increment f
F registerinin içerisindeki sayıyı "1" artırır. Registerin içeriği h'FF' ise,
"1" arttırıldığında h'00' olur. Sonuç W veya f Registerine yazılır.
INCF GIT,0
GIT=h'2C' ise 2C+1=2D
d=0 W←2D
d=1 olsaydı GIT←2D
BCF Bit Clear f f registerinin içerisindeki sayının b.ninci bit'ini sıfırlar.
BCF PORTB,5
PORTB=b'1111111’
ise, PORTB←b'11011111'
BSF f,b Bit Set f F registerinin içerisindeki sayının b.ninci Bit'ini 1 yapar.
BSF PORTA,3 PORTA=b'00000000' ise, PORTA←b'00001000'
RLF f,d Rotate Left f
F registeri içerisideki sayıyı bir pozisyon sola kaydırır. Registeriden
taşarak Carry bayrağına yazılan bit, LSB'ye yazılır. Sonuç W veya f
registerine yüklenir.
RLF KAY,0
KAY=b'10110110' ise,
d=0 olduğundan W←01101101
d=1 olsaydı KAY←01101101
RRF f,d Rotate Right f
F registeri içerisindeki sayıyı bir pozisyon sağa kaydırılır.Registeriden
taşarak Carry bayrağına yazılan bit, MSB'ye yazılır. Sonuç W veya f
registerine yüklenir.
RRF KAY,1
KAY=b'10110111' ise,
d=1 olduğundan KAY←11011011
d=0 olsaydı W←11011011
Komut ve Örnek İngilizce
tanımı
Türkçe Açıklaması
SWAPF f,d
Swap nibbles
in f
F registerinin içerisindeki ilk dört bit ile son dört biti
yer değiştirir. Sonuç W veya f registerine yüklenirç
SWAPF DEG,1
DEG=b'00101111' ise,
d=1 olduğundan
d=0 olsaydı
DEG←11110010
W←11110010
Program Akışını Kontrol Etme Komutları
GOTO
GOTO
k
DONGU
Go to
address
Program akışı k adresine dallanır.
Program, DONGU etiketinin yazıldığı yere dallanır ve
burdan itibaren devam eder.
CALL
CALL
k
TIMER
Call
subroutine
Program akışı k etiketinin bulunduğu yerdeki alt
programa dallanır Program TIMER etiketinin yazıldığı
alt program satırının bailangıcına dallanır ve buradan
itibaren devam eder.
RETURN
Return from
subrautine
Alt program komutlarının en sonuna yazılan bu
komut, program akışını ana programa geri döndürür.
RETLW
Return With
Literal in W
Program akışını alt programdan ana programa
döndürür ve W regis- terine k sabitini yükler
RETLW H'2F'
Alt programdan ana programa döndürür ve W
registerine 2F yüklenir.
RETFIE
Return From
Interrup
Program akışını kesme alt programından ana
programa döndürür.
BTFSC f,b
Bit Test F,
Skip if
Clerar
F registerinin b.ninci bitini test eder. Eğer bu bit "0" sa
program akışı bir sonraki komuta geçer.
BTFSC PORTA,2 PORTA=b'0000100' ise, →1
PORTA=b'00000000' ise, →2
↓←← BTFSC PORTA,2
→→↓
"2"
↓
GOTO
↓
START
←←↓
"1"
↓→→ MOVLW h'FF'
BTFSS f,b
Bit Test F,
Skip if Set
F registerinin b.ninci bitini test eder. Eğer bu bit "1"
se program akışı bir sonraki komuta geçer.
BTFSS PORTA,0 PORTA=b'00000001' ise, →1
PORTA=b'00000000' ise, →2
↓←← BTFSS PORTA,0
→→↓
"1"
↓
GOTO
↓
START
←←↓
"2"
↓→→ MOVLW h'FF'
DECFSZ f,d
Decrement f,
Skip if Zero
F registerinin içeriğini "1" azaltır. Registerinin içeriği
0'sa bir sonraki komuta atlar. Sonuç W veya f
registerine yazılır.
DECFSZSAYAC,1
SAYAC=h'2F' ise, 2F-1=2E
d=0 olsaydı W← h'2E' d=1
olduğundan SAYAC← h'2E'
INCFSZ
INCFSZ
F,d
Increment f,
Skip if Zero
F Registerinin içeriğini "1" arttırır. Registerin
içeriği 0'sa bir sonraki komuta atlar. Sonuç W veya
f registerine yazılır.
SAYAC=h'2F' ise, 2F+1=30
d=1 SAYAC←h'30'
d=0 W←h'30'
Mikrodenetleyici Kontorol Komutları
Komut ve
Örnek
İngilizc
e
Tanımı
Türkçe Açıklaması
CLRWD
T
Clear
Watchdog
Timer
Watchdog timer'ı sıfırlar. Ayrıca watchdog timer'ın prescalar
değerini de sıfırlar. Status bit'lerinden TO ve PD'yi "1" yapar.
SLEEP
Go
into
stand
y
mode
Mikrodenetleyiciyi uyuma moduna geçirerek güç harcamasını
azaltır. Mikrodenetleyici uyuma modundan reseti watchdog
timer ce TOCKI giriş vasıtasıyla çıkar.
Mantıksal Komutlar
ANDLW k
AND
Literal With
W
W registerinin içeriği ile k sabitine AND işlemi uygular.
Sonuç W registerine yazılır.
ANDLW
b'0011000
1'
W=b'10011101' ise,
b'00110001' sabitinin
değeri b'00010001'
AND işlemi
sonucu
W←b'00010001'
ANDWF f,d
AND W
with f
W registeri ile file registeri içeriğine AND işelemi uygular.
Sonuç W registerine yazılır.
ANDWF SAYAC,1
W=b'1111111
1' ise,
SAYAC=b'11011
11 ise,
b'11011110' AND işlemi
sonucu
d=0 ise W←b'11011110'
d=1 olursa SAYAC←b'11011110'
IORLW k
Inclusive
OR
Literal
with W
W registerinin içeriği ile k sabitine OR işlemi uygular. Sonuç
W registerine yazılır.
IORLW
b'00101000
'
W=b'10000100' ise
b'00101000' sabitin
değeri b'10101100'
OR
sonucu
W ← b'10101100'
IORWF f,d
W registerinin içeriği ile file registerinin içeriğine OR işlemi
uygular. Sonuç W veya f registerine yazılır.
IORWF SAYAC,1
W=b'10000100
' ise,
SAYAC=b'001010
0 ise,
b'10101100' OR sonucu
d=o ise W ← b'10101100'd=1 olursa SAYAC←b'10101100'
XORL
W
k
Exclusive
OR Literal
with W
W registerinin içeriği ile k sabitine XOR işlemi uygular. Sonuç
W registerine yazılır.
XORL
W
b'00101100
'
W= b'11111111' ise
XOR b'00101100 sabitin değeri
b'11010011 XOR sonucu
W ← b'11010011'
XORW
F
F,d
Exclusiv
e OR W
with f
W registeri ile f register file register içeriğine XOR işlemini
uygular. Sonuç W veya f registerine yazılır.
XORW
F
SAYAC,1
W=b'00100000
' ise,
SAYAC=b'001010
0 ise,
b'00001000' XOR sonucu
d=0 ise W ← b'00001000'
d=1 olursa SAYAC←b'00001000'
Aritmetik İşlem Komutları
Komut ve Örnek İngilizce
Tanımı
Türkçe Açıklaması
ADDWF f,d
Add W with
f
W registerinin içeriğini f registeri ile toplar. Sonuç W veya f
registe- rine yazılır.
ADDWF TOP,0
W=h'2A' ise, TOP=h'31'ise,
h'2A'+h'31'=h'5B2
d=1 ise
TOP←h'5B' d=0
olduğundan
W←h'5B'
ADDLW k
Add Literal
and W
W registerinin içeriğini k sabit değeri ile tolar. Sonuç W
registerine yazılır.
ADDLW h'2A'
W=h'B0' ise,
h'B0'+h'2A'=h'DA' W← h'DA'
SUBLW k
Subtract W
from
Literal
K sabit değerinden W registerinin içeriğini çıkarır. Sonuç W
registerine yazılır.
SUBLW H'93'
W=h'83' ise,
h'93'-h'83'=h'1 W← h'10'
SUBWF f,d
Subtract W
from
File register
F registerinin içeriğinden W registerinin içeriğini çıkarır.
Sonuç W veya f registerine yazılır.
SUBWF CIK,1
W=h'73' ise,
CIK=h'90' ise, h'90'-h'73'=h'17'
d=0 ise W←h'17'
d=1 olduğundan CIK←h'17'
Sonucun pozitif, negatif veya sıfır olmasına göre
STATUS registerinin C ve Z bitleri kontrol edilir.
Başla
PortB’nin tüm uçlarını
çıkış olarak tanıt
PortB’ye 0x0F yükle
Döngü
Son
ÖRNEK PROGRAM KOMUTLARI
;======PICTEST1.ASM=========================06 / 03 / 2016========
LIST P= 16F628A
;---------------------------------------------------------------------------------------------------------
; Adres tanımlama bloğu
STATUS EQU 0x03
PORTB EQU 0x06
TRISB EQU 0x86
;---------------------------------------------------------------------------------------------------------
ORG 0x00 ; programı 0x00’dan başlat
;---------------------------------------------------------------------------------------------------------
; Port’ların durumunu belirleme bloğu
BASLA
CLRF PORTB ; PortB’nin içini sıfırla
BSF STATUS,5 ; BANK1’e geç
CLRF TRISB ; PortB’nin uçlarını çıkış yap
BCF STATUS,5 ; tekrar BANK0’a geç
;---------------------------------------------------------------------------------------------------------
; Program bloğu
MOVLW 0x0F ; W saklayıcısına 0x0F’i yükle
MOVWF PORTB ; W ’yi portB’ye yükle
;---------------------------------------------------------------------------------------------------------
; Sonlandırma bloğu
DONGU
GOTO DONGU
END
;=============================================================
ÖĞR. GÖR. KADİR CENGİZ
ELEKTRONİK VE OTOMASYON
BÖLÜMÜ
MUĞLA MESLEK YÜKSEKOKULU
kcengiz@mu.edu.tr

More Related Content

PDF
SPI Protocol
PPTX
Slow peripheral interfaces (i2 c spi uart)
PPT
PDF
Introduction to Built In Self Test (BIST).pdf
PDF
vlsi projects using verilog code 2014-2015
PDF
LTE Basic Principle
PDF
Session 2,3 FPGAs
PDF
8085 lab
SPI Protocol
Slow peripheral interfaces (i2 c spi uart)
Introduction to Built In Self Test (BIST).pdf
vlsi projects using verilog code 2014-2015
LTE Basic Principle
Session 2,3 FPGAs
8085 lab

What's hot (20)

PPTX
ASIC Design Flow
PDF
Application of VLSI In Artificial Intelligence
ODP
APB protocol v1.0
PPTX
UART(universal asynchronous receiver transmitter ) PPT
PPTX
Introduction to FPGAs
PPTX
SoC FPGA Technology
PPT
Modul 7 gprs operation
PPTX
Powerplanning
PDF
Vhdl 1 ppg
PDF
Verification Strategy for PCI-Express
PDF
01 5 g-nr_introduction_190205
PPTX
prescalers and dual modulus prescalers
PDF
Receiver Desense Common Issue
PDF
fpga programming
PDF
Cwte_Wi-Fii6-presentation_dec_7_2021
PPT
04~chapter 02 dft.ppt
PPTX
Metastability,MTBF,synchronizer & synchronizer failure
PPT
Spi master core verification
PDF
FPGAs : An Overview
ODP
Pc ie tl_layer (3)
ASIC Design Flow
Application of VLSI In Artificial Intelligence
APB protocol v1.0
UART(universal asynchronous receiver transmitter ) PPT
Introduction to FPGAs
SoC FPGA Technology
Modul 7 gprs operation
Powerplanning
Vhdl 1 ppg
Verification Strategy for PCI-Express
01 5 g-nr_introduction_190205
prescalers and dual modulus prescalers
Receiver Desense Common Issue
fpga programming
Cwte_Wi-Fii6-presentation_dec_7_2021
04~chapter 02 dft.ppt
Metastability,MTBF,synchronizer & synchronizer failure
Spi master core verification
FPGAs : An Overview
Pc ie tl_layer (3)
Ad

Similar to PIC Programlama, Assembly ve Komutlar (20)

PDF
Microcontroladores: Compilador PI C Compiler.pdf
PDF
Pic programlama-2016
PPT
Bölüm 6
PDF
Pic programlama-2012
PDF
Led'lerle havaya yazı yazma
PDF
Pic programlama-2017
PDF
Pic programlama-2014
PDF
Pic programlama-2013
PDF
Pic programlama-hocasi
PDF
Mikroiƒlemciler 2020 Bahar - Kìsìm 1.pdf
PDF
Pic programlama-2011
PPTX
Assembly for Hackers
PPTX
8086-CPU-Tanıtım.pptx 8086-CPU-Tanıtım.pptx8086-CPU-Tanıtım.pptx
PPTX
Windows 32 bit-asm
PPTX
İşlemciler
PPT
Portlar
PDF
Analog Sayısal ve Sayısal Analog Çeviriciler
PDF
x86 Mimarisi ve Tersine Mühendislik
PDF
Zybo ile Ultrasonik Sensör Uygulaması (Distance Measurement by Ultrasonic Sen...
PDF
Programlama I (C) Ders Notu
Microcontroladores: Compilador PI C Compiler.pdf
Pic programlama-2016
Bölüm 6
Pic programlama-2012
Led'lerle havaya yazı yazma
Pic programlama-2017
Pic programlama-2014
Pic programlama-2013
Pic programlama-hocasi
Mikroiƒlemciler 2020 Bahar - Kìsìm 1.pdf
Pic programlama-2011
Assembly for Hackers
8086-CPU-Tanıtım.pptx 8086-CPU-Tanıtım.pptx8086-CPU-Tanıtım.pptx
Windows 32 bit-asm
İşlemciler
Portlar
Analog Sayısal ve Sayısal Analog Çeviriciler
x86 Mimarisi ve Tersine Mühendislik
Zybo ile Ultrasonik Sensör Uygulaması (Distance Measurement by Ultrasonic Sen...
Programlama I (C) Ders Notu
Ad

PIC Programlama, Assembly ve Komutlar

  • 1. ROBOTİK UYGULAMALARDA YAZILIM EĞİTİMİ • BU ÇALIŞMALAR İKİ BÖLÜMDEN OLUŞUR 1-)DONANIM a-)Mikroişlemciler b-)Mikrodenetleyiciler 2-)YAZILIM a-)Assembly yazılımı b-)C tabanlı yazılımlar
  • 3. 1 PIC16F628A’nın DIŞ GÖRÜNÜŞÜ Microchip PIC16F628A’yı üç farklı kılıf tipiyle üretmektedir. Kullanımı en koly olan PDIP tipi piyasada en kolay bulunandır. Bunun dışında 20 bacaklı SSOP kılıflı ve 28 bacaklı QFN tipleri de mevcuttur.
  • 4. PIC16F628A’nın ÇALIŞMASI Harvard mimarisi ile üretilen PIC16F628 8-bit’lik bir RISC işlemcidir. program belleği ve veri belleğine farklı adres/veri yolu ile ulaşır. Mikroişlemcinin çalışmasını çizilebilecek en basit bir blok diyagram üzerinde görelim. Bu diyagram tüm PIC’lerin çalışması için geçerlidir.
  • 5. CPU: İçerisinde PC-program counter (Program sayıcısı), ALU (ritmetic-Logic-Unit) bulunan ve diğer bloklar arasındaki çalışmayı organize eden ve flash bellekteki kullanıcı programını çalıştırankısımdır. Program belleği (FLASH) : Programların saklandığı ve defalarca yazılıp, silinebilen flash bellek. Veri belliği (EEPROM) : PIC Üzerindeki gerilim sessizde bile kaybolması istenmeyen verilerin saklandığı bellek. Bu bellek üzerine de defalarca yazma/silme yapılabilir. Veri belliği (RAM) : Programın çalışması esnasında geçici olarak saklanması gereken veriler için kullanılır. GBR (General Purpose Register-Genel amaçlı saklayıcı) olarak da adlandırılan bu bellekte programı yazılması esnasında değişkenler içerisine atanacak veriler bu alanda saklanır. Bu bellekte ayrıca SPR (Special Function Register-Özel amaçlı saklayıcı) adı verilen saklayıcılar da vardır. Bunlara PIC’in çalışma biçimini yönlendiren veriler yazılır.
  • 6. PORTA ve PORTB : Mikrodenetleyicinin dışarıya açılan elektronik kapısıdır. PIC’e girilecek ve PIC’ten dışarıya aktarılacak tüm veriler Bugün yoklar içerisindeki elektronik devreler aracılığı ile yapılır. Zamanlayıcı (TIMER0/TIMER1/TIMER2) : Programın çalışmasından bağımsız olarak içerisindeki sayı binary olarak artan 8-bit’lik (Not: TIMER1=16-bit) bir saklayıcıdır. Her 4 harici saat yedide bir defa içerisindeki sayı bir defa artarak 255’e ulaştığında tekrar 0’dan başlayarak saymaya devam eder. Bir mikroişlemcinin çalışması kısaca şöyledir; Program belleğinden CPU tarafından alınan komutu kodu çözerek işlenir. komut işleme göre diğer ünitelerden veri okunabilir ya da bu ünitelere veri gönderilebilir. Program komutları gerektiriyorsa zamanlayıcıdan da veri alabilir. Sonuç olarak bir ortama elektronik olarak bağlantısı bulunan PORTA/PORTB’den gönderilen lojik veri mikroişlemcinin kontrol ettiği
  • 7. 3 BESLEME GERİLİMİ PIC'in çalışması için gerekli olan gerilim 5 ve 14 numaralı pin'lerden uygulanır. 14 numaralı Vdd ucu +5 V'a, 5 numaralı Vss ucu da toprağa bağlanır. PIC'e gerilim 15 uygulandığında devredeki fazla akım çeken elemanların devreye girmesiyle ya da şebekedeki gerilim dalgalanmaları nedeniyle PIC'in resetlenmesini önlemek amacıyla Vdd ile Vss arasına 0.1 µf lık bir dekuplaj kondansatörü bağlamak gerekir. Bu durumda kararlı bir gerilim değeri elde edilmiş olur.
  • 9. PIC 16F877A BACAK NUMARALARI
  • 10. • Bacak Yapısı • PIC16F877 'nin 40 pininden 33 tanesi I/O ( input/output - giriş/çıkış ) pinleridir. PIC16F877; 6 bitlik A portu, her biri 8 bitlik B,C ve D portları ve 3 bitlik E portu olmak üzere 5 porta sahiptir. I/O pinlerinin gerekli konfigürasyonlar yapılarak başka amaçlarla kullanılması da mümkündür.
  • 11. PIC 16F877A ÖZELLİKLER • Temel Özellikleri • *İşlem hızı DC-20 MHz dir. (bir komut DC-200 ns hızında çalışmaktadır.) *Dallanma komutları iki çevrim (cycle) sürede, bunların dışındaki komutlar ise bir çevrimlik sürede uygulanır. *8 Kword Flash ROM programlama belleği (EEPROM özellikli program belleği), 368 Byte kullanıcı RAM belleği ve 256 Byte EEPROM belleği olmak üzere üç adet bellek bloğu vardır. *8 Kword 'lük Flash ROM programlama belleği 1000000 kez programlanabilir. *CPU azaltılmış komut setine sahiptir. *Statik RAM üzerinde 32 adet özel işlem kaydedicisi (SFR - Special Function Register) vardır. *RISC temeline dayanır. *CPU azaltılmış komut setine sahiptir. *Öğrenilecek gereken her biri 14 bitlik 35 komut vardır. *Pin çıkışları PIC 16C73B/74B/76 ve 77 ile uyumludur. * 8 bitlik veri yolu (databus) vardır. *14 kaynaktan kesme yapabilir.
  • 12. PIC ASSEMBLY DİLİ ve DERLEYİCİ Derleyici (assembler), bir text editöründe assembly dili kurallarına göre yazılmış olan komutların PIC’in anlayabileceği hexadesimal kodlara çeviren (derleyen) bir programdır. Microchip firmasının MPASM bu işi yapan assembler programıdır. Assembler’e çoğu zaman compiler de (derleyici) denilir. Assembly dili, bir PIC’e Yaptırılması isteyen işlerin belirli kurallara göre yazılmış komutlar dizisidir. Assembly dili komutları İngilizce dilindeki bazı kısaltmalardan meydana gelir. Bu kısaltmalar genellikle bir komutan çalışmasını ifade eden cümlenin baş harflerinden oluşur. Böylece elde edilen komut, bellekte tutulması kolay (mnemonic) bir hale getirilmiştir. Örneğin: BTFSC (Bit Test File register Skip if Clear) - saklayıcıdaki bit’i test et, eğer sıfırsa bir sonraki komutu atla, anlamında kullanılan İngilizce cümlenin kısaltmasıdır. Buarada: 8 bit’lik bir saklayıcıdaki 1 bit’i ifade eder. Test : kontrol etmek anlamındadır. File register : 8 bit’lik port saklayıcı veya değişken ifade eder. Skip : Atlamak, bir sonrakine geçmek anlamına gelir. If : Eğer. Clear : ‘0’ anlamına gelir.
  • 13. PIC ASSEMBLY DİLİ YAZIM KURALLARI PIC assembly programlarının yazılması için kullanılan metin editörlerinden 1.bölümde bahsetmiştik. Bu editörlerden, Windows altında çalışan NOTPAD veya DOS altında çalışan EDIT en kolay elde edilebilenlerdir. Bunların dışında printer kontrol … komutları içermeyen ve ASCII kodunda dosya üretebilen herhangi bir editör de kullanılabilir. MPLAB kullanıldığında ayrıca bir editör kullanmaya gerek yoktur. Çünkü MPLAB’ın içinde hem bir metin editörü hemde MPASM bulunmaktadır MPASM asembler programının yazılan komutlaru doğru olarak algılayıp, PIC’in anlayabileceği heksadesimal kodlara dönüştürebilmesi için şu bilgiler program içinde özel formatta yazılması gerekir :  Komutların hangi PIC16XX için yazıldığı,  Programın bellekteki hangi adres başlayacağı,  Komutların ve etkiketlerin neler olduğu,  Programın bitiş yeri. Basit bir örnekle bu bilgilerin program içinde nasıl yazıldığını gösterelim. Program ilk olarak PIC16F628A’ya B port’unun 8 ucunu da çıkış tanıtacaktır. Daha sonra bu port’un ilk dört bit’ini lojik 1, sonrakş dört bit’ini de lojik 0 yapacak. Son olarak program sonsuz bir döngüye girecektir. Bu işlemleri yapacak olan programın akış diyagramı ve komutları aşağıdaki gibi olacaktır.
  • 14. 4.2.1 Noktalı Virgül (;) Baş tarafına (;) konulan satır, assembler tarafından heksadesimal kodlara dönüştürülmez. Bu satırlar programın geliştirilmesi esnasında hatırlatıcı açıklamaların yazılmasında kullanılır. Örneğin CLRF ile başlayan satırda ‘porB’nin içini sıfırla’ cümlesi, CLRF komutunun ne iş yaptığını açıklar. Programın bölümlerini birbirinden ayırmak için (---------veya =====) çizgileri kullanmak, programı görsel olarak daha okunur hale getirdiği gibi bu çizgiler arasına uyarılar ve açıklamalarda yazılabilir. 4.2.2 Girintiler ve Program Bölümleri Metin editörlerin de birbirinden farklı uzunlukta girintiler veren TAB ( sekme) özelliği vardır. Bu özellikten yararlanarak assembly komutları üç kolona ... bölünerek yazılır. Bir assembly programı temel olarak dört bölüme ayrılır. Bunlar; Başlık, atama, program ve sonuç bölümleridir.
  • 15. 4.3 PIC ASSEMBLY KOMUTLARININ YAZILIŞ BİÇİMİ PIC16F628A’nın toplam 35 tane komutu vardır. Bu komutların yazılış biçimini üç grupta toplayabiliriz. 1. Byte-yönlendirmeli komutlar. 2. Bit-yönlendirlemli komutlar. 3. Sabit işleyen komutlar. 4. Kontrol komutları Komutların yazılış biçimleri ne açıklarken bazı tanımlama harfleri kullanacağız. bu tanımlama harfleri mikroçipin veri kataloglarında da aynı şekilde geçtiğinden orijinal biçiminde verilmiştir. Önce bu harflerin anlamları verelim: f = fiel register (özel veya genel amaçlı saklayıcı) d = destination (hedef, gönderilen yer) d=0 Verinin gönderileceği yer (W saklayıcı.) d=1 Verinin gönderileceği yer ( özel veya genel amaçlı saklayıcı.) k = Sabit sayı veya adres etiketi b = bit tanımlayıcı b = binary sayıları belirleyen harf (Örneğin b’00001111’ gibi) d = desimal sayıları belirleyen harf (Örneğin d ‘16’ gibi)
  • 16. • *PIC16F877 dolaylı ve göreceli adresleme yapabilme özelliğine sahiptir. • *CMOSFlash EEPROM teknoloji ile düşük güçle yüksek hıza erişebilir. • *Enerji verildiğinde sistemi resetleme özelliği (Power-on Reset), • *Power-up zamanlayıcı (Power-up Timer) • *Osilatör başlatma zamanlayıcısı (Osilatör Start-up Timer) • *Özel tip zamanlayıcı (Watch-dog Timer), devre içi RC osilatör • *Hata ayıklamada kullanılanabilecek modül (devre içi Debugger) • *Seçimli osilatör özellikleri • *Statik tasarım • *Enerji tasarrufu sağlayan uyku modu ( Sleep Mode) özelliği vardır. • *Programla kod güvenliği sağlanabilir. • *Düşük gerilimli programalama özelliğine sahiptir. • *Sadece 5 V giriş ile devre içi seri programlanabilir. • *2 pinle programlanabilir. • *Program belleğine okuma/yazma özelliği ile erişilebilir. • *2,0 V ile 5,0 V arasında değişen geniş işletim aralığına sahiptir. • *Kaynak akımı 25 mA dir. • *Geniş sıcaklık aralığında ve düşük güçle çalışabilir. • *Devre içi iki pin ile hata ayıklama özelliği vardır.
  • 17. • PIC 16F877A BESLEME BAĞLANTISI
  • 19. PIC ASSEMBLY 35 KOMUTU PIC ASSEMBLY KOMUTLARI Yer Değiştirme ve Yükleme Komutları Komut ve Örnek İngilizce tanımı Türkçe açıklaması MOVLW K Move Literal to W k sabit değerini W saklayıcısına yükler. MOVLW h'1A' W←1A. Hexadecimal 1A sayısı W registerine yüklenir. MOVF f,d Move f f saklayıcısının içeriğini W veya f'e yükler. MOVF SAYAC,0 d=0 W←SAYAC d=1 SAYAC←SAYAC MOVWF F Move W to f W saklayıcısının içeriğini f saklayıcısına yükler. MOVWF PORTA PORTA←W Saklayıcı İçeriğini Değiştire Komutları CLRF F CleaR f f saklayıcısının içeriğini siler (sıfırlar). CLRF TRISB TRISB←00000000 CLRW CleaR W W saklayıcısının içeriğini siler (sıfırlar). CLRW W←00000000 COMF f,d Complement f F saklayıcısının içindeki sayı terslenir. Yani tüm 1'ler 0, 0'lar 1 olur. Sonuç W veya f saklayıcısına yüklenir. Diğer bir anlamda sayının tümleyeni alınır. COMF SAYAC,0 SAYAC=10110110 ise, d=0 W←01001001 d=1 olsaydı SAYAC←01001001 DECF f,d Decrement f F registerinin içerisindeki sayıyı "1" eksiltir. Registerin içeriği h'00' ise, "1" eksiltildiğinde h'FF' olur. Sonuç W veya f registerine yazılır. DECF GIT,1 GIT=h'2C' ise 2C-1=2B d=1 GIT←2B d=0 olsaydı W←2B INCF f,d Increment f F registerinin içerisindeki sayıyı "1" artırır. Registerin içeriği h'FF' ise, "1" arttırıldığında h'00' olur. Sonuç W veya f Registerine yazılır.
  • 20. INCF GIT,0 GIT=h'2C' ise 2C+1=2D d=0 W←2D d=1 olsaydı GIT←2D BCF Bit Clear f f registerinin içerisindeki sayının b.ninci bit'ini sıfırlar. BCF PORTB,5 PORTB=b'1111111’ ise, PORTB←b'11011111' BSF f,b Bit Set f F registerinin içerisindeki sayının b.ninci Bit'ini 1 yapar. BSF PORTA,3 PORTA=b'00000000' ise, PORTA←b'00001000' RLF f,d Rotate Left f F registeri içerisideki sayıyı bir pozisyon sola kaydırır. Registeriden taşarak Carry bayrağına yazılan bit, LSB'ye yazılır. Sonuç W veya f registerine yüklenir. RLF KAY,0 KAY=b'10110110' ise, d=0 olduğundan W←01101101 d=1 olsaydı KAY←01101101 RRF f,d Rotate Right f F registeri içerisindeki sayıyı bir pozisyon sağa kaydırılır.Registeriden taşarak Carry bayrağına yazılan bit, MSB'ye yazılır. Sonuç W veya f registerine yüklenir. RRF KAY,1 KAY=b'10110111' ise, d=1 olduğundan KAY←11011011 d=0 olsaydı W←11011011
  • 21. Komut ve Örnek İngilizce tanımı Türkçe Açıklaması SWAPF f,d Swap nibbles in f F registerinin içerisindeki ilk dört bit ile son dört biti yer değiştirir. Sonuç W veya f registerine yüklenirç SWAPF DEG,1 DEG=b'00101111' ise, d=1 olduğundan d=0 olsaydı DEG←11110010 W←11110010 Program Akışını Kontrol Etme Komutları GOTO GOTO k DONGU Go to address Program akışı k adresine dallanır. Program, DONGU etiketinin yazıldığı yere dallanır ve burdan itibaren devam eder. CALL CALL k TIMER Call subroutine Program akışı k etiketinin bulunduğu yerdeki alt programa dallanır Program TIMER etiketinin yazıldığı alt program satırının bailangıcına dallanır ve buradan itibaren devam eder. RETURN Return from subrautine Alt program komutlarının en sonuna yazılan bu komut, program akışını ana programa geri döndürür. RETLW Return With Literal in W Program akışını alt programdan ana programa döndürür ve W regis- terine k sabitini yükler RETLW H'2F' Alt programdan ana programa döndürür ve W registerine 2F yüklenir. RETFIE Return From Interrup Program akışını kesme alt programından ana programa döndürür. BTFSC f,b Bit Test F, Skip if Clerar F registerinin b.ninci bitini test eder. Eğer bu bit "0" sa program akışı bir sonraki komuta geçer.
  • 22. BTFSC PORTA,2 PORTA=b'0000100' ise, →1 PORTA=b'00000000' ise, →2 ↓←← BTFSC PORTA,2 →→↓ "2" ↓ GOTO ↓ START ←←↓ "1" ↓→→ MOVLW h'FF' BTFSS f,b Bit Test F, Skip if Set F registerinin b.ninci bitini test eder. Eğer bu bit "1" se program akışı bir sonraki komuta geçer. BTFSS PORTA,0 PORTA=b'00000001' ise, →1 PORTA=b'00000000' ise, →2 ↓←← BTFSS PORTA,0 →→↓ "1" ↓ GOTO ↓ START ←←↓ "2" ↓→→ MOVLW h'FF' DECFSZ f,d Decrement f, Skip if Zero F registerinin içeriğini "1" azaltır. Registerinin içeriği 0'sa bir sonraki komuta atlar. Sonuç W veya f registerine yazılır. DECFSZSAYAC,1 SAYAC=h'2F' ise, 2F-1=2E d=0 olsaydı W← h'2E' d=1 olduğundan SAYAC← h'2E' INCFSZ INCFSZ F,d Increment f, Skip if Zero F Registerinin içeriğini "1" arttırır. Registerin içeriği 0'sa bir sonraki komuta atlar. Sonuç W veya f registerine yazılır. SAYAC=h'2F' ise, 2F+1=30 d=1 SAYAC←h'30' d=0 W←h'30'
  • 23. Mikrodenetleyici Kontorol Komutları Komut ve Örnek İngilizc e Tanımı Türkçe Açıklaması CLRWD T Clear Watchdog Timer Watchdog timer'ı sıfırlar. Ayrıca watchdog timer'ın prescalar değerini de sıfırlar. Status bit'lerinden TO ve PD'yi "1" yapar. SLEEP Go into stand y mode Mikrodenetleyiciyi uyuma moduna geçirerek güç harcamasını azaltır. Mikrodenetleyici uyuma modundan reseti watchdog timer ce TOCKI giriş vasıtasıyla çıkar. Mantıksal Komutlar ANDLW k AND Literal With W W registerinin içeriği ile k sabitine AND işlemi uygular. Sonuç W registerine yazılır. ANDLW b'0011000 1' W=b'10011101' ise, b'00110001' sabitinin değeri b'00010001' AND işlemi sonucu W←b'00010001' ANDWF f,d AND W with f W registeri ile file registeri içeriğine AND işelemi uygular. Sonuç W registerine yazılır. ANDWF SAYAC,1 W=b'1111111 1' ise, SAYAC=b'11011 11 ise, b'11011110' AND işlemi sonucu d=0 ise W←b'11011110' d=1 olursa SAYAC←b'11011110'
  • 24. IORLW k Inclusive OR Literal with W W registerinin içeriği ile k sabitine OR işlemi uygular. Sonuç W registerine yazılır. IORLW b'00101000 ' W=b'10000100' ise b'00101000' sabitin değeri b'10101100' OR sonucu W ← b'10101100' IORWF f,d W registerinin içeriği ile file registerinin içeriğine OR işlemi uygular. Sonuç W veya f registerine yazılır. IORWF SAYAC,1 W=b'10000100 ' ise, SAYAC=b'001010 0 ise, b'10101100' OR sonucu d=o ise W ← b'10101100'd=1 olursa SAYAC←b'10101100' XORL W k Exclusive OR Literal with W W registerinin içeriği ile k sabitine XOR işlemi uygular. Sonuç W registerine yazılır. XORL W b'00101100 ' W= b'11111111' ise XOR b'00101100 sabitin değeri b'11010011 XOR sonucu W ← b'11010011' XORW F F,d Exclusiv e OR W with f W registeri ile f register file register içeriğine XOR işlemini uygular. Sonuç W veya f registerine yazılır. XORW F SAYAC,1 W=b'00100000 ' ise, SAYAC=b'001010 0 ise, b'00001000' XOR sonucu d=0 ise W ← b'00001000' d=1 olursa SAYAC←b'00001000'
  • 25. Aritmetik İşlem Komutları Komut ve Örnek İngilizce Tanımı Türkçe Açıklaması ADDWF f,d Add W with f W registerinin içeriğini f registeri ile toplar. Sonuç W veya f registe- rine yazılır. ADDWF TOP,0 W=h'2A' ise, TOP=h'31'ise, h'2A'+h'31'=h'5B2 d=1 ise TOP←h'5B' d=0 olduğundan W←h'5B' ADDLW k Add Literal and W W registerinin içeriğini k sabit değeri ile tolar. Sonuç W registerine yazılır. ADDLW h'2A' W=h'B0' ise, h'B0'+h'2A'=h'DA' W← h'DA' SUBLW k Subtract W from Literal K sabit değerinden W registerinin içeriğini çıkarır. Sonuç W registerine yazılır. SUBLW H'93' W=h'83' ise, h'93'-h'83'=h'1 W← h'10' SUBWF f,d Subtract W from File register F registerinin içeriğinden W registerinin içeriğini çıkarır. Sonuç W veya f registerine yazılır. SUBWF CIK,1 W=h'73' ise, CIK=h'90' ise, h'90'-h'73'=h'17' d=0 ise W←h'17' d=1 olduğundan CIK←h'17' Sonucun pozitif, negatif veya sıfır olmasına göre STATUS registerinin C ve Z bitleri kontrol edilir.
  • 26. Başla PortB’nin tüm uçlarını çıkış olarak tanıt PortB’ye 0x0F yükle Döngü Son
  • 27. ÖRNEK PROGRAM KOMUTLARI ;======PICTEST1.ASM=========================06 / 03 / 2016======== LIST P= 16F628A ;--------------------------------------------------------------------------------------------------------- ; Adres tanımlama bloğu STATUS EQU 0x03 PORTB EQU 0x06 TRISB EQU 0x86 ;--------------------------------------------------------------------------------------------------------- ORG 0x00 ; programı 0x00’dan başlat ;--------------------------------------------------------------------------------------------------------- ; Port’ların durumunu belirleme bloğu BASLA CLRF PORTB ; PortB’nin içini sıfırla BSF STATUS,5 ; BANK1’e geç CLRF TRISB ; PortB’nin uçlarını çıkış yap BCF STATUS,5 ; tekrar BANK0’a geç ;--------------------------------------------------------------------------------------------------------- ; Program bloğu MOVLW 0x0F ; W saklayıcısına 0x0F’i yükle MOVWF PORTB ; W ’yi portB’ye yükle ;--------------------------------------------------------------------------------------------------------- ; Sonlandırma bloğu DONGU GOTO DONGU END ;=============================================================
  • 28. ÖĞR. GÖR. KADİR CENGİZ ELEKTRONİK VE OTOMASYON BÖLÜMÜ MUĞLA MESLEK YÜKSEKOKULU kcengiz@mu.edu.tr