pic basic yada ASM bilenler lütfen bi el atın !!!

PIC_achu

Üye
Katılım
13 Ocak 2008
Mesajlar
446
Puanları
1
Yaş
34
herkese merhaba yine ben ;D
16f628 ile bi uygulama yapmak istiyorumda
ASM den anlayan varsa yardımcı olsun
mesele şu:
TMR0 ı kurup kesmelerle pinlerdan birinde karedalga oluşturmak istiyom
mesela iki buton bağlı olsun birine basınca 20ms periyotlu karedalganın
duty cycle 10us aralıklarla artırsın diğeri aynı şekilde azaltsın
karedalgayı şöle oluşturmayı düşünüom
tmr0 kesmesi kullanarak 20 ms de bir kesme yapacak şekilde tmr0 ı kurup
oynat uğur yapıcam ve her 20 ms de bir kesme alt programı çalışacak
kesme alt programında ise duty cycle olucak
ama ben nasıl yapacam bilmiom ???
(bende fikir iyi ama icraat yok ;D )

0)tmr0 ı nasıl kurucam
1)tmr0 ı kurmak bi kere yetiyo mu yoksa her kesmede tekrar kurmalımıyım?
2)nasıl kesmede kullanıcam
3)duty cycle oranıyla nasıl oynayacam
4)HİÇ OLMAZSA BARİ PIC BASIC TE PWM KOMUTU YAZILIMSAL MI YOKSA DONANIMSAL MI SÖLEYİN
şimdiden teşekkürler
 
Moderatör tarafında düzenlendi:
Trisa=0

define osc 4 '4mhz'lİk osİlatÖr
output porta.0 'portc.0 ÇikiŞ
output porta.1
output porta.2
a var byte
dutycyle var byte

basla:
for a=0 to 3
high porta.0
high porta.2
pause 100
low porta.0
low porta.2
pause 20
next
for a=0 to 3
high porta.1
pause 100
low porta.1
pause 20
next

goto basla
end
 
kardeş Allah razı olsun ama bi açıklamasını da yaparsan daha iyi kavrayacam
en azından hangi satırda ne yaptığımı bilim ki geliştirebileyim değil mi?
 
burakayaz ' Alıntı:
Trisa=0

define osc 4 '4mhz'lİk osİlatÖr
output porta.0 'portc.0 ÇikiŞ
output porta.1
output porta.2
a var byte
dutycyle var byte

basla:
for a=0 to 3
high porta.0
high porta.2
pause 100
low porta.0
low porta.2
pause 20
next
for a=0 to 3
high porta.1
pause 100
low porta.1
pause 20
next

goto basla
end

int. kullanmana çok gerek yok eğer int. kullanmak istersen bir örnek yazabiliriz, ardaşın yazdığı gibi bir for dongüsü ile işini görebilirsin.
 
int.kullanmana çok gerek yok eğer int. kullanmak istersen bir örnek yazabiliriz, ardaşın yazdığı gibi bir for dongüsü ile işini görebilirsin.

kardeş saol bi örnek atarsan memnun olacam şimdiden teşekkürler
 
PORTA=0:portb=0
TRISB=%00000000 '
TRISA=%00000000 '
'-----------------------------------------------------------------
@ DEVICE pic16F628 'i‏lemci 16F628
@ DEVICE pic16F628, WDT_OFF 'Watch Dog timer kapal‎
@ DEVICE pic16F628, PWRT_ON 'Power on timer aç‎k
@ DEVICE pic16F628, PROTECT_OFF 'Kod Koruma kapal‎
@ DEVICE pic16F628, MCLR_off 'MCLR pini kullan‎lm‎yor.
@ DEVICE pic16F628, INTRC_OSC_NOCLKOUT 'Dahili osilatِr kullan‎lacak
'-----------------------------------------------------------------
'-------------------------------------------------------------------------
ON INTERRUPT GoTo KESME 'kesme olu‏ursa KESME adl‎ etikete git.
OPTION_REG=%10001000 'Pull up dirençleri فPTAL- Bِlme oran‎ 1/1
INTCON=%10100000 'Kesmeler aktif ve TMR0 kesmesi aktif
TMR0=28
CMCON=7 '16F628 de komparatِr pinleri iptal hepsi giri‏ ç‎k‎‏
'----------------------------------------------------------------------------

'-----------------------------------------------------------------------------
CLEAR 'tüm deًi‏kenler s‎f‎rland‎
'PAUSE 200

'-----------------------------------------------------------------------------

BASLA:

GOTO BASLA
' bu bölümde butonlarını okuyabilirsin veya başka işler yapabilirsin
DISABLE
KESME:
PORTA.0=1-PORTA.0
@ nop
@ nop
TMR0=28
INTCON.2=0 'TMR0 Kesme bayraً‎ s‎f‎rlan‎yor
RESUME
ENABLE

END

----------------------------------------------

işlemcinin PDF ini incelersen TMR0 kurulumları hakkında gerekli registerları görebilirsin

iyi çalışmalar
 

Forum istatistikleri

Konular
128,931
Mesajlar
921,810
Kullanıcılar
451,107
Son üye
Xte13

Yeni konular

Çevrimiçi üyeler

Geri
Üst