vài thủ thuật với ccs c [lưu trữ] - pic vietnam.pdf

Upload: danhis4

Post on 02-Mar-2016

142 views

Category:

Documents


0 download

TRANSCRIPT

  • PDA

    phamminhtuan

    PIC Vietnam > Microchip PIC > Cc ngn ng lp trnh khc (CCS C, HT PIC,...) > Vi th thut vi CCS C

    View Full Version : Vi th thut vi CCS C

    24-06-2008, 09:46 AM

    Mnh thy rt nhiu bn vit chng trnh cho PIC bng C, c th l CCS-C nhng vn khng th tn dngc u th ca ngn ng cp cao m thay vo l s dng C nh ASM, ch tn dng c cc lnh r nhnh cbn. Trong qu trnh vit chng trnh cho PIC bng CCS-C, mnh rt ra vi kinh nghim kh hay, chia s cho ccbn no quan tm. Tt nhin l chng trnh khng i hi tc tt nh vit cho ASM.

    [1] F1 Phm ny cc k li hi, nhn th l bit ngay.:D

    [2] Tn dng ti a cc th vin dng sn ca CCS C cho vic giao tip vi IC ngoi vi, v c bn vic giao tipny khng kh, v ch c 1 cch duy nht theo nh hot ng ca IC , vic g phi vit li nh, trong khi ngita vit tt lm ri. Tuy nhin, nu mun nng cao kh nng lp trnh cng nn xem qua ngi ta vit ci gnh :). Cc th vin ny th mc [C:\Program Files\PICC\Drivers]

    [3] Tn dng cc hm nh bit_test(), bit_set(),bit_clear(), input(), output_x(), output_bit(), setup_...() v ccch dn setup, lnh setup m khng cn phi quan tm nhiu n thanh ghi, cc hm ny s dng vi cc nhngha sn c, c nh ngha trong cc file header, v d nu #include th file nm th mc[C:\Program Files\PICC\Devices\16f877a.h]

    [4] S dng hm printf v hm sprintf

    Hm printf c th xut 1 chui k t c nh dng ra UART, tuy nhin n c chc nn buffer ra 1 hm, c ngha lxut cc k t ascii ra 1 hm.V d nh sau, ta c hm lcd_putc() trong th vin LCD.C ca CCS nh sau:

    void lcd_putc( char c) {switch (c) {case '\f' : lcd_send_byte(0,1);delay_ms(2);break;case '\n' : lcd_gotoxy(1,2); break;case '\b' : lcd_send_byte(0,0x10); break;default : lcd_send_byte(1,c); break;}}hm ny c chc nng gi 1 k t ASCII ra LCD nu gp k t '\f' th xa lcd, '\n' th xung dng, '\b' tr v udng.

    Vy xut ra LCD gi tr ca ADC va c c trong bin adcresult (kiu int16), nu theo phng php thngthng, phi chuyn i bin ny sang ascii ri dng lcd_putc() gi tng k t ra. Vy s dng hm printf thsao:

    printf(lcd_putc,"\fGia tri ADC:\n\bHEX:%lx DEC:%lu",adcresult,adcresult);u tin, '\f' xa trng LCD, in ra dng ch "Gia tri ADC:" dng 1, gp '\n' Xung dng, gp '\b' tr v udng, gp %lx chuyn gi tr adcresult ra dng HEX 16bit (k t ascii), gp %lu chuyn gi tr adcresult ra dngnguyn 16 bit (k t ascii).

    Hm sprintf() cng tng t, nhng buffer cho chui, v d:

    char str[32];sprintf(str,"\fGia tri ADC:\n\bHEX:%lx DEC:%lu",adcresult,adcresult);[5] S dng kiu cu trc, union. iu ny ci thin ng k cch qun l v s tin li cho d liu. V d:

    struct Queue{char name[10];int16 year;int8 month;int8 day;int8 hour;int8 minute;int8 secondchar note[20];};struct Queue schedule[2];

    Vi th thut vi CCS C [Lu Tr] - PIC Vietnam http://www.picvietnam.com/forum/archive/index.php/t-2506.html

    1 trong 6 6/2/2014 3:59 PM

  • //truy xut nh sau

    sprintf(schedule[0].name,"Lich 1");schedule[0].year = 2008;schedule[0].day = 30;//.....

    //nng cao hn 1 xu c th dng cu trc trong cu trc

    struct plan {char name[10];Queue date;char job[120];}

    //s dng nh saustruc plan myplan;sprintf(myplan.name,"study pic"); //:Dmyplan.date.day = 30;myplan.date.month = 2;sprintf(myplan.job,"self-teach"); //:D***************************** Mnh cp nht tip y lun************************************

    [6] S dng nhiu cng RS232, SPI hay I2C

    CCS C cung cp kh nng to ra s lng cc cng RS232, SPI hay I2C trn bt k I/O no ca PIC nh th vinphn mm. Vy khi no th cc bn c th s dng phn cng ca PIC cho cc cng , hay nhn din cc cngtrn PIC nh th no. l nh ngha stream, v FORCE_HW.Mt vi v d c th, v d sau v s dng 3 cng RS232, trong 1 cng s dng phn cng, 2 cng to ra bith vic ca CCS C

    //Cng rs232A, xy dng bn phn mm#use rs232(stream=rs232A, baud=9600, xmit=PIN_A2,rcv=PIN_A3)

    //Cng rs232B, xy dng bng phn mm#use rs232(stream=rs232B, baud=9600, xmit=PIN_B4,rcv=PIN_B5)

    //Cng rs232C, ll phn cng UART ca PIC#use rs232(stream=rs232C, baud=9600, UART1)

    //s dng nh sauif(kbhit(rs232A)) {printf(rs232B,"Nhan duoc tin hieu tu thang RS232A");} else if(kbhit(rs232C)) {printf(rs232B,"Nhan duoc tu thang RS232C");}

    // Ngoi ra cn mt cc khc ci t RS232 cho phn cng//linh ng m khng ph thuc vo ch dn #use rs232

    setup_uart(9600, rs232C);Tng t nh vy, vi I2C v SPI, s dng cc ch dn #use SPI v #use I2C

    [7] ADC ca PIC v con tr d liu. nu *=16 th trnh dch s t cu hnh con tror l 16 bit nu truy xut nvng RAM ngoi 0xFFNu bn mun s dng ADC ca PIC nh ADC 8 bit, th c th thm ch dn nh sau, , mc nh adc ca PICs dng 8 bit thi nh:

    #include#device *=16, adc=8

    //v c th s dng nh sauint8 result;result = read_adc(ADC_READ_ONLY);nhng nu dng ADC 10 bit th bin result phi khai bo 16 bit

    #device *=16, adc =10//s dngint16 result;result = read_adc()

    Vi th thut vi CCS C [Lu Tr] - PIC Vietnam http://www.picvietnam.com/forum/archive/index.php/t-2506.html

    2 trong 6 6/2/2014 3:59 PM

  • david

    phamminhtuan

    tmtm

    thuandt2085

    namqn

    bien_van_khat

    phamminhtuan

    picpen

    falleaf

    phamminhtuan

    24-06-2008, 10:15 AM

    Cha c g mi c !

    24-06-2008, 10:19 AM

    Cha c g mi c !

    Bn cng tham gia i nh, th s c nhiu iu mi :)

    24-06-2008, 05:43 PM

    Em ang tm hiu CCSC. Bit hi cu ny chc ko ng ch lm nhng anh Phamminhtuan c th ni qua choem v chc nng Serial port monitor trong thanh cng c tool ca CCSC 4.069 c ko? c Help nhng chahiu lm.

    26-06-2008, 10:30 PM

    cc bc cho em mn php hi c sch ni v ngn ng ccs ny ko ?cm n cc bc nhiu

    27-06-2008, 12:29 AM

    cc bc cho em mn php hi c sch ni v ngn ng ccs ny ko ?cm n cc bc nhiuNu bn khng ngi ting Anh, lun lun c ti liu hng dn ca CCS C cho bn c. CCS khng phi l ngnng, n l tn ca mt cng ty vit ra CCS C, l mt trnh bin dch ngn ng C.

    Thn,

    28-06-2008, 02:36 PM

    T phin bn 4.068, thng PCW ca CCS cho php debug/program = ICD2 ca microchip, phamminhtuan c thigian vit tut v ci ny cho anh em tham kho lun.

    29-06-2008, 05:57 PM

    T phin bn 4.068, thng PCW ca CCS cho php debug/program = ICD2 ca microchip, phamminhtuan c thigian vit tut v ci ny cho anh em tham kho lun.

    Ni tht l em khng c c ci ICD2 m vc na, ly u ra m vit tutorial :D, hay l bc ...

    30-06-2008, 12:39 AM

    cc bc cho em hi ??? m rng cng (tng s cng) ca pic 16f877a ,em kt ni phn cng nh sau :- port_D ca pic ni vi cng u vo ca ic 8255- dng ic nh a ch l 74hc138n ,3 chn iu khin A,B,c ca 74hc138nc ni vi cc chn , RC5,RC6,RC7- chn ra Y4 ca 74hc138 ni vi chn CS ca 8255

    Em khng bit s dng nhng lnh no ? giao tip vi 8255 v s dng cc cng PA,PB,PC ca 8255 ,cc bcch em phn ny nh , em dng ccs son thoTHANKS...................

    30-06-2008, 12:59 AM

    Ni tht l em khng c c ci ICD2 m vc na, ly u ra m vit tutorial :D, hay l bc ...

    Qua R&P ly mt ci v test, khi no rnh th mang li tr. n gin.

    NTC, em cho Tun mn mt ci ICD2 LE nh.

    Chc vui

    30-06-2008, 02:50 AM

    Ni tht l em khng c c ci ICD2 m vc na, ly u ra m vit tutorial :D, hay l bc ...

    Vi th thut vi CCS C [Lu Tr] - PIC Vietnam http://www.picvietnam.com/forum/archive/index.php/t-2506.html

    3 trong 6 6/2/2014 3:59 PM

  • manhha2799

    david

    phamminhtuan

    tampic

    nguyen_doubleH

    bongbk

    headman8x

    headman8x

    dcn_dt

    Qua R&P ly mt ci v test, khi no rnh th mang li tr. n gin.

    Chc vui:confused:, em l khng phi vy, m l bien_van_khat tng lm ICD2 ri, vy hay l anh y vit lun citut cho mi ngi. Nhng m d sao cng cm n anh, ba no rnh em chy qua ch anh Chnh ...mn n vvc th :rolleyes:

    13-07-2008, 02:18 PM

    -Nu gp k t '\f' th xa lcd, '\n' th xung dng, '\b' tr v u dng.-Cho em hi nu gp '\r' th s lm g?

    13-07-2008, 06:36 PM

    \r l kt thc chui k t,m ASCII ca n l 0x0D

    15-07-2008, 09:38 PM

    \r l kt thc chui k t,m ASCII ca n l 0x0D

    ng l trong C th nh th, nhng trong th vin ca LCD khng nh ngha cho k t \r, bn c th xem chi tittrong th vin lcd.c ca CCSC, trong th mc [C:\Program Files\PICC\Drivers] nu bn ci t CCSC mc nh

    17-11-2008, 02:09 AM

    T phin bn 4.068, thng PCW ca CCS cho php debug/program = ICD2 ca microchip, phamminhtuan c thigian vit tut v ci ny cho anh em tham kho lun.

    Mnh ang tm bn CCS 4.068 m khng thy u c, bn c cho mnh xin g Link c kg ?Cm n bn nhiu !

    17-11-2008, 09:30 PM

    mnh dang tim hiu v pic nhng ko hiu my.mnh nhn ti s dng pic d m sn phm ht ra 3 led7on ai bit ch mnh vi

    08-04-2011, 02:25 AM

    cho e hoi hm nay la gi lcd_send_byte()ai c cc hm lcd trong ccs share e vi

    06-05-2011, 11:43 AM

    -Nu gp k t '\f' th xa lcd, '\n' th xung dng, '\b' tr v u dng.-Cho em hi nu gp '\r' th s lm g?

    '\r' s cho php cn l tri 1 tab .

    bn xem li C c bn hiu thm!

    06-05-2011, 11:54 AM

    cho e hoi hm nay la gi lcd_send_byte()ai c cc hm lcd trong ccs share e vi

    cho mnh hi bn ci t CCS C cha vy ?? nu bn ci t ri, th s c sn th vin lcd m trnh bin dchcung cp cho bn v khi bn mun s dng n ch vic dung dng lnh "#include " vo l okie.bn mun bit chi tit hy vo ng dn nh sau:"C:\Program Files\PICC\Drivers\LCD".

    20-07-2012, 02:28 AM

    Lu qu khng ai gh y nh. Em thuc lp sinh sau mun. Gi mi ln m Pic & CCS. Em c nhiu iu munhi "dn dn". Ai gh qua th gip em vi. Em vit Avr th em vit Lcd nh th ny.

    Vi th thut vi CCS C [Lu Tr] - PIC Vietnam http://www.picvietnam.com/forum/archive/index.php/t-2506.html

    4 trong 6 6/2/2014 3:59 PM

  • unsigned char M[16];

    #define LcdPort PORTB#define LcdPin PINB#define LcdDDR DDRB

    #define LcdRS PORTB.0#define LcdRW PORTB.1#define LcdEN PORTB.2unsigned char LcdBusy(void){unsigned char BF;LcdDDR &=0x0F;//High 4 bit are input//LcdPort=0xF7;//R Pull-Up Enable

    LcdRS=0;LcdRW=1;

    BF=0;LcdEN=1;delay_us(10);BF=LcdPin&0x80;LcdEN=0;delay_us(10);

    LcdEN=1;delay_us(10);LcdEN=0;delay_us(10);

    if(BF==0x80)return(1);else return(0);}

    //----------------void LcdWr(unsigned char D){LcdDDR|=0xF0;//High 4bit are Outputdelay_us(10);LcdPort=((LcdPort&0x0F)|(D&0xF0));LcdEN=1;LcdEN=0;//--LcdPort=((LcdPort&0x0F)|((D

  • thanhsang056

    toancdt

    dangvanchanh

    {while(*s){LcdWrData(*s);s++;}}void LcdInit(void){LcdWrCmd(0x02);LcdWrCmd(0x0c);LcdWrCmd(0x28);LcdWrCmd(0x03);LcdWrCmd(0x01);}

    unsigned int k=123;void main(void){LcdInit();LcdWrCmd(0xC0);sprintf(&M[0],"Display:%d ",k); LcdWrStr(&M[0]);while(1);}

    ci em mun hi l: %d gi l ci g (Em ko bit tn nn mi "t" n th).trong CCS em mun hin th cc dng s thc, s nguyn, s hexa... th dng ci %g oc . n c mc notrong help khng?//mong mi ngui gip

    20-07-2012, 10:37 AM

    my anh i c th vin lcd 8bit no khng cho em xin vi, m c th thay i c cc chn ca n na

    20-07-2012, 12:59 PM

    my anh i c th vin lcd 8bit no khng cho em xin vi, m c th thay i c cc chn ca n na

    th vin 8bit+4bit+m phng http://www.mediafire.com/?42agjc1s2lynfaa

    22-11-2012, 03:36 PM

    thanks cc thnh!

    vBulletin v3.7.2, Copyright 2000-2014, Jelsoft Enterprises Ltd.

    Vi th thut vi CCS C [Lu Tr] - PIC Vietnam http://www.picvietnam.com/forum/archive/index.php/t-2506.html

    6 trong 6 6/2/2014 3:59 PM