User account menu

  • Giriş yapın
Anasayfa
Kozmotronik Blog
Yıldız tozundan teknolojiye!

Main navigation

  • Anasayfa
  • Kategoriler
    • Elektronik
    • Programlama
      • Gömülü Programlama
      • Mobil Programlama
    • Programlama Dilleri
  • Seriler
    • Android Bluetooth Programlama
    • JAL Başvuru Kılavuzu
    • Görevci ile Sistem Programlama
  • Projeler
    • Görevci
  • Hakkında

PIC18F2550 Assembly İle 4x7 Segment Gösterge Çoğullama (Multiplexing)

Sayfa yolu

  • Anasayfa
  • PIC18F2550 Assembly İle 4x7 Segment Gösterge Çoğullama (Multiplexing)
Yazar: İsmail Sahillioğlu | Şubat 20, 2017
7 Segment multiplexing devresi

Üye olduğum forumları gezdiğimde Assembly ile PIC programlama konusunda özellikle PIC18 serisi ile ilgili yeteri kadar Türkçe kaynak bulamadım. Bu yüzden ben de yeterli İngilizcem olduğu için İngilizce kaynaklara yöneldim. Şu an hala Assembly programlamada ilerliyorum. Bunu yaparken de Türkçe kaynak sıkıntısından dolayı deneyimlerimi yardımcı kaynak olması adına, özellikle PIC18 serisini Assembly ile programlamayı öğrenmek isteyenler için paylaşmak istiyorum. Çünkü bilenler bilir PIC18 serisinde veri belleği bloklarının yönetimi yazılımsal ve donanımsal olarak klasik PIC16 serisinin bellek yapısından biraz farklıdır. PIC16 serisinde Assembly ile programlamayı bilenler, PIC18 serisinde Assembly ile programlama yaparken özellikle BANK blokları ve yazılımda nasıl yönetilmesi gerektiği konusunda afallayabilirler. Ancak düşünülenin aksine PIC18 serisinde bank yönetimine gerek yoktur, eğer RAM de çok büyük miktarlarda veri saklanması gerekmiyorsa BANK sistemini kullanmaya hiç gerek yoktur. Örnek programlarda bu ve buna benzer mimari ve yazılımsal farklılıklar ve ne yapılması gerektiği hakkında anlaşılır Türkçe içerikli açıklamalar olacaktır.

Bu örnekte tek bir çıkış portundan 4 adet 7 parçalı göstergenin; çoğullama (multiplexing) tekniği kullanılarak nasıl sürüleceğini göreceğiz. Asıl amacımız çoğullama tekniğine yoğunlaşmak olduğu için, amacımıza yardımcı olması açısından; saniyede bir artan basit bir yukarı sayıcı kodu da yazacağız.

Timer0 donanımı, 5 milisaniyelik kesmeler üreterek; hem sayıcıya bir süre tabanı oluşturacak, hem de herbir göstergenin yenileme rutinlerini tetikleyecektir.

Donanım

8-Bitlik B portunun tamamı 4 x 7-Parçalı göstergenin veri sürme işlevini gerçekler (yerine getirir).

4-Bitlik A portunun <3:0> bacakları her bir hanenin akımını batırmak (sink) için kullanılan harici batırma (sink) transistörlerini ya da mosfetlerini sürme işlevini gerçekler (yerine getirir). Bunun için diğer bir seçenek de açık kollektörlü batırma akım sürücüsü ULN2003 16 bacaklı DIP paket entegresini kullanmaktır. ULN2003'ün dizi transistörlerinden her biri en fazla 500mA'e kadar yükleri sürebilir ve Beyz uçları doğrudan PORTA bacaklarından sürülebilir.

Yazılım

Göstergeyi sürme işlemi (multiplexing); her bir hane göstergesini her 20ms'de 5ms boyunca çalıştırarak gerçeklenmiştir. Bu 50hz'lik bir güncelleme oranı verir ki, kararlı bir gösterge olarak insan gözü için oldukça kabul edilebilir bir orandır.

5ms süre tabanı, 4,096MHz'lik osilatör saatini bölerek üretilmektedir. Timer0 8 bitlik sayıcı/zamanlayıcı olarak düzenlenmiştir.

Dahili önölçekçi(prescaler) bir 32'ye (1/32) bölücü olarak düzenlenmiş ve Timer0'a atanmıştır.

TMR0L; 96 desimal değeriyle önyüklenmiştir. TMR0L 96'dan itibaren saymaya başlayıp 256'ya dek artacak, ardından, (256-96)x(32x4/4096000) = 5ms'lik bir süreden sonra 0' a yuvarlanacaktır. TMR0L 0'a her yuvarlandığında, T0IF (Timer0 kesme bayrağı) biti donanım tarafından kurulur, GIE (Global Interrupt Enable / Küresel Kesme Etkinleştirme) biti ve T0IE kesme bitleri etkinleştirildiğinden, bir kesme üretilir.

Yazılım 1-saniye oranında artan bir sürevci (zamanlayıcı) gerçekler.

Her saniyede gereken hanenin 4 nibble (4x4-bitlik veri birimi yada 2 byte); HANE12 ve HANE34 dosyalarında BCD (Binary Coded Decimal/İkilik Kodlanmış Onluk) biçiminde artırılır ve saklanır. Programda; HANE34 dosyası En Yüksek Değerli haneleri, HANE12 dosyası da En Düşük Değerli haneleri saklar.

4-bitlik BCD değer; hangi göstergenin çalıştığına bağlı olarak ya HANE34 ya da HANE12 dosyalarından alınır ve 7-parçalı göstergeyi sürecek karşılık gelen kodlara çevrilir.

Timer0 kesmesi 5 milisaniyelik kararlı bir oranda üretilir ve 1us'lik bir komut süresi verilir.

Bütün gösterge güncelleme programı; kesme servis rutininin içine oturtulabilir.

Assembly Kodu

; Copyright (c) 2017 Kozmotronik (İsmail Sahillioğlu)
; 
; Permission is hereby granted, free of charge, to any person obtaining a copy 
; of this software and associated documentation files (the "Software"), to deal 
; in the Software without restriction, including without limitation the rights 
; to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 
; copies of the Software, and to permit persons to whom the Software is 
; furnished to do so, subject to the following conditions:
; 
; The above copyright notice and this permission notice shall be included in 
; all copies or substantial portions of the Software.
;
; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
; IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
; FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
; AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
; LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
; SOFTWARE.

; PIC18F2550 Configuration Bit Settings
; Assembly source line config statements
	LIST	P=18F2550
#include "p18f2550.inc"

; CONFIG1L
  CONFIG  PLLDIV = 1            ; PLL Prescaler Selection bits (No prescale (4 MHz oscillator input drives PLL directly))
  CONFIG  CPUDIV = OSC1_PLL2    ; System Clock Postscaler Selection bits ([Primary Oscillator Src: /1][96 MHz PLL Src: /2])
  CONFIG  USBDIV = 1            ; USB Clock Selection bit (used in Full-Speed USB mode only; UCFG:FSEN = 1) (USB clock source comes directly from the primary oscillator block with no postscale)

; CONFIG1H
  CONFIG  FOSC = INTOSCIO_EC    ; Oscillator Selection bits (Internal oscillator, port function on RA6, EC used by USB (INTIO))
  CONFIG  FCMEN = OFF           ; Fail-Safe Clock Monitor Enable bit (Fail-Safe Clock Monitor disabled)
  CONFIG  IESO = OFF            ; Internal/External Oscillator Switchover bit (Oscillator Switchover mode disabled)

; CONFIG2L
  CONFIG  PWRT = ON             ; Power-up Timer Enable bit (PWRT enabled)
  CONFIG  BOR = ON              ; Brown-out Reset Enable bits (Brown-out Reset enabled in hardware only (SBOREN is disabled))
  CONFIG  BORV = 3              ; Brown-out Reset Voltage bits (Minimum setting 2.05V)
  CONFIG  VREGEN = OFF          ; USB Voltage Regulator Enable bit (USB voltage regulator disabled)

; CONFIG2H
  CONFIG  WDT = OFF             ; Watchdog Timer Enable bit (WDT disabled (control is placed on the SWDTEN bit))
  CONFIG  WDTPS = 32768         ; Watchdog Timer Postscale Select bits (1:32768)

; CONFIG3H
  CONFIG  CCP2MX = ON           ; CCP2 MUX bit (CCP2 input/output is multiplexed with RC1)
  CONFIG  PBADEN = OFF          ; PORTB A/D Enable bit (PORTB<4:0> pins are configured as digital I/O on Reset)
  CONFIG  LPT1OSC = OFF         ; Low-Power Timer 1 Oscillator Enable bit (Timer1 configured for higher power operation)
  CONFIG  MCLRE = ON            ; MCLR Pin Enable bit (MCLR pin enabled; RE3 input pin disabled)

; CONFIG4L
  CONFIG  STVREN = ON           ; Stack Full/Underflow Reset Enable bit (Stack full/underflow will cause Reset)
  CONFIG  LVP = OFF              ; Single-Supply ICSP Enable bit (Single-Supply ICSP enabled)
  CONFIG  XINST = OFF           ; Extended Instruction Set Enable bit (Instruction set extension and Indexed Addressing mode disabled (Legacy mode))

; CONFIG5L
  CONFIG  CP0 = OFF             ; Code Protection bit (Block 0 (000800-001FFFh) is not code-protected)
  CONFIG  CP1 = OFF             ; Code Protection bit (Block 1 (002000-003FFFh) is not code-protected)
  CONFIG  CP2 = OFF             ; Code Protection bit (Block 2 (004000-005FFFh) is not code-protected)
  CONFIG  CP3 = OFF             ; Code Protection bit (Block 3 (006000-007FFFh) is not code-protected)

; CONFIG5H
  CONFIG  CPB = OFF             ; Boot Block Code Protection bit (Boot block (000000-0007FFh) is not code-protected)
  CONFIG  CPD = OFF             ; Data EEPROM Code Protection bit (Data EEPROM is not code-protected)

; CONFIG6L
  CONFIG  WRT0 = OFF            ; Write Protection bit (Block 0 (000800-001FFFh) is not write-protected)
  CONFIG  WRT1 = OFF            ; Write Protection bit (Block 1 (002000-003FFFh) is not write-protected)
  CONFIG  WRT2 = OFF            ; Write Protection bit (Block 2 (004000-005FFFh) is not write-protected)
  CONFIG  WRT3 = OFF            ; Write Protection bit (Block 3 (006000-007FFFh) is not write-protected)

; CONFIG6H
  CONFIG  WRTC = OFF            ; Configuration Register Write Protection bit (Configuration registers (300000-3000FFh) are not write-protected)
  CONFIG  WRTB = OFF            ; Boot Block Write Protection bit (Boot block (000000-0007FFh) is not write-protected)
  CONFIG  WRTD = OFF            ; Data EEPROM Write Protection bit (Data EEPROM is not write-protected)

; CONFIG7L
  CONFIG  EBTR0 = OFF           ; Table Read Protection bit (Block 0 (000800-001FFFh) is not protected from table reads executed in other blocks)
  CONFIG  EBTR1 = OFF           ; Table Read Protection bit (Block 1 (002000-003FFFh) is not protected from table reads executed in other blocks)
  CONFIG  EBTR2 = OFF           ; Table Read Protection bit (Block 2 (004000-005FFFh) is not protected from table reads executed in other blocks)
  CONFIG  EBTR3 = OFF           ; Table Read Protection bit (Block 3 (006000-007FFFh) is not protected from table reads executed in other blocks)

; CONFIG7H
  CONFIG  EBTRB = OFF           ; Boot Block Table Read Protection bit (Boot block (000000-0007FFh) is not protected from table reads executed in other blocks)


    CBLOCK	    0X00
  GNL1
  GNL2
  GNL3
  SAY
  HANE34
  HANE12
  ENDC
  
  
	ORG	0X0000
	BRA	BASLA
	
	ORG	0X0008
	BRA	KESME_SERVIS
	
		
	
;		7 PARCALI GOSTERGE SURME KODLARI TABLOSU
    ; BILGI: PIC18F/C serisinde program sayicinin degeri donanimsal duzenlemeden dolayi
; 2ser olarak artmaktadir yani: PCL = PCL + 2. Bu yuzden PIC16F/C serisine gore
; cevrim tablosu yazilmissa; offset degerini PCL e eklemeden once 2 ile carpmak gerekir.

    ; PIC18 Serisi carpma islemini yapabilecek donanima ve komuta (MULWF, MULLW) sahiptir
; Nitekim Tablodan deger almadan once ofset degeri once 2 ile carpilmis ardindan
; PCL e eklenmistir. Ofset = ofset x 2 (MULLW	0X02).
    
    ;Carpma isleminden sonra sonuc PRODL ve PRODH yazmaclarinda saklanir; W de saklanmaz 
; ve hiç bir durum bayragi etkilenmez. Dolayisiyla sonuc PRODx dosyalarindan WREG
; dosyasina tasinmalidir.
	
BCD_7PARCALIYA
	MULLW	0X02	    ;OFSET DEGERINI 2 ILE CARP
	MOVF	PRODL, W    ;CARPMA ISLEMININ SONUCUNU W YE AL
	ADDWF	PCL	    ;OFSET DEGERINI PCL E EKLE
	RETLW	0X3F	    ;0 ICIN LED SURUCU
	RETLW	0X06	    ;1 ICIN LED SURUCU
	RETLW	0X5B	    ;2 ICIN LED SURUCU
	RETLW	0X4F	    ;3 ICIN LED SURUCU
	RETLW	0X66	    ;4 ICIN LED SURUCU
	RETLW	0X6D	    ;5 ICIN LED SURUCU
	RETLW	0X7D	    ;6 ICIN LED SURUCU
	RETLW	0X07	    ;7 ICIN LED SURUCU
	RETLW	0X7F	    ;8 ICIN LED SURUCU
	RETLW	0X67	    ;9 ICIN LED SURUCU
	RETLW	0X00	    ;BOS ICIN LED SURUCU
	
	
BASLA
	MOVLW	63
	MOVWF	OSCCON
	CALL	PORTLARI_KUR		;PORTLARI KURAN ALT PROGRAMI CAGIR
	CALL	SUREVCILERI_KUR		;SUREVCIYI KURAN ALT PROGRAMI CAGIR
	
DON
	GOTO	DON		;KESME OLANA KADAR DONGUYE GIR
	
	
;		PORTLARIN KURULUMU VE A/D DUZENLEMELERI
	
PORTLARI_KUR
	MOVLW	0X0F
	MOVWF	ADCON1	    ;RA0-3 DIJITAL G/C
	MOVLW	0X07
	MOVWF	CMCON	    ;RA0-3 KARSILASTIRICI GIRISLERI ETKISIZ RA= DIJITAL G/C
	CLRF	TRISA	    ;RA = CIKIS
	CLRF	TRISB	    ;RB = CIKIS
	CLRF	PORTA
	CLRF	PORTB
	BSF	PORTA,3	    ;4. HANEYI BATIRMA ETKIN
	RETURN
	
	
;		SUREVCILERIN KURULUMU VE DUZENLENMELERI
	
SUREVCILERI_KUR
	CLRF	HANE34
	CLRF	HANE12
	MOVLW	0X44
	MOVWF	T0CON	    ;ONOLCEKCI 1/32 OLCEGINDE
	MOVLW	0X20
	MOVWF	INTCON	    ;TIMER0 KESMESI ETKIN
	MOVLW	.96
	MOVWF	TMR0L	    ;DOSYAYA HESAPLANAN 96 ONDEGERINI YUKLE
	BSF	T0CON, TMR0ON	;TIMER0 I ETKINLESTIR
	BSF	INTCON, GIE	;KESMELERI ETKINLESTIR
	RETURN
	
	
;		KESME SERVISI
	
KESME_SERVIS
	BTFSC	INTCON, T0IF	;TIMER0 KESMESI MI?
	BRA	TMR0SERVIS	;EVET, TIMER0 SERVISINE DALLAN
	MOVLW	0X20
	MOVWF	INTCON		;HAYIR, BAYRAKLARI TEMIZLE, TIMER0 KESMESINI KUR VE
	RETFIE			;KESME SERVISINDEN CIK
	
	
;		TIMER0 KESME SERVISI
	
TMR0SERVIS
	MOVLW	.96
	MOVWF	TMR0L	    ;TMR0L DOSYASINI YENIDEN ONDEGERLE YUKLE
	BCF	INTCON, T0IF	;TIMER0 KESME BAYRAGINI TEMIZLE
	CALL	SUREART	    ;HANE DEGERLERINI GUNCELLEME ALT PROGRAMINI CAGIR
	CALL	GSTRGGUNCELLE	;GOSTERGELERI GUNCELLEME ALT PROGRAMINI CAGIR
	RETFIE
	
;7-PARCALI GOSTERGE HER 1 (200 x 5ms) SANIYEDE BIR ARTTIRILIR

;		SURE DEGERLERINI GUNCELLEME ALT PROGRAMI

SUREART
	INCF	SAY, W	    ;SAY DOSYA DEGERINI 1 ARTIR SONRA W YE KOPYALA
	XORLW	.200	    ;200 ILE KARSILASTIR (1 SANIYE OLUP OLMADIGINI SINA)
	BTFSC	STATUS, Z   ;DEGERLER AYNI MI? (AYNI ISE SONUC 0 VE Z BAYRAGI 1 OLUR)
	BRA	SUREARTYAP  ;EVET, SURE ARTIRMA ALT PROGRAMINA DALLAN
	INCF	SAY, F	    ;HAYIR, OYLEYSE SAY DOSYA DEGERINI ARTIR VE GERI DON
	RETURN		    ;TMR0SERVIS KESME ALT PROGRAMINA GERI DON
	
	
;		SURE DEGERLERININ ARTIRILMASININ YAPILDIGI ALT PROGRAM
	
SUREARTYAP
	CLRF	SAY	    ;SAY DOSYASINI YENIDEN SAYMA ICIN SIFIRLA
	INCF	HANE12, W   ;HANE12 DOSYA DEGERINI 1 ARTIR VE W YE KOPYALA
	ANDLW	0X0F	    ;2. HANEYI MASKELE
	XORLW	0X0A	    ;10 ILE KARSILASTIR
	BTFSC	STATUS,Z    ;1. HANE 10 A ULASTI MI?
	BRA	IKINCIHANEART	;EVET, OYLEYSE 2. HANEYI ARTIRMA ALT PROGRAMINA DALLAN
	INCF	HANE12, F   ;HAYIR, 1. HANENIN DEGERINI 1 ARTIR VE DOSYAYA SAKLA
	RETURN		    ;SUREART ALT PROGRAMINA GERI DON
	
	
;		2. HANENIN ARTIRMA ISLEMININ YAPILDIGI ALT PROGRAM
	
IKINCIHANEART
	SWAPF	HANE12, W	;1. HANE ILE 2. HANENIN YERINI DEGISTIR VE W YE KOPYALA
	ANDLW	0X0F		;1. HANEYI MASKELE
	ADDLW	.1		;2. HANEYI 1 ARTIR
	MOVWF	HANE12		;ARDINDAN HANE12 DOSYASINA GERI SAKLA
	SWAPF	HANE12, F	;1 VE 2. HANEYI ESKI YERINE AL
	XORLW	0X0A		;2. HANE DEGERINI 10 ILE KARSILASTIR
	BTFSC	STATUS, Z	;2. HANE 10 A ULASTI MI?
	BRA	UCUNCUHANEART	;EVET, OYLEYSE 3. HANEYI ARTIRMA ALT PROGRAMINA DALLAN
	RETURN			;HAYIR, OYLEYSE SUREART ALT PROGRAMINA GERI DON
	
	
;		3. HANENIN ARTIRMA ISLEMININ YAPILDIGI ALT PROGRAM
	
UCUNCUHANEART
	CLRF	HANE12		;1. VE 2. HANEYI TEMIZLE
	INCF	HANE34, W	;3. HANEYI 1 ARTIR SONRA W YE KOPYALA
	ANDLW	0X0F		;4. HANEYI MASKELE
	XORLW	0X0A		;3. HANE DEGERINI 10 ILE KARSILASTIR
	BTFSC	STATUS, Z	;3. HANE 10 A ULASTI MI?
	BRA	DORDUNCUHANEART	;EVET, OYLEYSE 4. HANEYI ARTIRMA ALT PROGRAMINA GIT
	INCF	HANE34, F	;HAYIR, OYLEYSE 3. HANEYI 1 ARTIR VE DOSYAYA SAKLA
	RETURN			;HAYIR, OYLEYSE SUREART ALT PROGRAMINA GERI DON
	
	
;		4. HANENIN ARTIRMA ISLEMININ YAPILDIGI ALT PROGRAM
	
DORDUNCUHANEART
	SWAPF	HANE34, W	;3. HANE ILE 4. HANENIN YERINI DEGISTIR VE W YE KOPYALA
	ANDLW	0X0F		;3. HANEYI MASKELE
	ADDLW	.1		;4. HANEYE 1 EKLE
	MOVWF	HANE34		;ARDINDAN HANE34 DOSYASINA GERI SAKLA
	SWAPF	HANE34		;3 VE 4. HANELERI YERLERINE AL
	XORLW	0X0A		;4. HANE DEGERINI 10 ILE KARSILASTIR
	BTFSC	STATUS, Z	;4. HANE 10 A ULAŞTI MI?
	CLRF	HANE34		;EVET, OYLEYSE 3 VE 4. HANELERI SIFIRLA
	RETURN			;HAYIR, ARTIRMADAN SONRA SUREART ALT PROGRAMINA GERI DON
	
;___________________________________________________________________________________________
;___________________________________________________________________________________________
	
;		GOSTERGELERIN GUNCELLEME ISLEMININ YAPILDIGI ALT PROGRAM BLOGU
	
GSTRGGUNCELLE
	MOVF	PORTA, W	;SON BATIRMA(SINK) DURUMUNU W YE KOPYALA
	CLRF	PORTA		
	ANDLW	0X0F		;RA0-3 HARICINI MASKELE
	MOVWF	GNL1		;SON BATIRMA DURUMUNU GECICI OLARAK GNL1 DOSYASINDA SAKLA
	BSF	GNL1, 4		;1 VE 2. HANE GOSTERGELERI BATIRMA ICIN ONKURMA 
	RRCF	GNL1, F		;SONRAKI BATIRMA DEGERINI BELIRLE
	BTFSS	STATUS, C	;TASMA BITI 1 MI?
	BCF	GNL1, 3		;HAYIR, OYLEYSE ONKURMAYI SIFIRLA
	BTFSC	GNL1, 0		;EVET, OYLEYSE 4. HANEYE BAK 1 MI?
	BRA	DORDUNCUYUGUNCELLE  ;EVET, 4. GOSTERGEYI GUNCELLEME ALT PROGRAMINA DALLAN
	BTFSC	GNL1, 1		;HAYIR, YOKSA 3. HANE MI 1?
	BRA	UCUNCUYUGUNCELLE    ;EVET, OYLEYSE 3. GOSTERGEYI GUNCELLEME ALT PROGRAMINA DALLAN
	BTFSC	GNL1, 2		;HAYIR, YOKSA 2. HANE MI 1?
	BRA	IKINCIYIGUNCELLE    ;EVET, OYLEYSE 2. GOSTERGEYI GUNCELLEME ALT PROGRAMINA DALLAN
	
	
;		1. GOSTERGEYI GUNCELLEME ALT PROGRAMI
	
BIRINCIYIGUNCELLE
	MOVF	HANE12, W   ;HANE12 YI W YE AL
	ANDLW	0X0F	    ;2. HANEYI MASKELE
	BRA	GSTRGCIKIS  ;GOSTERGEYI ETKINLESTIR VE GUNCELLEME ALT PROGRAMINA DALLAN

	
;		2. GOSTERGEYI GUNCELLEME ALT PROGRAMI
	
IKINCIYIGUNCELLE
	CALL	IKINCI0DNT	    ; 2. HANENIN SIFIR OLUP OLMADIGINI DENETLEYEN ALT PRORAMI CAGIR
	BTFSS	STATUS, Z	;2, 3, VE 4. HANELER 0 MI?
	SWAPF	HANE12, W	;HAYIR, OYLEYSE 1. VE 2. HANENIN YERINI DEGISTIR VE BURADAN DEVAM ET
	ANDLW	0X0F		;EVETSE, 2. HANEYI MASKELE HAYIRSA 1. HANEYI MASKELE
	BRA	GSTRGCIKIS	;GOSTERGEYI ETKINLESTIR VE GUNCELLEME ALT PROGRAMINA DALLAN
	
	
;		3. GOSTERGEYI GUNCELLEME ALT PROGRAMI
		
UCUNCUYUGUNCELLE
	CALL	HANE340DNT	;EN YUKSEK DEGERLI HANELERIN 0 OLUP OLMADIĞINI SINAYAN ALT PROGRAMI CAGIR
	BTFSS	STATUS, Z	;EYD HANELER 0 MI?
	MOVF	HANE34, W	;HAYIRSA ONCE HANE34 U W YE AL OYLE DEVAM ET
	ANDLW	0X0F		;EVETSE YUKARIDAKI KOMUTU ATLA, 4. HANYI MASKELE
	BRA	GSTRGCIKIS	;GOSTERGEYI ETKINLESTIR VE GUNCELLEME ALT PROGRAMINA DALLAN
	
	
;		4. GOSTERGEYI GUNCELLEME ALT PROGRAMI
		
DORDUNCUYUGUNCELLE
	SWAPF	HANE34, W	;3 VE 4. HANENIN YERINI DEGISTIR
	ANDLW	0X0F		;3. HANEYI MASKELE
	BTFSC	STATUS, Z	;4. HANE 0 MI?
	MOVLW	0X0A		;EVET, OYLEYSE W YE 10 YUKLE VE DEVAM ET
	
;_______________________________________________________________________________________
;_______________________________________________________________________________________
	
;		GOSTERGELERIN CIKISININ YAPILDIGI ALT PROGRAM BLOGU

GSTRGCIKIS
	CALL	BCD_7PARCALIYA	    ;BCD YI 7 PARCALI GOSTERGEYE KODLAYAN ALT PROGRAMI CAGIR
	MOVWF	PORTB		    ;GOSTERGE DEGERLERINI PORTB DEN CIKAR
	MOVF	GNL1, W		    ;BATIRMA DEGERLERINI YEDEKTEN W YE AL
	MOVWF	PORTA		    ;BATIRMA DEGERLERINI PORTA YA GERI YUKLE
	RETURN			;TMR0SERVIS KESME ALT PROGRAMINA GERI DON

	
;		SIFIR DENETLEME ALT PROGRAM BLOGU
	
IKINCI0DNT
	CALL	HANE340DNT	;EN YUKSEK DEGERLI HANELERIN 0 OLUP OLMADIĞINI SINAYAN ALT PROGRAMI CAGIR
	BTFSS	STATUS, Z	;EYD HANELER 0 MI?
	RETURN			;EVET, OYLEYSE ALT PROGRAMI BITIR VE UST PROGRAMA GERI DON
	SWAPF	HANE12, W	;HAYIRSA, 1. VE 2. HANENIN YERINI DEGISTIR
	ANDLW	0X0F		;1. HANEYI MASKELE
	BTFSS	STATUS, Z	;2. HANE 0 MI?
	RETURN			;HAYIRSA, ALT PROGRAMDAN BU DEGERLERLE GERI DON
	RETLW	.10		;EVETSE W YE 10 YUKLEYIP GERI DON
	
HANE340DNT
	MOVF	HANE34, W	;UST HANELERI W YE AL
	BTFSS	STATUS, Z	;UST HANELER 0 MI?
	RETURN			;HAYIRSA BURADAN GERI DON
	RETLW	.10		;EVETSE W YE 10 YUKLEYIP GERI DON
	END	;SON

Not
Yararlandığım kaynakta bu program PIC16C71 denetleyicisine göre yazılmıştır. Program benim tarafımdan PIC18F2550 denetleyicisinin donanım ve yazılım düzenine göre yeniden yazılmış ve hemen hemen her komut ve işlemin Türkçe açıklaması ilgili bölgede yapılmıştır ve olabildiğince Türkçeleştirilmiştir. Derleyicilerin karakter kodlama ve tanıma farklarından dolayı açıklamalarda İngilizce olan karakterlerin dışına çıkılmamıştır. Umarım kaynak arayan herkes için yararlı olur.

Lisans
Bu uygulamanın kodları MIT lisansı altında paylaşılmaktadır.

AN557 Four Channel Digital Voltmeter with Display and Keyboard (İngilizce)
4x7SegSurucuProteus.zip (88.61 KB)
4x7SegSurucuMPLAB.zip (32.66 KB)
PIC
PIC18
PIC18F2550
Assembly
Gömülü Programlama

Sorumluluk Reddi

Bu site bilgilendirme amaçlıdır. Burada sunulan bilgileri, uygulayıcı kendi sorumluluğu altında uygular. Bu bilgilerin uygulanması sırasında ihmal, dikkatsizlik, konuyla ilgili bilgi eksikliği veya yanlış uygulama nedeniyle meydana gelebilecek hasarlardan, can veya mal kaybından, maddi veya fiziksel kayıplardan tamamen uygulayıcı sorumlu olup site ve yazarları sorumlu tutulamaz.

Projects

Görevci

Monthly archive

  • Şubat 2017 (2)
  • Mart 2017 (1)
  • Nisan 2017 (1)
  • Mart 2019 (1)
  • Nisan 2019 (1)
  • Temmuz 2019 (3)
  • Eylül 2019 (1)
  • Ekim 2019 (1)
  • Mart 2020 (1)
  • Ağustos 2020 (3)
Sayfalama
  • Sayfa 1
  • Sonraki sayfa ››

Footer menu

  • İletişim

Copyright © 2026 Kozmotronik Tech - All rights reserved

Kozmotronik Tech