c18 và lập trình

Upload: cong-tri

Post on 14-Apr-2018

231 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/29/2019 C18 v Lp trnh

    1/19

    [email protected]

    1

    Mu

    Sau nhiu nm c mt ti Vit Nam, hin nay dng vi iu khin PIC vn thhin u th ca n. T cc ng dng nh ti cc ng dng ln ta u c th chn

    loi PIC ph hp vi ng dng ca mnh m gi thnh vn ph hp. Vit Nam hin nay pht trin cc ng dng thng s dng cc trnh bin

    dch ngn ngC cho vi iu khin nh CSS, Keil C compiler Bi v l do ngin l cc hm, cc th vin m cc trnh dch ny cung cp tng i y vkh d s dng. Tuy nhin vic pht trin cc trnh ng dng ln v mang tnhchuyn nghip hn th cc trnh dch ny hu nh vn cha mang li. 1 c tnhna l trnh dch ny khng phi do chnh hng sn xut phn cng Microchipcung cp do vy tnh mi v tnh chuyn nghip skhng c cao nh chnh do

    nh sn xut cung cp.

    MPLAB l mi trng lp trnh tch hp do chnh Microchip cung cp, i kmvi n ngn ng lp trnh ph hp vi tng dng vi iu khin. Pic16 c ngn ngC16, Pic 18 c ngn ngC18, Pic 30 c C30Theo ti thy cc th vin hm, ccv dng dng do Microchip cung cp kh y v chuyn nghip. Hin nayvic pht trin cc ng dng trn nn MPLAB nc ta vn cha ph bin. Vimong mun gp 1 phn nh v rt ngn thi gian hc tp ca cc bn mi lmquen vi mi trng ny. Trong ti liu ny ti xin gii thiu nhng nt chnh vngn ng C18 v cc ng dng trn dng Pic18 s dng ngn ng ny

    Phn I: Ngn NgC18

    Ngn ngny c xy dng trn nn ngn ngC c s. Chnh v vy i vinhng ai quen cu lnh lp trnh C ri th vic nm bt v s dng n s trnnn gin hn rt nhiu.

    1. Kiu d liu v cc gii hn Kiu s nguyn: bng sau trnh by cc kiu s nguyn s dng trong c18

  • 7/29/2019 C18 v Lp trnh

    2/19

    [email protected]

    2

    Kiu du phy ng

    Vng lu tr kiu d liuendiannessPhn II: Lp trnh Pic18 bng MPLAB C18

    Dowload phn mm MPLAB v C18 trn internet ri tin hnh ci t chngtrn my tnh ca bn. C 1 lu cc loi phn mm u c phin bn ca n vtng ng vi loi phin bn ca MPLAB bn phi xem n h trC18 ti phinbn no. V nu khng tng thch gia 2 ci ny khi thc hin dch chng trnhs bo li v bn chng bit li ch no.

  • 7/29/2019 C18 v Lp trnh

    3/19

    [email protected]

    3

    Download MPLAB:

    http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_IDE_8_76.zip

    Download C18:

    http://ww1.microchip.com/downloads/en/DeviceDoc/mplabc18_v3.40_windows_lite.exe

    Bn download chng v my ri tin hnh ci t nh chng trnh bnhthng. Ti khng i su v vn ny.

    1. Sdng MPLAB1.1. To project B1: Mmi trng pht trin tch hp MPLAB: start/all program/Microchip/

    MPLAB IDE v8.70/MPLAB IDE

    B2: to 1 file: file/New hoc n ctrl+N

    http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_IDE_8_76.ziphttp://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_IDE_8_76.ziphttp://ww1.microchip.com/downloads/en/DeviceDoc/mplabc18_v3.40_windows_lite.exehttp://ww1.microchip.com/downloads/en/DeviceDoc/mplabc18_v3.40_windows_lite.exehttp://ww1.microchip.com/downloads/en/DeviceDoc/mplabc18_v3.40_windows_lite.exehttp://ww1.microchip.com/downloads/en/DeviceDoc/mplabc18_v3.40_windows_lite.exehttp://ww1.microchip.com/downloads/en/DeviceDoc/mplabc18_v3.40_windows_lite.exehttp://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_IDE_8_76.zip
  • 7/29/2019 C18 v Lp trnh

    4/19

    [email protected]

    4

    y l ca s ta vit code lp trnh. File sc dng add vo project khi bntin hnh lm 1project (bc 3)

    Sau khi vit xong code tin hnh lu lifile/save as hoc n ctrl+s.

    Chn th mc bn mun lu file. Lu tn file bn phi c phn mrng .* sautn. V d: file ca bn tn l sample th khi lu bn phi ch r l .c, .h hoc.asm

  • 7/29/2019 C18 v Lp trnh

    5/19

    [email protected]

    5

    B3: to project:project/project wizardn nextti ca s la chn thit b. y ta cn phi la chn thit b m mnhmun pht trin. Nh hnh di:

    Ti y, cu hi t ra l, nu ti mun thay i thit b pht trin trong project thphi lm project li t u. Cng vic tht mt cng v thiu tnh chuynnghip, ta c th tin hnh la chn li thit bnh sau:Configure/ select Device.Ta c:

  • 7/29/2019 C18 v Lp trnh

    6/19

    [email protected]

    6

    Sau tin hnh la chn thit b trong phnDevice m ti khoanh trn.

    phn ny ta cng c th thy rng MPLAB s bo cho ta bit rng thit b m tachn c h trti u. Biu tng mu xanh tc l c h trv ngc li mu l khng h tr. V d vi pic18f4550 h trhu ht cc chng trnh np ch

    c PICkit1 l khng

    Tip theo bn n next. Ta c ca s la chn ngn ng lp trnh:

  • 7/29/2019 C18 v Lp trnh

    7/19

    [email protected]

    7

    La chn ngn ng lp trnh trong phn Active Toolsuite. Nu ta s dng C18 thla chn nh trn, hoc ta c th la chn loi ngn ng khc. Trong phnToolsuite Contentsta c th kch chut vo tng phn v xem v tr ci t ccphn di Location xem c ging th mc ta ci khng. Nu khng

    ging ta c th chn li bng n Browse. Nhng theo ti iu ny l khng cnthit cho lm. v thng l phn mm s t cp nht th mc ci t chngtrnh

    Sau ny, sau khi to xongproject ta cng c th kim tra v sa li ng dn cachng bng cch:project/set language Tool locations

  • 7/29/2019 C18 v Lp trnh

    8/19

    [email protected]

    8

    Tip theo n next ta sc ca s chn th mc lu project v nhp tn projectca ta vo:

  • 7/29/2019 C18 v Lp trnh

    9/19

    [email protected]

    9

    Chn th mc lu project bng Browse > nhp tn file, n Save. sau n next:

    y ta c thAdd file to ra bc 1 hoc ta cng c thAdd sau khi to xong project. Nu Add file y, ta tin hnh chn file phn tree_box bntri, chn vo file cn add sau n Add, hoc ta cng c th xa bfile add

    xong bng cch chn vo file bn phi ri nRemove.

    1file ta ch cn phi add l file .lkr. file ny c tc dng bo cho trnh dchbit t chc b nhca loi vi iu khin ta s dng. Vi mi thit b c 1 file .lkrtng ng. Ta chn file trong phn th mc:C:\ProgramFiles\Microchip\mplabc18\v3.38\bin\LKR

    Sau n nextta c ca s hon thnh to project:

  • 7/29/2019 C18 v Lp trnh

    10/19

    [email protected]

    10

    n finish hon thnh to project.Chng ta va hon thnh xong cch to 1 project. Ok, t gic th thoi mi lmcc iu m mnh mun. Thoi mi th hin khnng lp trnh ca mnh nh!!!

    Mrng:MPLAB l mi trng pht trin tch hp. Chnh v thta cng c th pht trincc ng dng bng cc trnh dch khc trn nn ca mi trng ny. Cng vicpht trin bng ngn ng khc ch khc so vi phn to project trn trongphnla chn ngn ng lp trnh trnh by.

  • 7/29/2019 C18 v Lp trnh

    11/19

    [email protected]

    11

    Ta c th la chn ngn ng lp trnh khc. Nh v d trn ti pht trin bngCCS. Bn cng c th tin hnh bng trnh dch khc m bn quen thuc. Lu : Tt nhin rng trnh dch m bn mun pht trin trong mi

    trng MPLAB phi c ci t trn my ca bn ri

    1.2. Tin ch sdng trong MPLAB Dch chng trnh: sau khi tin hnh to project ta tin hnh dch

    chng trnh bng cch n vo nt Build All trn thanh cng c hocproject/Build All

    Nu chng trnh ca bn c li xut hin th trong ca s ouput s bo cho bitli v l do g. iu ny gip bn pht hin v sa li nhanh chng.

    Nu khng c li th trnh dch s dch ra file c tn tng ng vi tn projectc phn mrng l .Hex. file c phn mrng .Hex ny c dng np vophn cng vi iu khin

    Ca s ouput

  • 7/29/2019 C18 v Lp trnh

    12/19

    [email protected]

    12

    Ca s ny xut hin trong sau khi dch chng trnh.

    Cc thng bo trong ca s s bo cho bit chng trnh c li hay khng. Nuchng trnh xy ra li th n cng s bo cho ta bit li vtr no. bit v trli u ta ch cn double clickvo thng bo li . y l tin ch rt hay gipta c th nhanh chng pht hin li v sa li.

    DebuggerChng trnh ca chng ta b li, hoc ta mun kim sot tng phn chng

    trnh Ta c th s dng cng cdebug gii quyt vn ny.

    MPLAB c th tch hp c Debugger trong n. Tin hnh debugger c th thchin trn phn cng hoc phn mm. Mnh thng s dng debug bng phn mmv l do ti tin..hjhj

    tin hnh chn cng c debugger: debugger/select Tool. Ta s c 1 lot cccng c la chn cho debugger tng ng vi loi m ta c. V d ta c mchdebugger pickit3 th sau khi cm mch picket3 vo my tnh ta chn cng c debugl pickit3(debugger/select Tool/ picket3), MPLAB s t kt ni vi phn cng vta c th thc hin debugNu ta khng c mch phn cng s dng chodebugger th ta chn debug bng phn mm bng cch chn debugger/select Tool/MPLAB SIM.

  • 7/29/2019 C18 v Lp trnh

    13/19

    [email protected]

    13

    Tin hnh debug bng phn mm tng tnh vi debug cc trnh dch khcvi cc thao tc nh lset breakpoint, step over, step in, step out.V vy trnhmt thi gian ti khng i vo vn ny c th v c th sc trnh ny c thphn v d d hiu hn.

    ProgrammerTip theo, khi chng trnh ca chng ta c dch ra file.Hex v ta mun

    np chng vo phn cng xem kt qu th no. Ti y ta phi c mch np vchng trnh np. Mch np bn c th mua trn thtrng Vit Nam cng nhiu,khi bn mch np chng trnh phn mm sc cung cp i km cho bn. Hocnu c nhiu thi gian th bn cng c th t lm mch np cho mnh (ci ny bnt ln internet tm hiu nh). OK, let goMPLAB tch hp lun c s dng np

    chng trnh trong n, tc l khi np chng trnh ta khng cn phi np bngchng trnh i km vi mch np.

    d hiu gi s ti c mch np pickit2 v chng trnh pickit2 c cit trong my. Khi dch xong chng trnh ok khng c li g c, giy cngvic ca ti l np file.hex xung phn cng. Ta tin hnh nh sau: cm mchnp vo my tnh v nht con vi iu khin cn np vo mch np (phn ny lmnh bnh thng) sau chn chng trnh np trong MPLABprogrammer/selectprogrammer/PICkit2. MPLAB s t kt ni phn cng v a ra giao din np

    chng trnh cho bn. Nu kt ni phn cng thc hin khng c vn g th cas output s cho bn bit kt ni success. Ty ta c th np chng trnh

    bnh thng nh vi giao din cung cp bi ngi bn cho bn mch np. Khi npxong chng trnh hoc bn mun quay trli vi giao din pht trin phn mmnh trc bn chn:programmer/select programmer/None

    2. V d lp trnh Pic18 bng C18Phn ny mnh s trnh by cc v dn gin s dng C18 trn mi trng

    MPLAB thc hin cc chng trnh c bn s dng cc module trong vi iukhin Pic18. Mc ch gip hiu v cch lm vic trn MPLAB, s dng C18 viu khin cc module trong Pic18 m Microchip tch hp sn.

  • 7/29/2019 C18 v Lp trnh

    14/19

    [email protected]

    14

    Ti gi s rng bn c kin thc c bn v phn cng v th khng didng mt thi gian v sai mc ch ca ti liu ny ti s khng ni ti phn cng.

    Nu cha c kin thc v phn cng VK Pic18 th bn download ti y.

    Tip: xem chng trnh c thc hin ng nh mnh mong mun hay khngti s dng m phng bng Proteus. Chng trnh ny l chng trnh dngm phng thit k mch ph bin v khng kh s dng. Bn tin hnhdownload vvi ci t trong my. Nu c phn cng thc th cng tt, nhngtheo ti l khng cn thit lm.

    2.1. I/O c bn v delay2.1.1.I/Oy l chc nng c bn nht ca cc loi vi iu khin.

    s dng cc k hiu gi nhcng ta phi khai bo: #include(trong xxx l tn loi vi iu khin ta s dng. v d nu ta s dng loi vi iukhin p18f4550 th khai bo #include). Hoc c th khai bo cchkhc nh sau:

    defined(__18F4550)

    #include

    Thit lp pin l in hay out: vi iu khin VK Pic ging nh tt c ccloi VK khc. pin no c cu hnh 0 th l pin out. Ngc li pinno c cu hnh 1 th l pin in.

    Loi port K hiu tng ngPortA TRISA

    PortB TRISB

    PortC TRISC

    V d: ta cu hnh in/out cho PortA

    TRISA=0; //A l cng out

    TRISA=0xf0 (hoc TRISA=0b11110000) //pinA0,..,A3 l out, pinA4,..,A7 l in

    Tng t thit lp cu hnh in/out vi cc Port khc

    Bng 2.1

  • 7/29/2019 C18 v Lp trnh

    15/19

    [email protected]

    15

    Xut d liu trn cc Port xut d liu trn cc cng ta phi cu hnh cng l out v gn cc gi tr

    ti cc k hiu cng tng ng:

    Loi port K hiu tng ngPortA PORTA

    PortB PORTB

    PortC PORTC

    c d liu trn cc cngc d liu trn cc cng th tng ng cng ta phi cu hnh l cng vo v

    c gi trtng ng vi k hiu cng V d c th v xut nhp d liu trn cc cng ti khng lm trc tip

    y. tng minh hn ti sc trnh by chi tit phn v dpha di.2.1.2.Delay

    Trong C18 h trcc hm sn cc hm delay. s dng cc hm ny ta phi khaibo #include

    Hm Delay1TCY() =Nop() : hm ny delay 1 chu k dao ng thch anh.Ty theo thch anh tn s bao nhiu m delay by nhiu. V d ta s dngthch anh tn s f=4Mhz th hm ny s delay 1/(4.10^6)=0.25s

    Hm Delay10TCY(): hm ny delay 10 chu k dao ng thch anh Hm Delay10TCYx(unsigned char): hm ny delay bi s ca 10 chu k dao

    ng thch anh

    V d: Delay10TCYx(5) : delay 5*10*(1/f) = 10/f (giy)

    unsigned char: nm trong khong [0,255]

    Delay100TCYx(unsigned char): hm ny delay bi s ca 100 chu k daong thch anh

    unsigned char: nm trong di [0,255]

    Delay1KTCYx(unsigned char): hm ny delay bi s ca 1000 chu k daong thch anh

    Bng 2.2

  • 7/29/2019 C18 v Lp trnh

    16/19

    [email protected]

    16

    unsigned char: nm trong di [0,255]

    Delay10KTCYx(unsigned char): hm ny delay bi s ca 10.000 chu kdao ng thch anhunsigned char: nm trong di [0,255]

    Tt ccc hm delay u tr v gi trVoidy l phn u tin v th ti s trnh ny chi tit cch to project, add file,

    dch chng trnh v np chng trnh m phng trn proteus. T phn sau ccbc tin hnh tng t.

    2.1.3.V dTi s dng pic18f4550 lm v d v m phng trn proteus:

    Bn to file mi, sau nhp on m sau vo#include

    #include

    void main()

    {

    TRISB=0x00; //cau hinh PortB l cong out

  • 7/29/2019 C18 v Lp trnh

    17/19

    [email protected]

    17

    PORTB=0x88; //xuat d lieu PortB

    while(1)

    {

    PORTB=0X00; //xuat gia tri ra ngoai

    Delay100TCYx(250); //delay 0.25ms

    PORTB=0X01;

    Delay100TCYx(250);

    PORTB=0X02;

    Delay100TCYx(250); //delay 0.25ms

    PORTB=0X03;

    Delay100TCYx(250);

    }

    }

    Ri tin hnh lu vo th mc m bn mun trn my tnh ca mnh vi tnio.c

  • 7/29/2019 C18 v Lp trnh

    18/19

    [email protected]

    18

    To project nh ti trnh by trn vi tn ty . y ti ly tn l ioTrong phn add file bn phi add file io.c va mi to trn v file 18f4550_g.lkr(xem li phn add file trang 9). c nh sau:

    Sau tin hnh dch chng trnh. Ta c file io.hex. Np file ny vo trnh m phng protues

    Double-click vo vi iu khin trn proteus. Xut hin ca s np file io.hex

  • 7/29/2019 C18 v Lp trnh

    19/19

    [email protected]

    Sau click vo phn ti khoanh trong dn ti th mc bn lu project v MPLAB dch ra file io.hex v lu .

    Sau khi np file xong bn n nt m phng nh bnh thng.

    V d rt n gin c nhim v cu hnh PortB v xut d liu, delay sau 1khong thi gian, xut d liu

    2.2.3.