PIC 16F84 İle oldukça
pratik sayıcılar yapmak mümkündür. Örnek olarak aşağıdaki devrede
mikrodenetleyiciye besleme, XT osilatör eklenmiştir. Bundan sonra ortak anotlu 7
segment displayin 8 bacağına PIC’in B Portları bağlanmıştır.
Sayıcının gerçekleştirilmiş hali
Sayıcının Devre Şeması
Sayıcının Assembly Programı
;
======================================================
;
Program: 7 segment 0-9 Sayici
;
Author: Umut SIMSEK
;
Date: 19.05.2009
;
Version: 1.0
;
MCU: PIC16F84A
;
======================================================
PROCESSOR 16F84A
#include "p16f84a.inc"
__CONFIG _CP_OFF & _WDT_OFF &
_PWRTE_ON & _XT_OSC
;===
Degisken Tanimlamalari ===
Cblock 0x0C ; RAM starting address
endc ;
end of variable declerations
COUNT1 equ h'30'
N equ h'249'
;===
Program Hafiza Yapilandirmasi ===
ORG 0x00 ; Reset vector
goto Main
ORG 0x04 ; Iterupt vector
goto Main
;===
Ana Program ===
Main
banksel TRISB
clrf TRISB
banksel PORTB
Loop
movlw 0xFF
movwf PORTB
call Bekle_1sn
call Bekle_1sn
call Bekle_1sn
movlw 0xC0
movwf PORTB
call Bekle_1sn
movlw 0xF9
movwf PORTB
call Bekle_1sn
movlw 0xA4
movwf PORTB
call Bekle_1sn
movlw 0xB0
movwf PORTB
call Bekle_1sn
movlw 0x99
movwf PORTB
call Bekle_1sn
movlw 0x92
movwf PORTB
call Bekle_1sn
movlw 0x82
movwf PORTB
call Bekle_1sn
movlw 0xF8
movwf PORTB
call Bekle_1sn
movlw 0xF8
movwf PORTB
call Bekle_1sn
movlw 0x80
movwf PORTB
call Bekle_1sn
movlw 0x98
movwf PORTB
call Bekle_1sn
goto Loop
Bekle_1sn
call Delay_100ms
call Delay_100ms
call Delay_100ms
call Delay_100ms
call Delay_100ms
call Delay_100ms
call Delay_100ms
call Delay_100ms
call Delay_100ms
call Delay_100ms
return
Delay_100ms
movlw d'120'
movwf COUNT1
Delay_1ms
movlw N
D_Loop
addlw -1
btfss STATUS,Z
goto D_Loop
decfsz COUNT1,f
goto Delay_1ms
return
End
No comments:
Post a Comment