random zar atma ugulması

Başlatan mmtkr, 26 Mayıs 2022, 13:02:00

mmtkr

İyi günler dilerim hocalarım :)
sadece assembly ile zar atma uygulaması yapmaya çalışıyorum 4*7 led göstergede bunları göstereceğim kullandığım pıc 16f877a daha önce 16f628a ile led göstergeyi kullandım butonlarıda kullandım 16f877a da bu iki işlemi de doğru yapamıyorum random bir şekilde ekranda iki değer göstermesini 0xx0 ledler de şekilde gösterdiğim gibi ayarlamaya çalışıyorum xx olan yere random sayı gelecek ben buton 1 e bastığıma ana döngü içerisinde hangi rakama geldiyse onu ledlerde yakmasını buton ikiye bastığımda ana döngü içerisinde hangi rakama geldiyse onu ledlerde yakmasını ayarlamaya çalışıyorum kurduğum algoritmaya göre çalışması lazım ama olmuyor ekranda 0000 alıyorum ki 0000 hiç tanılamadım

birde config ayarlarını nasıl yaparım 16f628a da olan cmcon file register i 877a da derlemiyor ben butonları giriş olarak nasıl ayarlayacağım

usta bir assembly kodlyacısı değilim haftada 1 saat deney kiti ile haşır neşir oluyorum l

LIST    P=16F877A
INCLUDE    "P16F877A.INC"
ORG 0x00
R6 EQU 0x20
R7 EQU 0x21
BIRa EQU 0x24
        IKIa EQU 0x26
        UCa EQU 0x27
        DORTa EQU 0x28
BESa EQU 0x29
ALTIa EQU 0x30
BIRb EQU 0x24
        IKIb EQU 0x26
        UCb EQU 0x27
        DORTb EQU 0x28
BESb EQU 0x29
ALTIb EQU 0x30
        SIFIR EQU 0x31
      BANKSEL TRISD
      CLRF TRISD
      BANKSEL PORTA
      MOVLW H'07'
      MOVWF CMCON
      BANKSEL PORTB
      BCF STATUS,0
   
MOVLW B'11010001'
MOVWF BIRa
MOVLW B'11010010'
MOVWF IKIa
MOVLW b'11010011'
MOVWF UCa
MOVLW b'11010100'
MOVWF DORTa
MOVLW b'11010101'
MOVWF BESa
MOVLW b'11010110'
MOVWF ALTIa
MOVLW B'10110001'
MOVWF BIRb
MOVLW B'10110010'
MOVWF IKIb
MOVLW b'10110011'
MOVWF UCb
MOVLW b'10110100'
MOVWF DORTb
MOVLW b'10110101'
MOVWF BESb
MOVLW b'10110110'
MOVWF ALTIb
MOVLW b'10010000'
MOVWF SIFIR
;********************************************************
ANA
TEKBIR
BTFSZ PORTA,1
CALL YAKBIR
CALL zaman
TEKIKI
BTFSZ PORTA,1
CALL YAKIKI
CALL zaman
TEKUC
BTFSZ PORTA,1
CALL YAKUC
CALL zaman
TEKDORT
BTFSZ PORTA,1
CALL YAKDORT
CALL zaman
TEKBES
BTFSZ PORTA,1
CALL YAKBES
CALL zaman
TEKALTI
BTFSZ PORTA,1
CALL YAKALTI
CALL zaman
CIFTBIR
BTFSZ PORTA,2
CALL YAKBIRb
CALL zaman
CIFTIKI
BTFSZ PORTA,2
CALL YAKIKIb
CALL zaman
CIFTUC
BTFSZ PORTA,2
CALL YAKUCb
CALL zaman
CIFTDORT
BTFSZ PORTA,2
GOTO YAKDORTb
CALL zaman
CIFTBES
BTFSZ PORTA,2
CALL YAKBESb
CALL zaman
CIFTALTI
BTFSZ PORTA,2
CALL YAKALTIb
CALL zaman
SIL
BTFSZ PORTA,3
CALL SON
CALL zaman
GOTO ANA
     
;*******************************************************************
YAKBIR
MOVF BIRa,0
MOVWF PORTD
YAKIKI
MOVF IKIa,0
MOVWF PORTD
YAKUC
MOVF UCa,0
MOVWF PORTD
YAKDORT
MOVF DORTa,0
MOVWF PORTD
YAKBES
MOVF BESa,0
MOVWF PORTD
YAKALTI
MOVF ALTIa,0
MOVWF PORTD
YAKBIRb
MOVF BIRb,0
MOVWF PORTD
YAKIKIb
MOVF IKIb,0
MOVWF PORTD
YAKUCb
MOVF UCb,0
MOVWF PORTD
YAKDORTb
MOVF DORTb,0
MOVWF PORTD
YAKBESb
MOVF BESb,0
MOVWF PORTD
YAKALTIb
MOVF ALTIb,0
MOVWF PORTD
SON
MOVF SIFIR,0
MOVWF PORTD
;*****************************************
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


ANA DÖNGÜ İÇERİSİNDE DEĞERLER SÜREKLİ DÖNÜYOR BUTONA BASTIĞIM AN HANGİ DEĞERDEYSE ONU EKANRA VERİYOR OLARAK TASRALADIM

alisumer

#1
 birkaç sorun var ama en önemlisi

gördüğüm kadarıyla call komutu ile gidilen yerden return komutu ile dönülmüyor yani ilk call komutundan sonra taa ZAMAN sonuna kadar aralıksız akıyor program yığın depolama alanında taşma olacağı kesin gibi sanki.
ayrıca bu şekilde çalışsa bile call zaman komutu boşa yazılmış oluyor 
birde 877 de analog kanallar mevcut onları kapatmadan digital olarak kullanamazsın porta bunlardan biri
Hep meraktan

mmtkr

Alıntı yapılan: alisumer - 29 Mayıs 2022, 23:27:12birkaç sorun var ama en önemlisi

gördüğüm kadarıyla call komutu ile gidilen yerden return komutu ile dönülmüyor yani ilk call komutundan sonra taa ZAMAN sonuna kadar aralıksız akıyor program yığın depolama alanında taşma olacağı kesin gibi sanki.
ayrıca bu şekilde çalışsa bile call zaman komutu boşa yazılmış oluyor 
birde 877 de analog kanallar mevcut onları kapatmadan digital olarak kullanamazsın porta bunlardan biri


hocam analog kanalları nasıl kapatacağım peki ADCON0 FİLE REGİSTERİnı aktif ederek mi

alisumer

ansel-h reg varsa oradan yoksa adcon1 ilk irkaç biti seçim idi hatırladığım kadarıyla bilgi sayfasına bakman gerekecek
Hep meraktan

mehmet

#4
Alıntı yapılan: mmtkr - 30 Mayıs 2022, 11:26:08hocam analog kanalları nasıl kapatacağım peki ADCON0 FİLE REGİSTERİnı aktif ederek mi

DS39582B - Sayfa 41

Biraz mcu kataloglarını okuyunuz...
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
http://www.mehmetbilgi.net.tr
CC BY

mmtkr

Alıntı yapılan: mehmet - 30 Mayıs 2022, 13:01:38DS39582B - Sayfa 41

Biraz mcu kataloglarını okuyunuz...
Alıntı yapılan: alisumer - 30 Mayıs 2022, 13:00:24ansel-h reg varsa oradan yoksa adcon1 ilk irkaç biti seçim idi hatırladığım kadarıyla bilgi sayfasına bakman gerekecek

Sağolun hocam

mmtkr

LIST    P=16F877A
INCLUDE    "P16F877A.INC"
ORG 0x00
SAYAC1 EQU 0x20
SAYAC2 EQU 0x21
    BIRa EQU 0x24
        IKIa EQU 0x26
        UCa EQU 0x27
        DORTa EQU 0x28
    BESa EQU 0x29
    ALTIa EQU 0x30
    BIRb EQU 0x24
        IKIb EQU 0x26
        UCb EQU 0x27
        DORTb EQU 0x28
    BESb EQU 0x29
    ALTIb EQU 0x30
        SIFIR EQU 0x31
      BANKSEL TRISB
      CLRF TRISB
      BANKSEL TRISA
      MOVLW 0x06
      MOVWF ADCON1
      MOVLW 0xCF
      MOVWF TRISA
     
      BANKSEL PORTB
     
MOVLW B'11010001'   
MOVWF BIRa
MOVLW B'11010010'   
MOVWF IKIa
MOVLW b'11010011'   
MOVWF UCa
MOVLW b'11010100'   
MOVWF DORTa
MOVLW b'11010101'   
MOVWF BESa
MOVLW b'11010110'   
MOVWF ALTIa
MOVLW B'10110001'   
MOVWF BIRb
MOVLW B'10110010'   
MOVWF IKIb
MOVLW b'10110011'   
MOVWF UCb
MOVLW b'10110100'   
MOVWF DORTb
MOVLW b'10110101'   
MOVWF BESb
MOVLW b'10110110'   
MOVWF ALTIb
MOVLW b'10010000'   
MOVWF SIFIR
;********************************************************
ANA
TEKBIR
    BTFSZ PORTA,1
    CALL YAKBIR
    CALL zaman
TEKIKI
    BTFSZ PORTA,1
    CALL YAKIKI
    CALL zaman
TEKUC
    BTFSZ PORTA,1
    CALL YAKUC
    CALL zaman
TEKDORT
    BTFSZ PORTA,1
    CALL YAKDORT
    CALL zaman
TEKBES
    BTFSZ PORTA,1
    CALL YAKBES
    CALL zaman
TEKALTI
    BTFSZ PORTA,1
    CALL YAKALTI
    CALL zaman
CIFTBIR
    BTFSZ PORTA,2
    CALL YAKBIRb
    CALL zaman
CIFTIKI
    BTFSZ PORTA,2
    CALL YAKIKIb
    CALL zaman
CIFTUC
    BTFSZ PORTA,2
    CALL YAKUCb
    CALL zaman
CIFTDORT
    BTFSZ PORTA,2
    GOTO YAKDORTb
    CALL zaman
CIFTBES
    BTFSZ PORTA,2
    CALL YAKBESb
    CALL zaman
CIFTALTI
    BTFSZ PORTA,2
    CALL YAKALTIb
    CALL zaman
SIL
BTFSC PORTA,3
CALL SON
CALL zaman
GOTO ANA
     
;*******************************************************************
YAKBIR
MOVF BIRa,0
MOVWF PORTB
RETURN
YAKIKI
MOVF IKIa,0
MOVWF PORTB
RETURN
YAKUC
MOVF UCa,0
MOVWF PORTB
RETURN
YAKDORT
MOVF DORTa,0
MOVWF PORTB
RETURN
YAKBES
MOVF BESa,0
MOVWF PORTB
RETURN
YAKALTI
MOVF ALTIa,0
MOVWF PORTB
RETURN
YAKBIRb
MOVF BIRb,0
MOVWF PORTB
RETURN
YAKIKIb
MOVF IKIb,0
MOVWF PORTB
RETURN
YAKUCb
MOVF UCb,0
MOVWF PORTB
RETURN
YAKDORTb
MOVF DORTb,0
MOVWF PORTB
RETURN
YAKBESb
MOVF BESb,0
MOVWF PORTB
RETURN
YAKALTIb
MOVF ALTIb,0
MOVWF PORTB
RETURN
SON
MOVF SIFIR,0
MOVWF PORTB
RETURN
;*****************************************
zaman
 MOVLW h'FF'
 MOVWF SAYAC1
DONGU1
 MOVLW h'FF'
 MOVWF SAYAC2
DONGU2
 DECFSZ SAYAC2,F
 GOTO DONGU2
 DECFSZ SAYAC1,F
 GOTO DONGU1
 RETURN
END

hocam şu hali ile gördüğünüz eksik var mı
Alıntı yapılan: alisumer - 29 Mayıs 2022, 23:27:12birkaç sorun var ama en önemlisi

gördüğüm kadarıyla call komutu ile gidilen yerden return komutu ile dönülmüyor yani ilk call komutundan sonra taa ZAMAN sonuna kadar aralıksız akıyor program yığın depolama alanında taşma olacağı kesin gibi sanki.
ayrıca bu şekilde çalışsa bile call zaman komutu boşa yazılmış oluyor 
birde 877 de analog kanallar mevcut onları kapatmadan digital olarak kullanamazsın porta bunlardan biri

Alıntı yapılan: mehmet - 30 Mayıs 2022, 13:01:38DS39582B - Sayfa 41

Biraz mcu kataloglarını okuyunuz...

alisumer

#7
en başında hata var sanki EQU değişkenleri ram adreslerine atama yaptığın komut. aynı ram adreslerine birden çok atama yapmışsın sıra ile işlemcide yeterince ram var farklı adresleri kullanmalısın.
BIRa EQU 0x24
BIRb EQU 0x24
mesela burada ikinci atadığın 0x24 numaralı adreste yer alır ilki kaybolur üzerine yazarsın yani
Hep meraktan

mmtkr

Alıntı yapılan: alisumer - 30 Mayıs 2022, 22:23:05en başında hata var sanki EQU değişkenleri ram adreslerine atama yaptığın komut. aynı ram adreslerine birden çok atama yapmışsın sıra ile işlemcide yeterince ram var farklı adresleri kullanmalısın.
BIRa EQU 0x24
BIRb EQU 0x24
mesela burada ikinci atadığın 0x24 numaralı adreste yer alır ilki kaybolur üzerine yazarsın yani

Geçen lab dersinde o hatayı fark edip düzetlmiştim kaydetmemişim sağolun hocam

alisumer

#9
tektek equ var yazmak yerine aşağıdaki gibi hatta değişkenin kaç byte yer kaplayacağını da sayı ile belirtebilirsiniz
cblock 0x20
SAY :2
DEG :2
SAYAC         :2
ESK
YEN
OND
endc
şeklinde daha kısa bir yolla değişken tanımlamalarını yapabilirsiniz.böylece 20 den 28 e kadar veri yeri tanımlamış olursunuz
Hep meraktan

mmtkr

Alıntı yapılan: alisumer - 31 Mayıs 2022, 21:11:16tektek equ var yazmak yerine aşağıdaki gibi hatta değişkenin kaç byte yer kaplayacağını da sayı ile belirtebilirsiniz
cblock 0x20
SAY :2
DEG :2
SAYAC         :2
ESK
YEN
OND
endc
şeklinde daha kısa bir yolla değişken tanımlamalarını yapabilirsiniz.böylece 20 den 28 e kadar veri yeri tanımlamış olursunuz

LIST    P=16F877A
INCLUDE    "P16F877A.INC"
ORG 0x00
SAYAC1 EQU 0x20
SAYAC2 EQU 0x21
BIR EQU 0x24
        IKI EQU 0x26
        UC EQU 0x27
        DORT EQU 0x28
BES EQU 0x29
ALTI EQU 0x30
BIRb EQU 0x31
        IKIb EQU 0x32
        UCb EQU 0x33
        DORTb EQU 0x34
BESb EQU 0x35
ALTIb EQU 0x36
        SIFIR EQU 0x37
BANKSEL TRISB
CLRF TRISB
BANKSEL TRISA
MOVLW 0x06
MOVWF ADCON1
MOVLW 0xCF
MOVWF TRISA
BANKSEL PORTB
MOVLW B'11010001'
MOVWF BIR
MOVLW B'11010010'
MOVWF IKI
MOVLW b'11010011'
MOVWF UC
MOVLW b'11010100'
MOVWF DORT
MOVLW b'11010101'
MOVWF BES
MOVLW b'11010110'
MOVWF ALTI
MOVLW B'10110001'
MOVWF BIRb
MOVLW B'10110010'
MOVWF IKIb
MOVLW b'10110011'
MOVWF UCb
MOVLW b'10110100'
MOVWF DORTb
MOVLW b'10110101'
MOVWF BESb
MOVLW b'10110110'
MOVWF ALTIb
;********************************************************
ANA
CIFTBIRBIR
BTFSC PORTA,2
GOTO YAKBIRIKI
NOP
CIFTBIRIKI
BTFSC PORTA,2
GOTO YAKBIRUC
NOP
CIFTBIRUC
BTFSC PORTA,2
GOTO YAKBIRDORT
NOP
CIFTBIRDORT
BTFSC PORTA,2
GOTO YAKBIRBES
NOP
CIFTBIRBES
BTFSC PORTA,2
GOTO YAKBIRALTI
NOP
CIFTBIRALTI
BTFSC PORTA,2
GOTO YAKIKIIKI
NOP
CIFTIKIIKI
BTFSC PORTA,2
GOTO YAKIKIUC
NOP
CIFTIKIUC
BTFSC PORTA,2
GOTO YAKIKIDORT
NOP
CIFTIKIDORT
BTFSC PORTA,2
GOTO YAKIKIBES
NOP
CIFTIKIBES
BTFSC PORTA,2
GOTO YAKIKIALTI
NOP
CIFTIKIALTI
BTFSC PORTA,2
GOTO YAKUCUC
NOP
CIFTUCUC
BTFSC PORTA,2
GOTO YAKUCDORT
NOP
CIFTUCDORT
BTFSC PORTA,2
GOTO YAKUCBES
NOP
CIFTUCBES
BTFSC PORTA,2
GOTO YAKUCALTI
NOP
CIFTUCALTI
BTFSC PORTA,2
GOTO YAKDORTDORT
NOP
CIFTDORTDORT
BTFSC PORTA,2
GOTO YAKDORTBES
NOP
CIFTDORTBES
BTFSC PORTA,2
GOTO YAKDORTALTI
NOP
CIFTDORTALTI
BTFSC PORTA,2
GOTO YAKBESBES
NOP
CIFTBESBES
BTFSC PORTA,2
GOTO YAKBESALTI
NOP
CIFTBESALTI
BTFSC PORTA,2
GOTO YAKALTIALTI
NOP
CIFTALTIALTI
BTFSC PORTA,2
GOTO YAKBIRBIR
NOP
GOTO ANA
;*******************************************************************
YAKBIRBIR
MOVF BIR,0
MOVWF PORTB
CALL GECIKME
CLRF PORTB
MOVF BIRb,0
MOVWF PORTB
CALL GECIKME
CLRF PORTB
GOTO ANA
YAKBIRIKI
MOVF BIR,0
MOVWF PORTB
CALL GECIKME
MOVF IKIb,0
MOVWF PORTB
CALL GECIKME
RETURN
YAKBIRUC
MOVF BIR,0
MOVWF PORTB
CALL GECIKME
MOVF UCb,0
MOVWF PORTB
CALL GECIKME
RETURN
YAKBIRDORT
MOVF BIR,0
MOVWF PORTB
CALL GECIKME
MOVF DORTb,0
MOVWF PORTB
CALL GECIKME
RETURN
YAKBIRBES
MOVF BIR,0
MOVWF PORTB
CALL GECIKME
MOVF BESb,0
MOVWF PORTB
CALL GECIKME
RETURN
YAKBIRALTI
MOVF BIR,0
MOVWF PORTB
CALL GECIKME
MOVF ALTIb,0
MOVWF PORTB
CALL GECIKME
RETURN
YAKIKIIKI
MOVF IKI,0
MOVWF PORTB
CALL GECIKME
MOVF IKIb,0
MOVWF PORTB
CALL GECIKME
RETURN
YAKIKIUC
MOVF IKI,0
MOVWF PORTB
CALL GECIKME
MOVF UCb,0
MOVWF PORTB
CALL GECIKME
RETURN
YAKIKIDORT
MOVF IKI,0
MOVWF PORTB
CALL GECIKME
MOVF DORTb,0
MOVWF PORTB
CALL GECIKME
RETURN
YAKIKIBES
MOVF IKI,0
MOVWF PORTB
CALL GECIKME
MOVF BESb,0
MOVWF PORTB
CALL GECIKME
RETURN
YAKIKIALTI
MOVF IKI,0
MOVWF PORTB
CALL GECIKME
MOVF ALTIb,0
MOVWF PORTB
CALL GECIKME
RETURN
YAKUCUC
MOVF UC,0
MOVWF PORTB
CALL GECIKME
CLRF PORTB
MOVF UCb,0
MOVWF PORTB
CALL GECIKME
RETURN
YAKUCDORT
MOVF UC,0
MOVWF PORTB
CALL GECIKME
MOVF DORTb,0
MOVWF PORTB
CALL GECIKME
RETURN
YAKUCBES
MOVF UC,0
MOVWF PORTB
CALL GECIKME
MOVF BESb,0
MOVWF PORTB
CALL GECIKME
RETURN
YAKUCALTI
MOVF UC,0
MOVWF PORTB
CALL GECIKME
MOVF ALTIb,0
MOVWF PORTB
CALL GECIKME
RETURN
YAKDORTDORT
MOVF DORT,0
MOVWF PORTB
CALL GECIKME
MOVF DORTb,0
MOVWF PORTB
CALL GECIKME
RETURN
YAKDORTBES
MOVF DORT,0
MOVWF PORTB
CALL GECIKME
MOVF BESb,0
MOVWF PORTB
CALL GECIKME
RETURN
YAKDORTALTI
MOVF DORT,0
MOVWF PORTB
CALL GECIKME
MOVF ALTIb,0
MOVWF PORTB
CALL GECIKME
RETURN
YAKBESBES
MOVF BES,0
MOVWF PORTB
CALL GECIKME
MOVF BESb,0
MOVWF PORTB
CALL GECIKME
RETURN
YAKBESALTI
MOVF BES,0
MOVWF PORTB
CALL GECIKME
MOVF ALTIb,0
MOVWF PORTB
CALL GECIKME
RETURN
YAKALTIALTI
MOVF ALTI,0
MOVWF PORTB
CALL GECIKME
MOVF ALTIb,0
MOVWF PORTB
CALL GECIKME
RETURN
;*****************************************
GECIKME
 MOVLW h'FF'
 MOVWF SAYAC1
DONGU1
 MOVLW h'FF'
 MOVWF SAYAC2
DONGU2
 DECFSZ SAYAC2,F
 GOTO DONGU2
 DECFSZ SAYAC1,F
 GOTO DONGU1
 RETURN
END

HOCAM KOD bu halinde sadece 3 basıyor hata nerden kaynaklı olabilir biraz daha değiştirdim kodu

alisumer

#11
işaretçi taşması  yaşarsın gene  ana bloğundan her gittiğin yere goto ile gitmişsin ama alt blokta YAKBIRBIR haricinde hepsinde return komutu kullanmışsın program döneceği yeri bilmiyor goto kullan hepsinde.
2. olarak
YAKBIRBIR de CLRF PORTB kullanmışsın bu güzel görsellik katıyor sayı gösterildikten sonra ekranı siliyor diğer sayılarda yok bu bence ekle


Hep meraktan

alisumer

birde pullup açıktır sende kapatmadıysan
BTFSC PORTA,2
GOTO YAKBIRIKI
NOP
komutu porta2 1 ise dallanır 0 ise nop yapar pullup açıkken tuşa basmadığında sürekli 1 yapar en iyi şartta sürekli aynı sonucu verir eğer bağlantıyı bu düzene uygun yaptın ve değişemiyorsan btfss kullan btfsc yerine.tavsiyem ise bağlantı şeklini değiş pullup kalsın
Hep meraktan

mmtkr

Alıntı yapılan: alisumer - 01 Haziran 2022, 00:00:58birde pullup açıktır sende kapatmadıysan
BTFSC PORTA,2
GOTO YAKBIRIKI
NOP
komutu porta2 1 ise dallanır 0 ise nop yapar pullup açıkken tuşa basmadığında sürekli 1 yapar en iyi şartta sürekli aynı sonucu verir eğer bağlantıyı bu düzene uygun yaptın ve değişemiyorsan btfss kullan btfsc yerine.tavsiyem ise bağlantı şeklini değiş pullup kalsın
hocam en son c ile ccs de yazdım çalıştırdım çok teşekkürler uygun bir zamanımda kodu ve şemayı bir konu başlığında paylaşacağım

alisumer

 :o
LIST    P=16F877A
INCLUDE    "P16F877A.INC"
ORG 0x00
 
 
SAYAC1 EQU 0x20
SAYAC2 EQU 0x21
 
 
BIR EQU 0x24
        IKI EQU 0x26
        UC EQU 0x27
        DORT EQU 0x28
BES EQU 0x29
ALTI EQU 0x30
 
BIRb EQU 0x31
        IKIb EQU 0x32
        UCb EQU 0x33
        DORTb EQU 0x34
BESb EQU 0x35
ALTIb EQU 0x36
        SIFIR EQU 0x37
 
BANKSEL TRISB
CLRF TRISB
BANKSEL TRISA
MOVLW 0x06
MOVWF ADCON1
MOVLW 0xCF
MOVWF TRISA
BANKSEL PORTB
 
 
MOVLW B'11010001'
MOVWF BIR
 
MOVLW B'11010010'
MOVWF IKI
 
MOVLW b'11010011'
MOVWF UC
 
MOVLW b'11010100'
MOVWF DORT
 
MOVLW b'11010101'
MOVWF BES
 
MOVLW b'11010110'
MOVWF ALTI
 
MOVLW B'10110001'
MOVWF BIRb
 
MOVLW B'10110010'
MOVWF IKIb
 
MOVLW b'10110011'
MOVWF UCb
 
MOVLW b'10110100'
MOVWF DORTb
 
MOVLW b'10110101'
MOVWF BESb
 
MOVLW b'10110110'
MOVWF ALTIb
;********************************************************
ANA
 
CIFTBIRBIR
BTFSC PORTA,2
GOTO YAKBIRIKI
NOP
 
CIFTBIRIKI
BTFSC PORTA,2
GOTO YAKBIRUC
NOP
 
CIFTBIRUC
BTFSC PORTA,2
GOTO YAKBIRDORT
NOP
 
CIFTBIRDORT
BTFSC PORTA,2
GOTO YAKBIRBES
NOP
 
CIFTBIRBES
BTFSC PORTA,2
GOTO YAKBIRALTI
NOP
 
CIFTBIRALTI
BTFSC PORTA,2
GOTO YAKIKIIKI
NOP
 
CIFTIKIIKI
BTFSC PORTA,2
GOTO YAKIKIUC
NOP
 
CIFTIKIUC
BTFSC PORTA,2
GOTO YAKIKIDORT
NOP
 
CIFTIKIDORT
BTFSC PORTA,2
GOTO YAKIKIBES
NOP
 
CIFTIKIBES
BTFSC PORTA,2
GOTO YAKIKIALTI
NOP
 
CIFTIKIALTI
BTFSC PORTA,2
GOTO YAKUCUC
NOP
 
CIFTUCUC
BTFSC PORTA,2
GOTO YAKUCDORT
NOP
 
CIFTUCDORT
BTFSC PORTA,2
GOTO YAKUCBES
NOP
 
CIFTUCBES
BTFSC PORTA,2
GOTO YAKUCALTI
NOP
 
CIFTUCALTI
BTFSC PORTA,2
GOTO YAKDORTDORT
NOP
 
CIFTDORTDORT
BTFSC PORTA,2
GOTO YAKDORTBES
NOP
 
CIFTDORTBES
BTFSC PORTA,2
GOTO YAKDORTALTI
NOP
 
CIFTDORTALTI
BTFSC PORTA,2
GOTO YAKBESBES
NOP
 
CIFTBESBES
BTFSC PORTA,2
GOTO YAKBESALTI
NOP
 
CIFTBESALTI
BTFSC PORTA,2
GOTO YAKALTIALTI
NOP
 
CIFTALTIALTI
BTFSC PORTA,2
GOTO YAKBIRBIR
NOP
 
GOTO ANA
;*******************************************************************
 
 
 
YAKBIRBIR
MOVF BIR,0
MOVWF PORTB
CALL GECIKME
CLRF PORTB
MOVF BIRb,0
MOVWF PORTB
CALL GECIKME
CLRF PORTB
GOTO ANA
 
 
YAKBIRIKI
MOVF BIR,0
MOVWF PORTB
CALL GECIKME
MOVF IKIb,0
MOVWF PORTB
CALL GECIKME
CLRF PORTB
GOTO ANA
 
YAKBIRUC
MOVF BIR,0
MOVWF PORTB
CALL GECIKME
MOVF UCb,0
MOVWF PORTB
CALL GECIKME
CLRF PORTB
GOTO ANA
 
YAKBIRDORT
MOVF BIR,0
MOVWF PORTB
CALL GECIKME
MOVF DORTb,0
MOVWF PORTB
CALL GECIKME
CLRF PORTB
GOTO ANA
 
YAKBIRBES
MOVF BIR,0
MOVWF PORTB
CALL GECIKME
MOVF BESb,0
MOVWF PORTB
CALL GECIKME
CLRF PORTB
GOTO ANA
 
YAKBIRALTI
MOVF BIR,0
MOVWF PORTB
CALL GECIKME
MOVF ALTIb,0
MOVWF PORTB
CALL GECIKME
CLRF PORTB
GOTO ANA
 
YAKIKIIKI
MOVF IKI,0
MOVWF PORTB
CALL GECIKME
MOVF IKIb,0
MOVWF PORTB
CALL GECIKME
CLRF PORTB
GOTO ANA
 
YAKIKIUC
MOVF IKI,0
MOVWF PORTB
CALL GECIKME
MOVF UCb,0
MOVWF PORTB
CALL GECIKME
CLRF PORTB
GOTO ANA
 
YAKIKIDORT
MOVF IKI,0
MOVWF PORTB
CALL GECIKME
MOVF DORTb,0
MOVWF PORTB
CALL GECIKME
CLRF PORTB
GOTO ANA
 
YAKIKIBES
MOVF IKI,0
MOVWF PORTB
CALL GECIKME
MOVF BESb,0
MOVWF PORTB
CALL GECIKME
CLRF PORTB
GOTO ANA
 
YAKIKIALTI
MOVF IKI,0
MOVWF PORTB
CALL GECIKME
MOVF ALTIb,0
MOVWF PORTB
CALL GECIKME
CLRF PORTB
GOTO ANA
 
YAKUCUC
MOVF UC,0
MOVWF PORTB
CALL GECIKME
CLRF PORTB
MOVF UCb,0
MOVWF PORTB
CALL GECIKME
CLRF PORTB
GOTO ANA
 
YAKUCDORT
MOVF UC,0
MOVWF PORTB
CALL GECIKME
MOVF DORTb,0
MOVWF PORTB
CALL GECIKME
CLRF PORTB
GOTO ANA
 
YAKUCBES
MOVF UC,0
MOVWF PORTB
CALL GECIKME
MOVF BESb,0
MOVWF PORTB
CALL GECIKME
CLRF PORTB
GOTO ANA
 
YAKUCALTI
MOVF UC,0
MOVWF PORTB
CALL GECIKME
MOVF ALTIb,0
MOVWF PORTB
CALL GECIKME
CLRF PORTB
GOTO ANA
 
YAKDORTDORT
MOVF DORT,0
MOVWF PORTB
CALL GECIKME
MOVF DORTb,0
MOVWF PORTB
CALL GECIKME
CLRF PORTB
GOTO ANA
 
YAKDORTBES
MOVF DORT,0
MOVWF PORTB
CALL GECIKME
MOVF BESb,0
MOVWF PORTB
CALL GECIKME
CLRF PORTB
GOTO ANA
 
YAKDORTALTI
MOVF DORT,0
MOVWF PORTB
CALL GECIKME
MOVF ALTIb,0
MOVWF PORTB
CALL GECIKME
CLRF PORTB
GOTO ANA
 
YAKBESBES
MOVF BES,0
MOVWF PORTB
CALL GECIKME
MOVF BESb,0
MOVWF PORTB
CALL GECIKME
CLRF PORTB
GOTO ANA
 
YAKBESALTI
MOVF BES,0
MOVWF PORTB
CALL GECIKME
MOVF ALTIb,0
MOVWF PORTB
CALL GECIKME
CLRF PORTB
GOTO ANA
 
YAKALTIALTI
MOVF ALTI,0
MOVWF PORTB
CALL GECIKME
MOVF ALTIb,0
MOVWF PORTB
CALL GECIKME
CLRF PORTB
GOTO ANA
 
 
;*****************************************
 
GECIKME
 MOVLW h'FF'
 MOVWF SAYAC1
DONGU1
 MOVLW h'FF'
 MOVWF SAYAC2
DONGU2
 DECFSZ SAYAC2,F
 GOTO DONGU2
 DECFSZ SAYAC1,F
 GOTO DONGU1
 RETURN
END
bu halini deneseydin neyse
Hep meraktan

Powered by EzPortal