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