24 Ekim 2013 Perşembe

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

0 yorum:

Yorum Gönder