PIC18F2550 Assembly İle 4x7 Segment Gösterge Çoğullama (Multiplexing)
Genel Bakış
Ü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
1; Copyright (c) 2017 Kozmotronik (İsmail Sahillioğlu)
2;
3; Permission is hereby granted, free of charge, to any person obtaining a copy
4; of this software and associated documentation files (the "Software"), to deal
5; in the Software without restriction, including without limitation the rights
6; to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7; copies of the Software, and to permit persons to whom the Software is
8; furnished to do so, subject to the following conditions:
9;
10; The above copyright notice and this permission notice shall be included in
11; all copies or substantial portions of the Software.
12;
13; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14; IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15; FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16; AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17; LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19; SOFTWARE.
20
21; PIC18F2550 Configuration Bit Settings
22; Assembly source line config statements
23 LIST P=18F2550
24#include "p18f2550.inc"
25
26; CONFIG1L
27 CONFIG PLLDIV = 1 ; PLL Prescaler Selection bits (No prescale (4 MHz oscillator input drives PLL directly))
28 CONFIG CPUDIV = OSC1_PLL2 ; System Clock Postscaler Selection bits ([Primary Oscillator Src: /1][96 MHz PLL Src: /2])
29 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)
30
31; CONFIG1H
32 CONFIG FOSC = INTOSCIO_EC ; Oscillator Selection bits (Internal oscillator, port function on RA6, EC used by USB (INTIO))
33 CONFIG FCMEN = OFF ; Fail-Safe Clock Monitor Enable bit (Fail-Safe Clock Monitor disabled)
34 CONFIG IESO = OFF ; Internal/External Oscillator Switchover bit (Oscillator Switchover mode disabled)
35
36; CONFIG2L
37 CONFIG PWRT = ON ; Power-up Timer Enable bit (PWRT enabled)
38 CONFIG BOR = ON ; Brown-out Reset Enable bits (Brown-out Reset enabled in hardware only (SBOREN is disabled))
39 CONFIG BORV = 3 ; Brown-out Reset Voltage bits (Minimum setting 2.05V)
40 CONFIG VREGEN = OFF ; USB Voltage Regulator Enable bit (USB voltage regulator disabled)
41
42; CONFIG2H
43 CONFIG WDT = OFF ; Watchdog Timer Enable bit (WDT disabled (control is placed on the SWDTEN bit))
44 CONFIG WDTPS = 32768 ; Watchdog Timer Postscale Select bits (1:32768)
45
46; CONFIG3H
47 CONFIG CCP2MX = ON ; CCP2 MUX bit (CCP2 input/output is multiplexed with RC1)
48 CONFIG PBADEN = OFF ; PORTB A/D Enable bit (PORTB<4:0> pins are configured as digital I/O on Reset)
49 CONFIG LPT1OSC = OFF ; Low-Power Timer 1 Oscillator Enable bit (Timer1 configured for higher power operation)
50 CONFIG MCLRE = ON ; MCLR Pin Enable bit (MCLR pin enabled; RE3 input pin disabled)
51
52; CONFIG4L
53 CONFIG STVREN = ON ; Stack Full/Underflow Reset Enable bit (Stack full/underflow will cause Reset)
54 CONFIG LVP = OFF ; Single-Supply ICSP Enable bit (Single-Supply ICSP enabled)
55 CONFIG XINST = OFF ; Extended Instruction Set Enable bit (Instruction set extension and Indexed Addressing mode disabled (Legacy mode))
56
57; CONFIG5L
58 CONFIG CP0 = OFF ; Code Protection bit (Block 0 (000800-001FFFh) is not code-protected)
59 CONFIG CP1 = OFF ; Code Protection bit (Block 1 (002000-003FFFh) is not code-protected)
60 CONFIG CP2 = OFF ; Code Protection bit (Block 2 (004000-005FFFh) is not code-protected)
61 CONFIG CP3 = OFF ; Code Protection bit (Block 3 (006000-007FFFh) is not code-protected)
62
63; CONFIG5H
64 CONFIG CPB = OFF ; Boot Block Code Protection bit (Boot block (000000-0007FFh) is not code-protected)
65 CONFIG CPD = OFF ; Data EEPROM Code Protection bit (Data EEPROM is not code-protected)
66
67; CONFIG6L
68 CONFIG WRT0 = OFF ; Write Protection bit (Block 0 (000800-001FFFh) is not write-protected)
69 CONFIG WRT1 = OFF ; Write Protection bit (Block 1 (002000-003FFFh) is not write-protected)
70 CONFIG WRT2 = OFF ; Write Protection bit (Block 2 (004000-005FFFh) is not write-protected)
71 CONFIG WRT3 = OFF ; Write Protection bit (Block 3 (006000-007FFFh) is not write-protected)
72
73; CONFIG6H
74 CONFIG WRTC = OFF ; Configuration Register Write Protection bit (Configuration registers (300000-3000FFh) are not write-protected)
75 CONFIG WRTB = OFF ; Boot Block Write Protection bit (Boot block (000000-0007FFh) is not write-protected)
76 CONFIG WRTD = OFF ; Data EEPROM Write Protection bit (Data EEPROM is not write-protected)
77
78; CONFIG7L
79 CONFIG EBTR0 = OFF ; Table Read Protection bit (Block 0 (000800-001FFFh) is not protected from table reads executed in other blocks)
80 CONFIG EBTR1 = OFF ; Table Read Protection bit (Block 1 (002000-003FFFh) is not protected from table reads executed in other blocks)
81 CONFIG EBTR2 = OFF ; Table Read Protection bit (Block 2 (004000-005FFFh) is not protected from table reads executed in other blocks)
82 CONFIG EBTR3 = OFF ; Table Read Protection bit (Block 3 (006000-007FFFh) is not protected from table reads executed in other blocks)
83
84; CONFIG7H
85 CONFIG EBTRB = OFF ; Boot Block Table Read Protection bit (Boot block (000000-0007FFh) is not protected from table reads executed in other blocks)
86
87
88 CBLOCK 0X00
89 GNL1
90 GNL2
91 GNL3
92 SAY
93 HANE34
94 HANE12
95 ENDC
96
97
98 ORG 0X0000
99 BRA BASLA
100
101 ORG 0X0008
102 BRA KESME_SERVIS
103
104
105
106; 7 PARCALI GOSTERGE SURME KODLARI TABLOSU
107 ; BILGI: PIC18F/C serisinde program sayicinin degeri donanimsal duzenlemeden dolayi
108; 2ser olarak artmaktadir yani: PCL = PCL + 2. Bu yuzden PIC16F/C serisine gore
109; cevrim tablosu yazilmissa; offset degerini PCL e eklemeden once 2 ile carpmak gerekir.
110
111 ; PIC18 Serisi carpma islemini yapabilecek donanima ve komuta (MULWF, MULLW) sahiptir
112; Nitekim Tablodan deger almadan once ofset degeri once 2 ile carpilmis ardindan
113; PCL e eklenmistir. Ofset = ofset x 2 (MULLW 0X02).
114
115 ;Carpma isleminden sonra sonuc PRODL ve PRODH yazmaclarinda saklanir; W de saklanmaz
116; ve hiç bir durum bayragi etkilenmez. Dolayisiyla sonuc PRODx dosyalarindan WREG
117; dosyasina tasinmalidir.
118
119BCD_7PARCALIYA
120 MULLW 0X02 ;OFSET DEGERINI 2 ILE CARP
121 MOVF PRODL, W ;CARPMA ISLEMININ SONUCUNU W YE AL
122 ADDWF PCL ;OFSET DEGERINI PCL E EKLE
123 RETLW 0X3F ;0 ICIN LED SURUCU
124 RETLW 0X06 ;1 ICIN LED SURUCU
125 RETLW 0X5B ;2 ICIN LED SURUCU
126 RETLW 0X4F ;3 ICIN LED SURUCU
127 RETLW 0X66 ;4 ICIN LED SURUCU
128 RETLW 0X6D ;5 ICIN LED SURUCU
129 RETLW 0X7D ;6 ICIN LED SURUCU
130 RETLW 0X07 ;7 ICIN LED SURUCU
131 RETLW 0X7F ;8 ICIN LED SURUCU
132 RETLW 0X67 ;9 ICIN LED SURUCU
133 RETLW 0X00 ;BOS ICIN LED SURUCU
134
135
136BASLA
137 MOVLW 63
138 MOVWF OSCCON
139 CALL PORTLARI_KUR ;PORTLARI KURAN ALT PROGRAMI CAGIR
140 CALL SUREVCILERI_KUR ;SUREVCIYI KURAN ALT PROGRAMI CAGIR
141
142DON
143 GOTO DON ;KESME OLANA KADAR DONGUYE GIR
144
145
146; PORTLARIN KURULUMU VE A/D DUZENLEMELERI
147
148PORTLARI_KUR
149 MOVLW 0X0F
150 MOVWF ADCON1 ;RA0-3 DIJITAL G/C
151 MOVLW 0X07
152 MOVWF CMCON ;RA0-3 KARSILASTIRICI GIRISLERI ETKISIZ RA= DIJITAL G/C
153 CLRF TRISA ;RA = CIKIS
154 CLRF TRISB ;RB = CIKIS
155 CLRF PORTA
156 CLRF PORTB
157 BSF PORTA,3 ;4. HANEYI BATIRMA ETKIN
158 RETURN
159
160
161; SUREVCILERIN KURULUMU VE DUZENLENMELERI
162
163SUREVCILERI_KUR
164 CLRF HANE34
165 CLRF HANE12
166 MOVLW 0X44
167 MOVWF T0CON ;ONOLCEKCI 1/32 OLCEGINDE
168 MOVLW 0X20
169 MOVWF INTCON ;TIMER0 KESMESI ETKIN
170 MOVLW .96
171 MOVWF TMR0L ;DOSYAYA HESAPLANAN 96 ONDEGERINI YUKLE
172 BSF T0CON, TMR0ON ;TIMER0 I ETKINLESTIR
173 BSF INTCON, GIE ;KESMELERI ETKINLESTIR
174 RETURN
175
176
177; KESME SERVISI
178
179KESME_SERVIS
180 BTFSC INTCON, T0IF ;TIMER0 KESMESI MI?
181 BRA TMR0SERVIS ;EVET, TIMER0 SERVISINE DALLAN
182 MOVLW 0X20
183 MOVWF INTCON ;HAYIR, BAYRAKLARI TEMIZLE, TIMER0 KESMESINI KUR VE
184 RETFIE ;KESME SERVISINDEN CIK
185
186
187; TIMER0 KESME SERVISI
188
189TMR0SERVIS
190 MOVLW .96
191 MOVWF TMR0L ;TMR0L DOSYASINI YENIDEN ONDEGERLE YUKLE
192 BCF INTCON, T0IF ;TIMER0 KESME BAYRAGINI TEMIZLE
193 CALL SUREART ;HANE DEGERLERINI GUNCELLEME ALT PROGRAMINI CAGIR
194 CALL GSTRGGUNCELLE ;GOSTERGELERI GUNCELLEME ALT PROGRAMINI CAGIR
195 RETFIE
196
197;7-PARCALI GOSTERGE HER 1 (200 x 5ms) SANIYEDE BIR ARTTIRILIR
198
199; SURE DEGERLERINI GUNCELLEME ALT PROGRAMI
200
201SUREART
202 INCF SAY, W ;SAY DOSYA DEGERINI 1 ARTIR SONRA W YE KOPYALA
203 XORLW .200 ;200 ILE KARSILASTIR (1 SANIYE OLUP OLMADIGINI SINA)
204 BTFSC STATUS, Z ;DEGERLER AYNI MI? (AYNI ISE SONUC 0 VE Z BAYRAGI 1 OLUR)
205 BRA SUREARTYAP ;EVET, SURE ARTIRMA ALT PROGRAMINA DALLAN
206 INCF SAY, F ;HAYIR, OYLEYSE SAY DOSYA DEGERINI ARTIR VE GERI DON
207 RETURN ;TMR0SERVIS KESME ALT PROGRAMINA GERI DON
208
209
210; SURE DEGERLERININ ARTIRILMASININ YAPILDIGI ALT PROGRAM
211
212SUREARTYAP
213 CLRF SAY ;SAY DOSYASINI YENIDEN SAYMA ICIN SIFIRLA
214 INCF HANE12, W ;HANE12 DOSYA DEGERINI 1 ARTIR VE W YE KOPYALA
215 ANDLW 0X0F ;2. HANEYI MASKELE
216 XORLW 0X0A ;10 ILE KARSILASTIR
217 BTFSC STATUS,Z ;1. HANE 10 A ULASTI MI?
218 BRA IKINCIHANEART ;EVET, OYLEYSE 2. HANEYI ARTIRMA ALT PROGRAMINA DALLAN
219 INCF HANE12, F ;HAYIR, 1. HANENIN DEGERINI 1 ARTIR VE DOSYAYA SAKLA
220 RETURN ;SUREART ALT PROGRAMINA GERI DON
221
222
223; 2. HANENIN ARTIRMA ISLEMININ YAPILDIGI ALT PROGRAM
224
225IKINCIHANEART
226 SWAPF HANE12, W ;1. HANE ILE 2. HANENIN YERINI DEGISTIR VE W YE KOPYALA
227 ANDLW 0X0F ;1. HANEYI MASKELE
228 ADDLW .1 ;2. HANEYI 1 ARTIR
229 MOVWF HANE12 ;ARDINDAN HANE12 DOSYASINA GERI SAKLA
230 SWAPF HANE12, F ;1 VE 2. HANEYI ESKI YERINE AL
231 XORLW 0X0A ;2. HANE DEGERINI 10 ILE KARSILASTIR
232 BTFSC STATUS, Z ;2. HANE 10 A ULASTI MI?
233 BRA UCUNCUHANEART ;EVET, OYLEYSE 3. HANEYI ARTIRMA ALT PROGRAMINA DALLAN
234 RETURN ;HAYIR, OYLEYSE SUREART ALT PROGRAMINA GERI DON
235
236
237; 3. HANENIN ARTIRMA ISLEMININ YAPILDIGI ALT PROGRAM
238
239UCUNCUHANEART
240 CLRF HANE12 ;1. VE 2. HANEYI TEMIZLE
241 INCF HANE34, W ;3. HANEYI 1 ARTIR SONRA W YE KOPYALA
242 ANDLW 0X0F ;4. HANEYI MASKELE
243 XORLW 0X0A ;3. HANE DEGERINI 10 ILE KARSILASTIR
244 BTFSC STATUS, Z ;3. HANE 10 A ULASTI MI?
245 BRA DORDUNCUHANEART ;EVET, OYLEYSE 4. HANEYI ARTIRMA ALT PROGRAMINA GIT
246 INCF HANE34, F ;HAYIR, OYLEYSE 3. HANEYI 1 ARTIR VE DOSYAYA SAKLA
247 RETURN ;HAYIR, OYLEYSE SUREART ALT PROGRAMINA GERI DON
248
249
250; 4. HANENIN ARTIRMA ISLEMININ YAPILDIGI ALT PROGRAM
251
252DORDUNCUHANEART
253 SWAPF HANE34, W ;3. HANE ILE 4. HANENIN YERINI DEGISTIR VE W YE KOPYALA
254 ANDLW 0X0F ;3. HANEYI MASKELE
255 ADDLW .1 ;4. HANEYE 1 EKLE
256 MOVWF HANE34 ;ARDINDAN HANE34 DOSYASINA GERI SAKLA
257 SWAPF HANE34 ;3 VE 4. HANELERI YERLERINE AL
258 XORLW 0X0A ;4. HANE DEGERINI 10 ILE KARSILASTIR
259 BTFSC STATUS, Z ;4. HANE 10 A ULAŞTI MI?
260 CLRF HANE34 ;EVET, OYLEYSE 3 VE 4. HANELERI SIFIRLA
261 RETURN ;HAYIR, ARTIRMADAN SONRA SUREART ALT PROGRAMINA GERI DON
262
263;___________________________________________________________________________________________
264;___________________________________________________________________________________________
265
266; GOSTERGELERIN GUNCELLEME ISLEMININ YAPILDIGI ALT PROGRAM BLOGU
267
268GSTRGGUNCELLE
269 MOVF PORTA, W ;SON BATIRMA(SINK) DURUMUNU W YE KOPYALA
270 CLRF PORTA
271 ANDLW 0X0F ;RA0-3 HARICINI MASKELE
272 MOVWF GNL1 ;SON BATIRMA DURUMUNU GECICI OLARAK GNL1 DOSYASINDA SAKLA
273 BSF GNL1, 4 ;1 VE 2. HANE GOSTERGELERI BATIRMA ICIN ONKURMA
274 RRCF GNL1, F ;SONRAKI BATIRMA DEGERINI BELIRLE
275 BTFSS STATUS, C ;TASMA BITI 1 MI?
276 BCF GNL1, 3 ;HAYIR, OYLEYSE ONKURMAYI SIFIRLA
277 BTFSC GNL1, 0 ;EVET, OYLEYSE 4. HANEYE BAK 1 MI?
278 BRA DORDUNCUYUGUNCELLE ;EVET, 4. GOSTERGEYI GUNCELLEME ALT PROGRAMINA DALLAN
279 BTFSC GNL1, 1 ;HAYIR, YOKSA 3. HANE MI 1?
280 BRA UCUNCUYUGUNCELLE ;EVET, OYLEYSE 3. GOSTERGEYI GUNCELLEME ALT PROGRAMINA DALLAN
281 BTFSC GNL1, 2 ;HAYIR, YOKSA 2. HANE MI 1?
282 BRA IKINCIYIGUNCELLE ;EVET, OYLEYSE 2. GOSTERGEYI GUNCELLEME ALT PROGRAMINA DALLAN
283
284
285; 1. GOSTERGEYI GUNCELLEME ALT PROGRAMI
286
287BIRINCIYIGUNCELLE
288 MOVF HANE12, W ;HANE12 YI W YE AL
289 ANDLW 0X0F ;2. HANEYI MASKELE
290 BRA GSTRGCIKIS ;GOSTERGEYI ETKINLESTIR VE GUNCELLEME ALT PROGRAMINA DALLAN
291
292
293; 2. GOSTERGEYI GUNCELLEME ALT PROGRAMI
294
295IKINCIYIGUNCELLE
296 CALL IKINCI0DNT ; 2. HANENIN SIFIR OLUP OLMADIGINI DENETLEYEN ALT PRORAMI CAGIR
297 BTFSS STATUS, Z ;2, 3, VE 4. HANELER 0 MI?
298 SWAPF HANE12, W ;HAYIR, OYLEYSE 1. VE 2. HANENIN YERINI DEGISTIR VE BURADAN DEVAM ET
299 ANDLW 0X0F ;EVETSE, 2. HANEYI MASKELE HAYIRSA 1. HANEYI MASKELE
300 BRA GSTRGCIKIS ;GOSTERGEYI ETKINLESTIR VE GUNCELLEME ALT PROGRAMINA DALLAN
301
302
303; 3. GOSTERGEYI GUNCELLEME ALT PROGRAMI
304
305UCUNCUYUGUNCELLE
306 CALL HANE340DNT ;EN YUKSEK DEGERLI HANELERIN 0 OLUP OLMADIĞINI SINAYAN ALT PROGRAMI CAGIR
307 BTFSS STATUS, Z ;EYD HANELER 0 MI?
308 MOVF HANE34, W ;HAYIRSA ONCE HANE34 U W YE AL OYLE DEVAM ET
309 ANDLW 0X0F ;EVETSE YUKARIDAKI KOMUTU ATLA, 4. HANYI MASKELE
310 BRA GSTRGCIKIS ;GOSTERGEYI ETKINLESTIR VE GUNCELLEME ALT PROGRAMINA DALLAN
311
312
313; 4. GOSTERGEYI GUNCELLEME ALT PROGRAMI
314
315DORDUNCUYUGUNCELLE
316 SWAPF HANE34, W ;3 VE 4. HANENIN YERINI DEGISTIR
317 ANDLW 0X0F ;3. HANEYI MASKELE
318 BTFSC STATUS, Z ;4. HANE 0 MI?
319 MOVLW 0X0A ;EVET, OYLEYSE W YE 10 YUKLE VE DEVAM ET
320
321;_______________________________________________________________________________________
322;_______________________________________________________________________________________
323
324; GOSTERGELERIN CIKISININ YAPILDIGI ALT PROGRAM BLOGU
325
326GSTRGCIKIS
327 CALL BCD_7PARCALIYA ;BCD YI 7 PARCALI GOSTERGEYE KODLAYAN ALT PROGRAMI CAGIR
328 MOVWF PORTB ;GOSTERGE DEGERLERINI PORTB DEN CIKAR
329 MOVF GNL1, W ;BATIRMA DEGERLERINI YEDEKTEN W YE AL
330 MOVWF PORTA ;BATIRMA DEGERLERINI PORTA YA GERI YUKLE
331 RETURN ;TMR0SERVIS KESME ALT PROGRAMINA GERI DON
332
333
334; SIFIR DENETLEME ALT PROGRAM BLOGU
335
336IKINCI0DNT
337 CALL HANE340DNT ;EN YUKSEK DEGERLI HANELERIN 0 OLUP OLMADIĞINI SINAYAN ALT PROGRAMI CAGIR
338 BTFSS STATUS, Z ;EYD HANELER 0 MI?
339 RETURN ;EVET, OYLEYSE ALT PROGRAMI BITIR VE UST PROGRAMA GERI DON
340 SWAPF HANE12, W ;HAYIRSA, 1. VE 2. HANENIN YERINI DEGISTIR
341 ANDLW 0X0F ;1. HANEYI MASKELE
342 BTFSS STATUS, Z ;2. HANE 0 MI?
343 RETURN ;HAYIRSA, ALT PROGRAMDAN BU DEGERLERLE GERI DON
344 RETLW .10 ;EVETSE W YE 10 YUKLEYIP GERI DON
345
346HANE340DNT
347 MOVF HANE34, W ;UST HANELERI W YE AL
348 BTFSS STATUS, Z ;UST HANELER 0 MI?
349 RETURN ;HAYIRSA BURADAN GERI DON
350 RETLW .10 ;EVETSE W YE 10 YUKLEYIP GERI DON
351 END ;SON
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.
Bu uygulamanın kodları MIT lisansı altında paylaşılmaktadır.
İndirmeler
Yararlanılan Kaynaklar
AN557 Four Channel Digital Voltmeter with Display and Keyboard (İngilizce)