Bir çok açıklamalı asm kodlarının yanı sıra çeşitli komutların detaylı bilgileri mikrodenetleyici bilgileri bulunmakta hazırlayan emeği geçen kişilere teşekkürler.
KOMUT |
AÇIKLAMA |
GEREKLİ SÜRE |
ETKİLEDİĞİ BAYRAK |
ADDWF f,d | w ile f dosyasının içeriğini toplar sonucu d’ nin belirttiği yere yazar |
1 |
C,DC,Z |
ANLWF f,d | w ile f dosyasının içeriğini AND işlemine tabi tutar sonucu d’ nin belirttiği yere yazar |
1 |
Z |
CLRF f | f ile belirtilen dosyanın (adresin) içeriğini “00” yap |
1 |
Z |
COMP f,d | f dosyasının tersini alır, sonucu d’ nin gösterdiği yere yazar |
1 |
Z |
DECF f,d | f dosyasının içeriğini bir azaltır sonucu d’ nin belirttiği yere yazar |
1 |
Z |
DECFSZ f,d | f dosyasının içeriğini bir azaltır ve sonuç 0’ ise yeni değeri d’ nin belirttiği yere yazar |
1 (2) |
|
INCF f,d | f dosyasının içeriğini bir azaltır sonucu d’ nin belirttiği yere yazar |
1 |
Z |
INCFSZ f,d | f dosyasının içeriğini bir azaltır ve sonuç 0’ sa yeni değeri d’ nin belirttiği yere yazar |
1 (2) |
|
IORWF f,d | w ile f dosyasının içeriğini OR işlemine tabi tutar ve sonucu d’ nin belirttiği yere yazar. |
1 |
Z |
MOVF f,d | (movfw f) file belirtilen dosyanın içeriğini w’ e kopyala |
1 |
Z |
MOVWF f | w’ ün içeriğini f ile belirtilen dosyaya kopyala |
1 |
|
NOP | işlem yapmadan geç |
1 |
|
RLF f,d | f dosyasının içindeki tüm bitleri bir sola kaydır ve sonucu d’ nin belirttiği yere yaz |
1 |
C |
RRF f,d | f dosyasının içindeki tüm bitleri bir sağa kaydır ve sonucu d’ nin belirttiği yere yaz |
1 |
C |
SUBWF f,d | f dosyasından w dosyasında bulunan sayıyı çıkart ve sonucu d’ nin belirttiği yere yaz |
1 |
C, DC, Z |
SWAP f,d | f dosyasının alt dört biti ile üst dört bitini yer değiştir. |
1 |
|
XORWF f,d | f dosyasının içeriğini w dosyasında bulunan sayı ile XOR işlemine tabi tut ve sonucu d’ nin belirttiği yere yaz |
1 |
|
BCF f,d | f dosyasındaki b bitini “0” yap |
1 |
|
BSF f,d | f dosyasındaki b bitini “1” yap |
1 |
|
BTFSZ f,d | f dosyasındaki b bitini test et “0” ise bir sonraki komuta git |
1 (2) |
|
BTFSS f,d | f dosyasındaki b bitini test et “1” ise bir sonraki komuta git |
1 (2) |
C, DC, Z |
ADDLW k | w dosyasındaki değer ile k sayısını topla |
1 |
Z |
ANDLW k | w dosyasındaki değer ile k sayısını AND işlemine tabi tut ve sonucu w’ ye yaz |
2 |
|
CALL k | k ile belirtilen alt programa git |
1 |
|
CLRWDT | watchdog timer’ i temizle |
1 |
TO, PD |
GOTO k | k ile belirtilen adrese git |
2 |
|
IORLW k | w dosyasındaki değer ile k sayısını OR işlemine tabi tut ve sonucu w’ e yaz |
1 |
Z |
MOVLW k | k sayısını w’ e yaz |
1 |
|
RETFIE | kesme ile geldiğin yere git |
2 |
|
RETLW k | w’ e k değerini yükleyip call ile geldiğin yere geri dön |
2 |
|
RETURN | w’ nin içeriğini değiştirmeden call ile geldiğin yere geri dön |
2 |
|
SLEEP | PIC’ i bekleme veya uyuma durumuna geçir |
1 |
TO, PD |
SUBLW k | k sayısından w dosyasındaki değeri çıkart sonucu w’ e yaz |
1 |
C, DC, Z |
XORLW k | k sayısı ile w dosyasında bulunan sayıyı XOR işlemine tabi tut ve sonucu w’ e yaz |
1 |
Z |
Portd bağlı ledleri yakıp söndüren flip-flop programı
Portd bağlı ledleri 4’ er 4‘ er yakıp söndürme
Portd bağlı ledleri sola doğru döndüren program
Portd bağlı ledleri sağa doğru döndüren program
Portd bağlı ledleri binary olarak saydırma
Portd bağlı ledleri desimal olarak saydıran program
Data blok’ a bulunan değerlere göre 7 segment displayi direk olarak portd’ de sürme
Step motor’u sola doğru döndürme
Step motor’u sağa doğru döndüren program
Lcd’ nin tek satıra yazı yazma
Lcd displayde çift satır yazı yazma
Porta’ daki bilgileri portd yazan program
Portc’ deki hexsadesimal bilgiyi portd’ de desimale çeviren program
Rb0/ınt kesmesinin kullanılması
Tımer0 kullanılarak porta.4 ucundan gelen 2 palste 1 sayan program
Kesme kullanılarak t0′ ın zamanlayıcı olarak kullanılması
Karşılaştırma modu ccpr1x ve tmr1x saklayıcılarını karşalaştırım buna göre çıkış verme
Pwm modu pals genişliği modülasyonu
Analog 0 (porta.0) gelen analog bilginin alt 8 bitini port d yazan program
Kesme kullanılarak yapılmış analog dijital çevirici uygulaması
Seri porta 19200b hızında bilgi gönderen program
Seri porttan 19200b hızında bilgi alan program
Seri port ile aynı anda bilgi alıp veren program
Flash hafızaya ve dahili eeproma program yazma
Flash program hafızanın 30h ardesine 15h sayısı yazan program
Eeprom data hafızanın 5. adresine 15 yazıp okuyan program
Flash program hafıza’ nın 30h adresine 15h yazıp okuyan program
Senkron seri haberlesme spı uygulamaları
93c56 üç tel mantığı ile çalışan harici seri eeprom’ a yazma ve okuma programı
I2c iki tel mantığı ile 24c02 seri eeproma bilgi yazma ve okuma
PORTD’ yi bağlı ledleri yakıp söndüren (flip-flop) programı
list p=16f877 #include__CONFIG 3F71H R6 EQU H'0020' R7 EQU 21H org 00h ;Power on güç verildiğinde bu adresten çalışmaya başlar goto START ;********************************************************************************************************************** ; GİRİŞ – ÇIKIŞ AYARI YAPILIYOR ;********************************************************************************************************************** START clrf PORTD ; PORTD çıkışları 0 yapıldı bsf STATUS,RP0 ; bank1’ e geçildi movlw 0x00 ; w registerine 0000-0000 yükle clrf TRISD ; PORTD çıkış yapıldı bcf STATUS,RP0 ; bank0 j1 movlw 0xff ; w registerine ff yükle (1 1 1 1 1 1 1 1) movwf PORTD ; PORTD' ye bağlı LED ler yandı call zaman ; zaman programına cağır movlw 0x0 ; w registerine 00 yükle (0 0 0 0 0 0 0 0) movwf PORTD ; PORTD' ye bağlı LED ler söndü call zaman ; zaman programını çağır goto j1 ; j1'e git ;************************************ ; BEKLETME ZAMAN PROGRAMI ;************************************ zaman movlw .255 ; desimal olarak 255 sayısını w registerine yükle movwf R7 ; w registerindeki sayıyı R7 registerine yükle z0 movlw .255 ; desimal olarak 255 sayısını w registerine yükle movwf R6 ; w registerindeki sayıyı R6 registerine yükle z1 decfsz R6,F ; R6 nin değerini bir azalt ve 0 değilse goto z1 ; Z1 ye git decfsz R7,F ; R7 in değerini bir azalt ve 0 değilse goto z0 ; Z0 e git retlw 00 ; geldiğin yere geri git END
PORTD’ ye bağlı ledleri 4’ er 4‘ er yakıp söndüren program,
list p=16f877 #include__CONFIG 3F71H R6 EQU H'0020' R7 EQU 21H org 00h ;Power on güç verildiğinde bu adresten çalışmaya başlar goto START ;********************************** ; GİRİŞ – ÇIKIŞ AYARI YAPILIYOR ;********************************** START clrf PORTD ; PORTD çıkışları 0 yapıldı bsf STATUS,RP0 ; bank1’ e geçildi movlw 0x00 ; w registerine 0000-0000 yükle clrf TRISD ; PORTD’ nin çıkış yapıldı bcf STATUS,RP0 ; bank0 j1 movlw 0fh ; w registerine 0f yükle (0 0 0 0 1 1 1 1) movwf PORTD ; PORTD' ye bağlı LED ler yandı call zaman ; zaman programına cağır movlw b’111100000’ ; w registerine 00 yükle (1 1 1 1 1 0 0 0 0) movwf PORTD ; PORTD' ye bağlı LED ler söndü call zaman ; zaman programını çağır goto j1 ; j1'e git ;******************************* ; BEKLETME ZAMAN PROGRAMI ;******************************* zaman movlw .255 ; desimal olarak 255 sayısını w registerine yükle movwf R7 ; w registerindeki sayıyı R7 registerine yükle z0 movlw .255 ; desimal olarak 255 sayısını w registerine yükle movwf R6 ; w registerindeki sayıyı R6 registerine yükle z1 decfsz R6,F ; R6 nin değerini bir azalt ve 0 değilse goto z1 ; Z1 ye git decfsz R7,F ; R7 in değerini bir azalt ve 0 değilse goto z0 ; Z0 e git retlw 00 ; geldiğin yere geri git END
PORTD’ ye bağlı ledleri sağa doğru döndüren program
list p=16f877 #include__CONFIG 3F71H R0 EQU H'0020' R6 EQU 21H R7 EQU 22h org 00h ;Power on güç verildiğinde bu adresten çalışmaya başlar goto START ;****************************************** ; GİRİŞ – ÇIKIŞ AYARI YAPILIYOR ;***************************************** START clrf PORTD ; PORTD çıkışları 0 yapıldı bsf STATUS,RP0 ; bank1’ e geçildi movlw 0x00 ; w registerine 0000-0000 yükle clrf TRISD ; PORTD’ nin çıkış yapıldı bcf STATUS,RP0 ; bank0 movlw 01h ; w registerine 00 yükle 0 0 1) movwf R0 j1 movfw R0 movwf PORTD ; call zaman ; zaman programına çağır rrf R0,f btfss STATUS,0 ;carr biti 1 oldu mu ? goto j1 ; j1'e git rrf R0,f ; goto j1 ;******************************* ; BEKLETME ZAMAN PROGRAMI ;******************************* zaman movlw .255 ; desimal olarak 255 sayısını w registerine yükle movwf R7 ; w registerindeki sayıyı R7 registerine yükle z0 movlw .255 ; desimal olarak 255 sayısını w registerine yükle movwf R6 ; w registerindeki sayıyı R6 registerine yükle z1 decfsz R6,F ; R6 nin değerini bir azalt ve 0 değilse goto z1 ; Z1 ye git decfsz R7,F ; R7 in değerini bir azalt ve 0 değilse goto z0 ; Z0 e git retlw 00 ; geldiğin yere geri git END
Yukarıda özetler verildi;
Şifre-Pass: 320volt.com
Yayım tarihi: 2009/05/24 Etiketler: açıklamalı asm kodları, assembly asm örnekleri, microchip pic projeleri, pic16f877 örnekler, PIC16F877 örnekleri, pwm eeprom assembly, rs232 bilgi gönderme, rs232 bilgi okuma