ASM Uygulaması ( Aritmetik İşlemler )

ucdemirhan

Üye
Katılım
7 Ocak 2021
Mesajlar
2
Puanları
1
Yaş
25
Bizden istenen :
K0DCHA.jpg


Devre Şeması :
Cy5cjL.jpg



Kod:
;PROGRAM-17) 8-bit’lik sayıların çıkarılmasına örnek program
;(büyük sayıdan küçük sayıyı çıkarma). PORTB saklayıcısı
;içerisindeki h’5A’ sayısından W saklayıcı içerisindeki h’53’
;sayısını çıkarır, sonucu PORTB’ye bağlı LED’lerde gösteriri.
;Çıkarma sonucunun negatif veya pozitif olduğunu RA3’e bağlı LED’de gösterir.
   
;===PROG17.ASM====17/05/2005================================
LIST    P=16F628A
INCLUDE    "P16F628A.INC"
__CONFIG _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_ON & _BODEN_OFF & _LVP_OFF & _DATA_CP_OFF & _CP_OFF
;-----------------------------------------------------------
ORG        h'00'
CLRF        PORTB        ;PORTB'deki LED'leri söndür
CLRF        PORTA        ;PORTA'daki LED'leri söndür
BANKSEL    TRISB        ;BANK1'e geç
MOVLW        b'11110111'    ;PORTA.3 çıkış
MOVWF        TRISA      
CLRF        TRISB        ;PORTB tüm uçlar çıkış
BANKSEL    PORTB        ;BANK0'a geç
MOVLW        h'5A'        ;W ? h’5A’
MOVWF        PORTB        ;PORTB ? W
MOVLW        h'53'        ;W ? h’53’
SUBWF        PORTB, F        ;PORTB ? PORTB - W
BTFSC        STATUS,0        ;STATUS C=1 mi?
BSF        PORTA,3        ;Evet, çıkarma sonucu pozitif
DONGU
GOTO    DONGU
END
;----------------------------------------------------------

Kod:
;PROGRAM-18) 8-bit’lik sayıların çıkarılmasına örnek program
;(küçük sayıdan büyük sayıyı çıkarma). PORTB saklayıcısı içerisindeki
;h’52’ sayısından W saklayıcısı içerisindeki h’53’ sayısını çıkaran,
;sonucu PORTB’ye bağlı LED’lerde gösteren program.

;===PROG18.ASM====17/05/2005================================
        LIST    P=16F628A
        INCLUDE    "P16F628A.INC"
        __CONFIG _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_ON & _BODEN_OFF & _LVP_OFF & _DATA_CP_OFF & _CP_OFF
;-----------------------------------------------------------
        ORG    h'00'
        CLRF    PORTB        ;PORTB'deki LED'leri söndür
        CLRF    PORTA        ;PORTA'daki LED'leri söndür
        BANKSEL    TRISB        ;BANK1'e geç
        MOVLW    b'11110111'        ;PORTA.3 çıkış
        MOVWF    TRISA      
        CLRF    TRISB        ;PORTB tüm uçlar çıkış
        BANKSEL    PORTB        ;BANK0'a geç
BASLA
        MOVLW    h'53'        ;W ? h’5A’
        MOVWF    PORTB        ;PORTB ? W
        MOVLW    h'5A'        ;W ? h’53’
        SUBWF    PORTB, F        ;PORTB ? PORTB - W
        COMF    PORTB, F        ;PORTB'yi tersle
        INCF    PORTB, F        ;PORTB'ye 1 ekle
        BTFSC    STATUS,0        ;STATUS C=1 mi?
        BSF    PORTA,3        ;Evet, çıkarma sonucu pozitif
DONGU
        GOTO    DONGU
        END
;-----------------------------------------------------------

Kod:
;PROGRAM-19) 16-bit’lik sayıların çıkarılmasına örnek program ;
;(büyük sayıdan küçük sayıyı çıkarma). h'0004' sayısından h'0001'
;sayısını çıkaran program. Program çalıştığında çıkarma sonucunun
;alt bayt'ı PortB'deki LED'lerde görülür. Üst bayt'ı görmek için RA0 butonuna basılır.

;===PROG19.ASM====17/05/2005================================
LIST    P=16F628A
INCLUDE    "P16F628A.INC"
__CONFIG _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_ON & _BODEN_OFF & _LVP_OFF & _DATA_CP_OFF & _CP_OFF
;-----------------------------------------------------------
CBLOCK    20h
AL,AH,BL,BH            ;Değişken adreslerini atama bloğu
ENDC
ORG        h'00'    ;Program kodlarının başlangıç adresi
CLRF        PORTB    ;PortB'yi sıfırla
BANKSEL     TRISB    ;BANK1'e geç
CLRF        TRISB    ;PortB'nin tüm uçları çıkış
MOVLW        H'FF'    ;W ? h'FF'
MOVWF        TRISA    ;PortA'nın tüm uçları giriş
BANKSEL     PORTB    ;BANK0'a geç
MOVLW        h'07'    ;W saklayıcıya h’07’ yükle
MOVWF        CMCON    ;W-->CMCON PORTA girişleri dijital
BASLA
MOVLW        h'04'    ;W ? h'04'
MOVWF        AL        ;AL ? h'04'
MOVLW        h'00'    ;W ? h'00'
MOVWF        AH        ;AH ? h'00'  
MOVLW        h'01'    ;W ? h'01'
MOVWF        BL        ;BL ? h'01'
MOVLW        h'00'    ;W ? h'00'
MOVWF        BH        ;BH ? h'00'
CIKAR  
MOVF        BL, W    ;W ? BL
SUBWF        AL, F    ;AL=AL-W(BL), alt bayt sonucu
BTFSS        STATUS, 0    ;CARRY BAYRAĞI=0 mı ?
DECF        AH, F    ;Evet, AH=AH-1    
MOVF        BH, W    ;Hayır, W ? BH
SUBWF        AH, F    ;AH=AH-W(BH), üst bayt sonucu
ALT_BAYT_GOSTER
MOVF        AL, W    ;W ? AL
MOVWF        PORTB    ;Alt bayt sonucunu göster
TEST_RA0
BTFSC        PORTA, 0    ;RA0 butonuna basıldı mı?
GOTO        TEST_RA0    ;Hayır, tekrar test et
MOVF        AH, W    ;Evet, W ? AH
MOVWF        PORTB    ;Üst bayt sonucunu göster.
DONGU
GOTO        DONGU
END
;-----------------------------------------------------------


Herkese merhabalar,
Öğrenciyim.
Mikroişlemci dersini alıyorum. Hocamız bizden bunları uygulamamızı istedi.
Maalesef ki hiçbir şey yapamıyoruz.(Derste öğrenmedik bundan dolayı da yapamıyoruz fakat final sınavında not olarak etkileyecek bir durum.)Yardımcı olabilir misiniz?
Teşekkürler...
 
Burada önemli olan sizin kendi çözümünüzü göstermeniz, kendi gayretinizi ortaya koymanızdır.

Nerede takıldınız? Neleri anlamadınız?

Ortada 3 tane örnek program var ama bunların konuyla bağlantısını anlamadım.

Eğer konuyu anlamadıysanız Orhan Altınbaşak isimli bir yazarın PIC Programlama diye bir kitabı var. Ona bakabilirsiniz.

Meşgul bir meslektaşınızdan teknik bir konuda yardım almak istediğinizi düşünün.

Konu başlığını o konuda teknik bir soru sorduğunuzu belirtecek şekilde ve o konuyla uğraşanların da ilgisini çekecek şekilde nasıl seçerdiniz ?

Yazdığınız soruyu bir kaç kere hızlıca okumakta fayda var. Başkaları sizin ne anlatmak istediğinizi, yazdıklarınıza bakarak anlayabiliyor mu?

Haber gruplarına yazı yazarken koyu renkli, büyük harflerle yazılmaz. Büyük harflerle yazmak BAĞIRMAK anlamına gelir.

Gereksiz yere alıntı yapılmaz. Bunun nedeni gereksiz yere konunun akışını bozmasıdır. Haber grupları için bazı insanlar haber okuyucu kullanır. Siz gereksiz yere alıntı yaptığınızda baştan sona aşağı doğru hareket etmesi gerekir.

Yazılım mühendisliği ile ilgili konuların konuşulduğu bir ortamda, yeni üyelerin gönderilerini oylayıp, gerekiyorsa düzenleme, açıklama yapacak kadar puan kazanmışız.

Yeni bir üye ileti gönderdiğinde bu iletiyi eksiksiz soru, kullanıcı ya da topluluk tarafından düzenlenmesi gerekiyor ya da konu dışı diye etiketliyorsunuz.

Buna üçleme deniliyor. Eğer 3 kişi bir iletiyi eksiksiz, güzel soru diye etiketlerse o soru yayınlanıyor. Hatta böyle güzel soru soranlara teşvik için artı oy verin diye öneriliyor. Yok eğer kullanıcı tarafından düzenlenmesi gerekiyorsa o şekilde etiketleniyor.

Konu dışı örneğin son tüketici elektroniğine giren konular kabul edilmiyor.

Kısacası adamlar güzel bir sistem kurmuş.

Derste bazı konular anlatılmasa da sizin araştırarak öğrenmeniz gerekir. Üniversiteler, eğitimin yanında bilgiye nasıl ulaşılabileceğini de göstermelidirler.

PIC Assembly konusunda kaynak olarak bu dersten faydalanabilirsiniz.

Benim düşünceme göre C ile bu dersin işlenilmesi daha mantıklı.

Assembly öğretilecekse, öğrenci bir sayısal elektronik dersi aldıktan ve artık kendisi bir µ denetleyici ya da işlemci tasarlayabilecek düzeye geldikten sonra öğretilmesi daha doğru olur.

Örneğin PORTB derken aslında bir yazmaçtan bahsediliyor. Ama öğrenciye yazmaç nasıl çalışır, yazmacı oluşturan bileşenler nedir? Bu gibi konuları öğretilmeden Assembly öğretilmesi bana hiç mantıklı gelmiyor.
 
Hocam olmuş mu?
Saygılar...
Bence tam yerinde olmuş. Düzgün soru sorunuz ki ona göre cevap alınız.

Günümüzü unutun sene 1993 veya 94 bırakın herkesin elinde akıllı cepleri herkesin evinde bile bilgisayar yok. Okulda bilgisayar dersi gördük tek masaüstü PC var. 20 kişilik takim halinde tüm sınıf bilgisayar dersi görüp sınav oluyor.

Klavyeye dokunma hayali bile çok fantastik sıranın size gelip PC karşısına oturmak ... Ve ilk bilgiler bit, byte hdd görmediğimiz nesneleri ve isleyislerini akılda tutmak sonra basic program komutlariyla örnek kodlardan sınava girmek daha mı iyi günümüzdekinden?
 

Forum istatistikleri

Konular
127,959
Mesajlar
913,917
Kullanıcılar
449,606
Son üye
rasit.

Yeni konular

Geri
Üst