Thông tin tài liệu
Hướng dẫn lập trình cho PIC bằng CCS ver3.242 Hướng dẫn lập trình cho PIC bằng CCS ver3.242 1. Tổng quan về CCS 1.1. Vì sao ta sử dụng CCS? !việc lập trình cho con vi điều khiển đó. Vi điều khiển chỉ hiểu và làm việc với hai con số 0 và 1. Ban đầu để việc lập trình cho VĐK là làm việc với dãy các con số 0 và 1. Sau này khi kiến trúc của Vi điều khiển ngày càng phức tạp, số luợng thanh ghi lệnh nhiều lên, việc lậptrình với dãy các số 0 và 1 không còn phù hợp nữa, đòi hỏi ra đời một ngôn ngữ mới thay thế. Và ngôn ngữ lập trình Assembly. Ở đây ta không nói nhiều đến Assmebly. Sau này khi lập trình cho Vi điều khiển một cách ngắn gọn và dễ hiểu hơn đã dẫn đến sự ra đời của"#$ % &"#$'()"*nhiều chương trình soạn thảo và biên dịch C cho Vi điều khiển : Keil C, HT+PIC, MikroC,CCS… ,"-$$.//'0$$/"!10$2điều khiển PIC. Những ưu và nhược điểm của CCS sẽ được đề cập đến trong các phần dưới đây. 1.2. Giới thiệu về CCS $$/0.3 410"#$256$7)8 Chương trình là sự tích hợp của 3 trình biên dich riêng biết cho 3 dòng PIC khác nhau đó là: + PCB cho dòng PIC 12+bit opcodes + PCM cho dòng PIC 14+bit opcodes + PCH cho dòng PIC 16 và 18+bit ,9*:0.3 /';<;/=>0.?*trình soạn thảo và biên dịch là CCS, phiên bản mới nhất là PCWH Compiler Ver 3.227. @A=0.3 $56$%$$B=CD !E.E=;56$ /CD !56$ 8$=>0 CF=;G/H* "HCD !"#09IJ"#$8,/= KCD !G9%= L9</.*MNNO/,L(P8,.*;B/C*Q97"*9 R%.L%S4QT%9BU=>0%/CV=CD !W 2. Tạo PROJECT đầu tiên trong CCS X5YN$$G%G &5YNZ[ %)$N%'>*/ \NC/3/G..L/].E.^8 _=U'CF0./'YN;N*:=>8)BT5YN G/`.E5YN/03=!33HL5YN4/% ?=aNC/G8b10/.3 4%$$CF9aNC% GL 5YN=!CF990LC/'8XU'c/H'E/ .9d/%LL'108 23.//e'</.1=>056$$$N8 2.1. Tạo một PROJECT sử dụng PIC Wizard ,=L.e=>0/56$$$N8,f =>0. -Project ‐> New ‐> PIC Wizard9B-8 9%DCg'3.13\NC8h =!%/=!G/=3aNCU'8 Cửa sổ Save As J=1'/Q.=389BSave%DCgNew Project8,Cg/'.? 9,.%i,."*/<j56$8,CF-<jCD !,.=>8 _=U'CF0./'Tkf!-i,.8$!-/'</1L<j 56$%&'Nf/CFG,.=>8XAf %CD ! <j/56$0CF-!G8,gGl:,.m=-8,"#,.< ='=;CD !8 2.1.1. Tab General ,.@NNn-56$/CD !/CA-=-CA %L1.$oJ\6@RL1L56$8 Tab General ‐ Device:p3 C56$lq\%lr\%ls\W,CF-3256$/CD ! 8 p9'< !-56$lr\stt(8 ‐ Oscilator Frequency: ,CACD !%-qu)M[O&'fP ‐ Fuses: ,L1.$a=`$L OM%v$%6NP%L.*$ N%hw NNN W + Chọn kiểu con trỏ RAM là 16+bit hay 8+bit. 2.1.2. Tab Communications ,.$C3LAL/56$i;%=/vq:q/6q$%& -L1LfL8 Giao tiếp RS232 )i256$i;g'"vq:qx8,./'n-UvQ%,Q% Ah %_.%h5'W Giao tiếp I2C XCD !6q$</B-yCN6q$%GG-`$U_(%$p%,A'O\C+ Slow), chế độ Master hay Slave, địa chỉ chN8 Tab Communications 2.1.3. Tab SPI and LCD ,./'3= &-ALAL56%xLA/56$i; 8$BT &6q$0" &56/=;8XGCD !*L/' &B0.qL*10.RO?= &6q$ (,suzl%"Gi;5P8 590p$_ /< {ls\/:u\8 Tab SPI and LCD 2.1.4. Tab Timer p3.đếm/định thời/56$ {) +range có: Timer0, timer1, timer2, WDT… ,-90.L|4G`-?Q??O|/P%* Q*'/W Tab Timer 2.1.5. Tab Analog p3-.'g=>|CAO(_$P56$8,&'/f6$!/G- %.?` + Lựa chọn cổng vào tương tự + Chọn chân điện áp lấy mẫu (Vref) + Chọn độ phân giải: 8+bit = 0 ~ 255 hay 10+bit = 0~1023 + Nguồn xung đồng hồ cho bộ ADC (trong hay ngoài), từ đó mà ta có được tốc độ lấy mẫu, thường ta chọn làinternal 2‐6 us. + Khi không sử dụng bộ ADC ta chọnnone Tab Analog 2.1.6. Tab Other ,./'nL1"CA.Capture/Comparator/PWM8 Capture ‐ Bắt giữ + Chọn bắt giữ xung theo sườn dương (rising edgeP'C=UOfalling edgePQ/ + Chọn bắt giữ sau 1, 4 hay 16 xung (copy giá trị của TimerX vào thanh ghi lưu trữ CCCPxCl%}'lrQP8 Compare ‐ So sánh + Ta có các lựa chọn thực hiện lệnh khi xayư ra bằng nhau giữa 2 đối tượng so sánh là giá4,Nl4= CC8h?` ,E/L1u ,E/L1l ,E="'gU56$8 X=,Nlu="'gU8 PWM ‐ Điều chế độ rộng xung + Lựa chọn về tần số xung ra và duty cycle. Ta có thể lựa chọn sẵn hay tự chọn tần số, tất3CA*R* 948 Comparator ‐ So sánh điện áp + Lựa chọn mức điện áp so sánh Vref. Có rất nhiều mức điện áp để ta lựa chọn. Ngoài ra ta{G-/ .CC8 Tab Other 2.1.7. Tab Interrupts và Tab Driver Tab Interruptsn-?E/ACD !8,&'/f56$/CA=;? E%.?`E/uO6J,uP%Evq:q%E,N%E6q$+SPI, ngắt onchange PORTB.v.v… Tab Drivers=; &-#/0 47i;/L8XU'/= /CFLA56$%6$/$$i;%BT/~~5vo)=q}u}%q}lr%q}:q%•:}r% •:zrWJ/{G6$v()5$\sztu%6$_l:uq%bN' :Q}%p$_%(_$W$LGQN =!_N=>0`€888€56$$€_NC Tab Interrupts [...]...Tab Driver Sau các bước chọn trên, ta nhấn OK để kết thúc quả trình tạo một Project trong CCS, một Files ten_project.c được tạo ra, chứa những khai báo cần thiết cho PIC trong một Files ten_project.h Sau đây là ví dụ về cấu trúc 1 chương trình trong CCS : #include < 16F877 h > #device PIC6 f877 *=16 ADC=10 #use delay(clock=20000000) Int16 a,b; Void xu_ly_ADC ( ) { } #INT_TIMER1... có nhiệm vụ báo cho CCS cần sử dụng những gì trong chương trình C như dùng VXL gì , có dùng giao tiếp PC qua cổng COM không , có dùng ADC không , có dùng DELAY không , có biên dịch kèm các file hay không + Các khai báo biến + Các hàm con do ta viết : xu_ly_ADC () , + Các hàm phục vụ ngắt theo sau bởi 1 chỉ thị tiền xử lý cho biết dùng ngắt nào + Chương trình chính + Một chương trình C có thể... sử dụng , ví dụ tính tổng 2 biến e ,f , chương trình như sau (trong hàm main() ) : Main() { Int e ,f ,g ; e=7 ; f= 4; g = xu_ly(e ,f ); // giá trị g=28 } + Mỗi hàm con nên được viết để thực hiện 1 chức năng chuyên biệt nào đó Bên trong 1 hàm con có thể gọi 1 hay nhiều hàm khác Cách thức hoạt động như viết 1 chương trình C trên máy tính + Nếu chương trình lớn hơn nữa có thể làm file c rất dài và... biệt như : cho LCD , Trong file chính chỉ cần thêm dòng #include < filex.c > là tất cả hàm cần dùng chứa trong file x sẽ được biên dịch vào file hex chung Các ví dụ trong thư mục của CCS nếu có sử dụng LCD sẽ chèn 1 dòng #include và do đó sẽ gọi được các hàm trong file này mà không cần phải viết lại điều này có nghĩa là ta có thể viết các file c chứa mã tổng quát có thể dùng chung cho nhiều... phải viết lại điều này có nghĩa là ta có thể viết các file c chứa mã tổng quát có thể dùng chung cho nhiều project , tức là tái sử dụng mã , thay vì phải viết lại chuyên biệt cho từng project Đây là cách làm chuyên nghiệp cho những project lớn (Nguồn: Sưu tầm) ... ngắt theo sau bởi 1 chỉ thị tiền xử lý cho biết dùng ngắt nào + Chương trình chính + Một chương trình C có thể được viết luôn tuồn trong hàm main () , nếu chúng rất ngắn và đơn giản Nhưng khi chương trình bắt đầu dài ra , phức tạp lên 1 chút thì phải phân chia trong các hàm con Các hàm này có thể là : 1/ Hàm không trả về trị Ví dụ : Void xu_ly( ) { z= x+y ; } Hàm trên chỉ thực hiện các lệnh trong . Hướng dẫn lập trình cho PIC bằng CCS ver3. 242 Hướng dẫn lập trình cho PIC bằng CCS ver3. 242 1. Tổng quan về CCS 1.1. Vì sao ta sử dụng CCS? . lậptrình với dãy các số 0 và 1 không còn phù hợp nữa, đòi hỏi ra đời một ngôn ngữ mới thay thế. Và ngôn ngữ lập trình Assembly. Ở đây ta không nói nhiều đến Assmebly. Sau này khi lập trình cho. CCS? !việc lập trình cho con vi điều khiển đó. Vi điều khiển chỉ hiểu và làm việc với hai con số 0 và 1. Ban đầu để việc lập trình cho VĐK là làm việc với dãy các con
Ngày đăng: 27/05/2014, 23:41
Xem thêm: Hướng dẫn lập trình cho PIC bằng CCS ver3, Hướng dẫn lập trình cho PIC bằng CCS ver3