2x7 Segment Displayde 0-99 Arasında Sayma

2x7 Segment Displayde 0-99 Arasında Sayma
      Veri girişi PortB ye Seçme Girişi PortA ya Bağlı uygulamada 0-99 arasında Saydırma işlemini yapıyoruz. aynı anda iki segment in nasıl kontrol edildiğini de açıklamaya çalıştım. gecikme kullanılarak yapılmıştır. 4Mhz osilator hızıyla çalışmanızı tavsiye ederim



							#INCLUDE "P16F877.INC"
ORG 0X00

BIRLER EQU 0X21
ONLAR EQU 0X22
SAYACB EQU 0X23
SAYACO EQU 0X24

GEC1 EQU 0X25
GEC2 EQU 0X26

BANKSEL ADCON1
MOVLW 0X06
MOVWF ADCON1

CLRF TRISA
CLRF TRISB

BANKSEL PORTA
BSF PORTA,1
CLRF PORTB

MOVLW 0X00		;birler basamağı 
MOVWF BIRLER

MOVLW 0X09		;birler basamağı sayaçı
MOVWF SAYACB	;her 9 olduğunda 0 a dönmesi için 

MOVLW 0X00		;onlar basamağı (soldaki 7segment)
MOVWF ONLAR

MOVLW 0X0A		;onlar basamağı sayacı 9 oldugunda 0 a dönsün
MOVWF SAYACO

DONGU1
BSF PORTA,0
BCF PORTA,1		;porta,1 clear seçme ucuna gelen verıyı okuyacaktır
INCF BIRLER,F		;birler basamağı 1-1 artacaktır
MOVF BIRLER,W	;birler basamağının anlık değeri workinge yüklenip
CALL RAKAMLAR	;rakamlardan değer alınacaktır
MOVWF PORTB
CALL GECIKME

BCF PORTA,0		;onlar basamağı için porta,0 seçim ucu kullanılmıştır
BSF PORTA,1		;birler basamağı set edip kapandığında onlar basamağına yazılacaktır değer
MOVF ONLAR,W	;lookup table dan değer alınacaktır
CALL RAKAMLAR
MOVWF PORTB
CALL GECIKME
DECFSZ SAYACB		;her dongude sayac birler 1-1 azalacaktır
CALL DONGU1

MOVLW 0X00		;sayac birler sıfır olunca birler basamğındaki rakam 9 olmuş demektır
MOVWF BIRLER		;tekrardan bu basamağı 0 yapacağız 0-9 arasında sürekli saydığımız için

MOVLW 0X09		;birler sayacı tekrardan 9 yapılıyor
MOVWF SAYACB

DONGU2			;birler basamağı 9 olduğu zaman tekrar 0 ladık
BSF PORTA,1		;şimdi yapmamız gereken soldaki rakamı yani onlar basamağını
BCF PORTA,0		;1 artırmak bu sayede 9 dan sonra 10
INCF ONLAR		; 19 dan sonra 20 .... 89 dan sonra 90 gelecektir
MOVF ONLAR,W
CALL RAKAMLAR
MOVWF PORTB
CALL GECIKME
DECFSZ SAYACO		;sayac onlarda sıfır olduysa demektirki 99 sayısını görüyoruz şimdi bütün işlemleri başa almamız gerekiyor
CALL DONGU1

MOVLW 0X00		;99 olduysa bütün değerleri baştan yükleyip ilk döngüye tekrar dallanıyoruz
MOVWF BIRLER

MOVLW 0X09
MOVWF SAYACB

MOVLW 0X00
MOVWF ONLAR

MOVLW 0X0A
MOVWF SAYACO
CALL DONGU1

GECIKME
	MOVLW 0XF7
	MOVWF GEC1
DON1
	MOVLW 0X47
	MOVWF GEC2
DON2
	DECFSZ GEC2,F
	GOTO DON2
	DECFSZ GEC1
	GOTO DON1
RETURN

RAKAMLAR
ADDWF PCL,F
	RETLW h'3F'                              
	RETLW h'06'                             
	RETLW h'5B'                              
	RETLW h'4F'                             
	RETLW h'66'                             
	RETLW h'6D'                           
	RETLW h'7D'                             
	RETLW h'07'                             
	RETLW h'7F'
	RETLW h'6F'
RETURN
				;~~ www.mikroislemcim.com ~~
END
						



Proje kodlarını ve Proteus ISIS Tasarımını İndirmek İçin Aşağıdaki Bağlantıya Tıklayınız
download





Gönderen : Erdoğan CANBAY
1075
17-09-2018