Microcontroller serisinden 8 bacaklı 12F675' i, 4 MHz kristalini kullanmadan çalıştıracağız.
Chipin içinde kondansatör+direnç rezonansından dahili kristal var. Bunu etkin yapmak için,
sürücüye (DEVICE) kırmızı işaretli olan kodu yazmalıyız.
'Pic Basic Pro (PBP) için komut
@ DEVICE pic12F675, INTRC_OSC_NOCLKOUT, mclr_off
Osccal için kalibrasyon ayarı 3400 ile 3500 yapabiliriz.
OSCCAL=$3439
12F675 4 ile 20 MHz arası kristali destekliyor. Fakat dahili osc olarak kullandığımızda
4 MHz de çalışabiliyor.
Pic Basic Pro ile anlayamadığınız bir durumda yorum kutusundan soru isteğinizi
gönderebilirsiniz.
Altta örneği inceleyebilirsiniz.
'****************************************************************
'* Date : 26.11.2010 *
'* Version : 1.0 *
'ANSEL = 110001
'ADCON0 = %10000001
'****************************************************************
include "modedefs.bas"
'@ DEVICE pic16F628a,xt_OSC,mclr_off
@ DEVICE pic12F675, INTRC_OSC_NOCLKOUT,mclr_off
DEFINE LOADER_USED 1
define osccal_1k 1
'define osc 4
led_1 var gpio.0
' b0 Var GPIO.2 ' serial test için
'AN1 için gpio.1
Lamba var gpio.2
Buton var gpio.3
led_2 var gpio.5
led_3 var gpio.4
Define ADC_BITS 10 ' Set number of bits in result
Define ADC_CLOCK 3 ' Set clock source (3=rc)
Define ADC_SAMPLEUS 50 ' Set sampling time in uS
raw var word 'ADC den okunan ham Digital değer.
VOLT var word '16 bit değişken tipi seçtik kullanacağımız değer 10 bit olacak.
Mvolt var byte
OSCCAL=$3438 ' Yeni Kasım 2010 calib
high lamba
high led_1
high led_2
high led_3
pause 2000
'****************************************basla************************
'ANSEL = 110001
'ADCON0 = %10000001
ADCON0.7 = 1 ' Right justify result
ANSEL = 000010 ' Set AN1 analog, rest digital
CMCON = 7 ' Analog comparators off
'TmpW = Vbatt * Vfs 'AD * 20480
' TmpW = Div32 1024 '(AD * 20480) / 1024
'**********************************************************************
loop:
if buton=0 and volt>=3 then
toggle lamba
while buton=0
wend
pause 200
endif
if volt=<2 then low lamba
ADCIN 1, raw
' adcin 1, volt
'***************Bu 3 satır iyi durumda****************
Volt=(Raw*/1250)/100
MVolt=Volt//10 ' Mvolt = Volt mod 10
Volt=Volt/10
'*************************************
'and mvolt=<0
'Serout b0, n2400, ["DC Volts= ", #volt,".", #mvolt,10,13] 'test halinde
'Serout b0, n2400, ["DC Volts= ", #volt,".", #mvolt] 'yan yana
' Pause 100 ' Wait .1 second
if volt=<3 and mvolt=<8 or volt=<2 then 'mvolt=<8 or volt=<2 then
high led_1
else
low led_1
endif
Chipin içinde kondansatör+direnç rezonansından dahili kristal var. Bunu etkin yapmak için,
sürücüye (DEVICE) kırmızı işaretli olan kodu yazmalıyız.
'Pic Basic Pro (PBP) için komut
@ DEVICE pic12F675, INTRC_OSC_NOCLKOUT, mclr_off
Osccal için kalibrasyon ayarı 3400 ile 3500 yapabiliriz.
OSCCAL=$3439
12F675 4 ile 20 MHz arası kristali destekliyor. Fakat dahili osc olarak kullandığımızda
4 MHz de çalışabiliyor.
Pic Basic Pro ile anlayamadığınız bir durumda yorum kutusundan soru isteğinizi
gönderebilirsiniz.
Altta örneği inceleyebilirsiniz.
'****************************************************************
'* Date : 26.11.2010 *
'* Version : 1.0 *
'ANSEL = 110001
'ADCON0 = %10000001
'****************************************************************
include "modedefs.bas"
'@ DEVICE pic16F628a,xt_OSC,mclr_off
@ DEVICE pic12F675, INTRC_OSC_NOCLKOUT,mclr_off
DEFINE LOADER_USED 1
define osccal_1k 1
'define osc 4
led_1 var gpio.0
' b0 Var GPIO.2 ' serial test için
'AN1 için gpio.1
Lamba var gpio.2
Buton var gpio.3
led_2 var gpio.5
led_3 var gpio.4
Define ADC_BITS 10 ' Set number of bits in result
Define ADC_CLOCK 3 ' Set clock source (3=rc)
Define ADC_SAMPLEUS 50 ' Set sampling time in uS
raw var word 'ADC den okunan ham Digital değer.
VOLT var word '16 bit değişken tipi seçtik kullanacağımız değer 10 bit olacak.
Mvolt var byte
OSCCAL=$3438 ' Yeni Kasım 2010 calib
high lamba
high led_1
high led_2
high led_3
pause 2000
'****************************************basla************************
'ANSEL = 110001
'ADCON0 = %10000001
ADCON0.7 = 1 ' Right justify result
ANSEL = 000010 ' Set AN1 analog, rest digital
CMCON = 7 ' Analog comparators off
'TmpW = Vbatt * Vfs 'AD * 20480
' TmpW = Div32 1024 '(AD * 20480) / 1024
'**********************************************************************
loop:
if buton=0 and volt>=3 then
toggle lamba
while buton=0
wend
pause 200
endif
if volt=<2 then low lamba
ADCIN 1, raw
' adcin 1, volt
'***************Bu 3 satır iyi durumda****************
Volt=(Raw*/1250)/100
MVolt=Volt//10 ' Mvolt = Volt mod 10
Volt=Volt/10
'*************************************
'and mvolt=<0
'Serout b0, n2400, ["DC Volts= ", #volt,".", #mvolt,10,13] 'test halinde
'Serout b0, n2400, ["DC Volts= ", #volt,".", #mvolt] 'yan yana
' Pause 100 ' Wait .1 second
if volt=<3 and mvolt=<8 or volt=<2 then 'mvolt=<8 or volt=<2 then
high led_1
else
low led_1
endif
0 yorum:
Yorum Gönder