-CCS ile (C) dilinde yazılmış deney fönleri varmı__?

burak6000

Üye
Katılım
17 Nis 2010
Mesajlar
195
Puanları
1
-Arkadaşlar C dilinde yazılmış örnek olarak ele alabileceğim PIC ders notu olan arkadaşlar varsa upload edebilirlermi acaba_?

şimdiden teşekkür ederim...
 
program pic16f628_step

const stepValue as byte[4]=($08,$04,$02,$01)
const MAX_DELAY=100
const MIN_DELAY=20
const TIMER0_VALUE=$01

const KEY_UP = 1
const KEY_DOWN = 2
const KEY_DIR = 3
const KEY_WORK = 4
const KEY_NOTHING = 0

const DIR_CCW=1
const DIR_CW=2
const RUN_START=1
const RUN_STOP=2

dim delayCoeff as byte
dim prevKey as byte
dim keyChecked as byte
dim doKey as byte
dim stepDir as byte
dim isRunning as byte

'----------Kesme servisi
sub procedure Interrupt
clearBit(INTCON,TMR0)
if INTCON.TMR0IF = 1 then
ClearBit(INTCON,TMR0IF)
TMR0=TIMER0_VALUE

if PORTA.0= 1 then
Inc(keyChecked)
prevKey = KEY_UP
end if
if PORTA.1= 1 then
Inc(keyChecked)
prevKey = KEY_DOWN
end if
if PORTA.2= 1 then
Inc(keyChecked)
prevKey = KEY_DIR
end if
if PORTA.3= 1 then
Inc(keyChecked)
prevKey = KEY_WORK
end if
if keyChecked> $FE then
dokey = 1
end if
end if
setBit(INTCON,GIE)
end sub

'------------------Ana Program-------------
sub procedure Init_Main
TRISA=$FF
PORTA=0
TRISB=0
PORTB=0

OPTION_REG=$C8 'ESKİ DURUM $C8
TMR0=TIMER0_VALUE
INTCON=$A0 'ESKİ DURUM $A0
delayCoeff= MAX_DELAY
prevKey = 0
keyChecked=0
stepDir=DIR_CW
isRunning=1
end sub

'-------Gecikme ayarları-------------
sub procedure Delay_Step(dim delTime as byte)
dim i as byte
i = 0
while i<delTime
Delay_500us
Inc(i)
wend
end sub

'-----------clock palslerinin latch e gönderilmesi----
sub procedure Ping(dim byref port as byte)
SetBit(port,4)
ClearBit(port,4)
end sub

'------------bir step döngüsü-------------
sub procedure Do_Step(dim byref port as byte)
dim ii as byte
if isRunning=RUN_START then
if (stepDir=DIR_CW) then
ii=0
while (ii<4)
port=stepValue[ii]
Ping(port)
Delay_Step(delayCoeff)
Inc(ii)
wend
else
ii=0
while (ii<4)
port=stepValue[3-ii]
Ping(port)
Delay_Step(delaycoeff)
Inc(ii)
wend
end if
end if
end sub

'-------butonların taranması----
sub procedure Do_key
if doKey=1 then
doKey=0
keyChecked=0
select case prevKey
case KEY_DOWN
if (delayCoeff>MIN_DELAY) then
Dec(delayCoeff)
end if
case KEY_UP
if (delayCoeff<MAX_DELAY) then
Inc(delayCoeff)
end if
case KEY_DIR
stepDir=3-stepDir
case KEY_WORK
isRunning=3-isRunning
end select
prevKey=KEY_NOTHING
end if
end sub
'------ana prosedure----
main:
Init_Main
while 1=1
Do_Key
Do_Step(PORTB)
wend
end.



(BU PROGRAM BETİ EASYPIC KİTABINDAN ALINTIDIR)
 
CCS C Türkçe Ders Notları

Daha önce verilmiş olabilir....
 

Ekli dosyalar

  • ccs_c_dersleri.rar
    159.7 KB · Görüntüleme: 6
  • ccs-pic-c-derleyici-programi-c-dili-ve-ccs-temel-esaslari.pdf
    1.3 MB · Görüntüleme: 4

Forum istatistikleri

Konular
128,198
Mesajlar
915,775
Kullanıcılar
449,981
Son üye
Muhammeddt

Yeni konular

Geri
Üst