vi điều khiển 02 CCS c compiler (ThangTV)

47 266 1
vi điều khiển 02  CCS c compiler  (ThangTV)

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bài 02 CCS C COMPILER 1 Hướng dẫn sử dụng chương trình CCS:  Cài đặt trình biên dịch C dùng phần mềm CCS:  Cửa sổ CCS:  Tạo source file: File->Source file (hoặc dùng project Wizard hướng dẫn giáo trình) Chọn thư mục lưu trữ source file Đặt tên file Lưu file Biên dịch chương trình tạo file *.HEX dùng Compile Rebuild Chọn Device PIC16F877A PCM 14 bit Cửa sổ soạn thảo nội dung chương trình Cửa sổ thơng báo lỗi cảnh báo biên dịch chương trình  Sử dụng HELP CCS: chứa tất trợ giúp sử dụng cho khai báo hàm CCS dùng cho PIC Click chuột trái vào biểu tượng HELP góc bên phải cửa sổ CCS Chọn Contents Index  Sử dụng HELP CCS Nhập vào nội dung cần tìm Hướng dẫn sử dụng Ví dụ Các nội dung liên quan Các thành phần source file: Các khai báo chương trình: #include // No WatchDog, High Speed, No Power Up Timer, No Low Voltage Programming #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP #use delay(clock=8M) // Tần số thạch anh dùng hệ thống Các định nghĩa biến toàn cục #Define LED PIN_D0 #BYTE TMP 25 CONST unsigned char a[10] = {0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09}; unsigned char Time; Chương trình ngắt (Interrupt) Void Quet_LED ( ) { // Nội dung } Chương trình Void main( ) { // Nội dung } Chương trình chi tiết Void main( ) { /* Khai báo biến cục bộ: biến dùng chương trình chính, khơng dùng chương trình con*/ unsigned char i,j; Int temperature; // Cấu hình thiết bị ngắt (interrupt) //============================================ //setup_adc(ADC_CLOCK_INTERNAL); //setup_adc_ports( ALL_ANALOG ); //============================================ enable_interrupts(GLOBAL); enable_interrupts(INT_RTCC); setup_timer_0(RTCC_8_BIT); // Vịng lặp vơ hạn để thực nội dung chương trình While (TRUE) // while (1) { // Nội dung chương trình } } Biến chương trình: Kiểu biến Giá trị Ý nghĩa int1 True hay False ( hay 1) int8 đến 255 int16 đến 65,535 Số nguyên byte int32 đến 4,294,967,295 Số nguyên byte Char -128 đến 127 Float 3,4 đế 3,4 số bit Số nguyên byte ( bit) Ký tự bit Số thực 32 bit short Mặc định kiểu int1 Byte Mặc định kiểu int8 Int Mặc định kiểu int8 Long Mặc định kiểu int16 Lưu ý: sử dụng signed unsigned trước kiểu trường hợp có dấu khơng có dấu Ví dụ: unsigned char a, i, j; float set, temp; CONST int8 a[3] = {2, 7, 0x7a}; unsigned int16 tmp1, tmp2; char kitu; - Dịch trái n bit biến a: a = a > n (Xem thêm HELP: operators) * Các điều kiện logic: - AND (&&) * Các phép toán CCS: - OR ( || ) - Cộng (+) - EQUAL (==) - Trừ (-) - Phủ định (!) - Nhân (*) - Chia (/) * Các định nghĩa CCS: - Chia lấy phần dư (%) - #define LED - Đảo (~) - #byte SET = 100 - Phép toán logic: AND (&); OR( | ) - #bit SW1 = 0x86.0 // RB0 PIN_D0 10 Hướng dẫn: lcd_gotoxy(1,1); printf(lcd_putc,"Counter:"); // -while(TRUE) { lcd_gotoxy(10,2); printf(lcd_putc,"%u",sodem); delay_ms(300); sodem++; if(sodem == 100) break; } }//end main 33 c) Phím nhấn VDD 4.7uF - 10uF VDD R1 10K C2 MCLR/Vpp 1uF 31 GND 32 U2 C3 VCC RESET RST RA0/AN0 RA1/AN1 RA2/AN2/Vref RA3/AN3/Vref + RA4/TOCKI RA5/AN4/SS PIC16F877A RB7/PGD RB6/PGC RB5 RB4 RB3/PGM RB2 RB1 RB0/INT 40 39 38 37 36 35 34 33 R23 R24 270 270 D1 D2 C6 33P OSC1/CLKIN RE0/RD/AN5 RE1/WR/AN6 RE2/CS/AN7 Y1 VDD R21 R22 10K 10K SW2 SW1 VDD 15 16 17 18 23 24 25 26 RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/CCP1 RC3/SCL RC4/SDA RC5/SDO RC6/TX/CK RC7/RX/DT GND C11 33P LED LED OSC2/CLKO VCC 8M 11 14 10 RD7/PSP7 RD6/PSP6 RD5/PSP5 RD4/PSP4 RD3/PSP3 RD2/PSP2 RD1/PSP1 RD0/PSP0 30 29 28 27 22 21 20 19 12 13 VDD 34 YÊU CẦU: Viết chương trình điều khiển: - Nhấn SW1: D1 sáng - Nhấn SW2: D1 tắt Hướng dẫn: - Các phím SW1 SW2 tích cực mức thấp; LED D1 D2 tích cực mức cao - Đặt cấu hình cho RC0 RC1 ngõ vào - Sử dụng hàm: input(PIN_xx) để kiểm tra trạng thái phím nhấn 35 Hướng dẫn: #include #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP #use delay(clock=8M) // -#define D1 PIN_B4 #define D2 PIN_B5 #define SW1 PIN_C0 #define SW2 PIN_C1 //================================================================ void main() { // -while(TRUE) { if(!input(SW1)) output_high(D1); if(!input(SW2)) output_low(D1); } }//end main 36 YÊU CẦU: Viết chương trình điều khiển: - Nhấn SW1: D2 tắt D1 sáng/tắt vô hạn; thời gian delay 200 ms - Nhấn SW2: D1 tắt D2 sáng/tắt vô hạn; thời gian delay 500 ms Hướng dẫn: #include #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP #use delay(clock=8M) #define D1 PIN_B4 #define D2 PIN_B5 #define SW1 PIN_C0 #define SW2 PIN_C1 //================================================================ 37 Hướng dẫn (Cách 01): void main() { while(TRUE) { if(!input(SW1)) { output_low(D2); while(1){ output_toggle(D1); delay_ms(200); if (!input(SW2)) break; } } if(!input(SW2)) { output_low(D1); while(1){ output_toggle(D2); delay_ms(500); if (!input(SW1)) break; } } } }//end main 38 Hướng dẫn (Cách 02): void main() { int8 SW = 0; while(TRUE) { if(!input(SW1)) SW = 1; if (!input(SW2)) SW = 2; switch(SW) { case 1: { output_low(D2); output_toggle(D1); delay_ms(200); break;} case 2: { output_low(D1); output_toggle(D2); delay_ms(500); break; } } } }//end main 39 BÀI TẬP VDD Cho sơ đồ mạch: 4.7uF - 10uF VDD R1 10K C2 C6 33P OSC1/CLKIN RE0/RD/AN5 RE1/WR/AN6 RE2/CS/AN7 Y1 R11 4K7 Q2 A1013 LED4 A1013 R12 4K7 Q4 A1013 RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/CCP1 RC3/SCL RC4/SDA RC5/SDO RC6/TX/CK RC7/RX/DT RD7/PSP7 RD6/PSP6 RD5/PSP5 RD4/PSP4 RD3/PSP3 RD2/PSP2 RD1/PSP1 RD0/PSP0 D8 D7 D6 D5 D4 D2 VDD D1 D2 D3 D4 D5 D6 D7 D8 R25 R26 R27 R28 R29 R30 R31 R32 270X8 40 C2 LED7S C1 a b c d e f g p 10 C1 Q3 a b c d e f g p a b c d e f g p C2 LED7S C2 C1 C2 a b c d e f g p 10 30 29 28 27 22 21 20 19 D1 15 16 17 18 23 24 25 26 A1013 LED3 a b c d e f g p LED7S VCC GND C11 33P D1 D2 D3 D4 D5 D6 D7 D8 R10 4K7 Q1 OSC2/CLKO VCC 14 8M R9 4K7 10 10 12 13 a b c d e f g p LED2 a b c d e f g p LED7S C1 a b c d e f g 10 p LED1 R1 R2 R3 R4 R5 R R6 R R7 R R8 R R R R 100X8 RB7/PGD RB6/PGC RB5 RB4 RB3/PGM RB2 RB1 RB0/INT 40 39 38 37 36 35 34 33 RA0/AN0 RA1/AN1 RA2/AN2/Vref RA3/AN3/Vref + RA4/TOCKI RA5/AN4/SS PIC16F877A D3 31 32 MCLR/Vpp 1uF GND VCC U2 C3 11 RESET RST BÀI TẬP Viết chương trình hiển thị LED đơn sáng dần từ D1 đến D8, lặp lại vô hạn lần; delay 300 ms Viết chương trình hiển thị LED đơn sáng dần từ D8 đến D1, lặp lại 10 lần; delay 500 ms Viết chương trình hiển thị LED đơn sáng dần từ (D4,D5) (D1,D8), lặp lại vơ hạn lần; delay 200 ms Viết chương trình hiển thị chữ “14.25” led; quét led với thời gian delay ms Viết chương trình hiển thị chữ “StOP” led; quét led với thời gian delay ms Viết chương trình hiển thị LED đơn sáng dần từ D1 đến D8, lặp lại lần đồng thời hiển thị số lần LED đoạn 4; delay 500 ms 41 BÀI TẬP Cho sơ đồ mạch: VDD 4.7uF - 10uF VDD R1 10K C2 C11 33P VDD RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/CCP1 RC3/SCL RC4/SDA RC5/SDO RC6/TX/CK RC7/RX/DT 11 VDD 15 16 17 18 23 24 25 26 R21 R22 10K 10K GND 8M OSC2/CLKO VCC 14 RD7/PSP7 RD6/PSP6 RD5/PSP5 RD4/PSP4 RD3/PSP3 RD2/PSP2 RD1/PSP1 RD0/PSP0 30 29 28 27 22 21 20 19 A K 15 16 GND VCC CS R/W CONST LMP VCC CS Y1 10 RE0/RD/AN5 RE1/WR/AN6 RE2/CS/AN7 DT4 DT5 DT6 DT7 OSC1/CLKIN R4 5/3W R3 10K LMP Q2 R6 4K7 VCC A1013 12 13 10 11 12 13 14 C6 33P RS TEXT LCD LINES x 16 CHARACTERS LAMP LCD1_TC1602A1 RW 31 RA0/AN0 RA1/AN1 RA2/AN2/Vref RA3/AN3/Vref + RA4/TOCKI RA5/AN4/SS 40 39 38 37 36 35 34 33 D0 D1 D2 D3 D4 D5 D6 D7 RB7/PGD RB6/PGC RB5 RB4 RB3/PGM RB2 RB1 RB0/INT MCLR/Vpp PIC16F877A RS 1uF GND 32 U2 C3 VCC RESET RST SW2 SW1 VDD 42 BÀI TẬP Viết chương trình thực hiện: - Nhấn SW1: hiển thị chữ “Xin chao cac ban!” dòng 01 LCD (x,y) = (1,1) - Nhấn SW2: hiển thị chữ “HUTECH” dòng 02 (x,y) = (10,2) Viết chương trình thực hiện: hiển thị chữ “Set value:” dòng (x,y) = (5,1) hiển thị biến set_val (khởi động = 0) dòng (x,y) = (8,2); nếu: - Nhấn SW1: set_val < 200: set_val = set_val + - Nhấn SW2: Nếu set_val > 0: set_val = set_val -1 Nội dung thay đổi set_val cập nhật tức thời dòng LCD vị trí (x,y) = (8,2) 43 BÀI TẬP Viết chương trình đồng hồ đếm giây: dịng (1,1) hiển thị “DONG HO DEM GIAY”, dòng tai (4,2) hiển thị “00:00”, khi: - Nhấn SW1: bắt đầu đếm “giây : phần trăm giây” - Nhấn SW2: dừng đếm - Nhấn giữ SW2 giây xóa số đếm 10 Viết chương trình thực hiện: hiển thị chữ “DONG HO” dòng (4,1) hiển thị “giờ:phút:giây” (6,2); thời gian bắt đầu “00:00:00” nếu: - Nhấn SW1: cho phép chỉnh (0-23) - Nhấn SW2: cho phép chỉnh phút (0-59) 44 BÀI TẬP 11 Viết chương trình hiển thị LED đơn sáng dần từ D1 đến D8, delay 250 ms, lặp lại lần, sau tắt dần từ D1 đến D8, delay 300 ms, lặp lại 20 lần 12 Viết chương trình hiển thị LED đơn sáng dần từ D8 đến D1, delay 450 ms, sau tắt dần từ D8 đến D1, delay 500 ms, lặp lại hai trình 10 lần BT* Viết chương trình hiển thị led đơn sáng dần từ D1 đến D8, thời gian delay 250 ms (dùng Timer 0) Lặp lại trình 17 lần 45 BÀI TẬP Cho sơ đồ mạch: VDD 4.7uF - 10uF VDD VDD R1 10K C2 10K 10K 10K MCLR/Vpp 1uF D 31 32 U2 C3 RA0/AN0 RA1/AN1 RA2/AN2/Vref RA3/AN3/Vref + RA4/TOCKI RA5/AN4/SS PIC16F877A RB7/PGD RB6/PGC RB5 RB4 RB3/PGM RB2 RB1 RB0/INT 40 39 38 37 36 35 34 33 R1 R2 R3 R4 R5 R R6 R R7 R R8 R R R R 270X8 LED1 10 a b c d e f g p LED7S VDD C6 33P OSC1/CLKIN RE0/RD/AN5 RE1/WR/AN6 RE2/CS/AN7 E 14 8M C11 33P B F 15 16 17 18 23 24 25 26 OSC2/CLKO RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/CCP1 RC3/SCL RC4/SDA RC5/SDO RC6/TX/CK RC7/RX/DT GND A VCC 11 10 RD7/PSP7 RD6/PSP6 RD5/PSP5 RD4/PSP4 RD3/PSP3 RD2/PSP2 RD1/PSP1 RD0/PSP0 30 29 28 27 22 21 20 19 12 13 Y1 VDD 46 C2 R16 C1 R15 10K R14 C GND VCC R13 RESET RST BÀI TẬP 13 Viết chương trình đọc bàn phím HEX hiển thị giá trị HEX led đoạn a) Qt phím chương trình b) Qt phím dùng ngắt timer1 Setup_timer_1(T1_INTERNAL| T1_DIV_BY_1) HƯỚNG DẪN: Cấu hình PORT C với RC0-RC3 ngõ vào; RC4-RC7 ngõ Xuất giá trị cột kiểm tra hàng tương ứng để biết phím nhấn 47 ... HELP CCS: chứa tất trợ giúp sử dụng cho khai báo hàm CCS dùng cho PIC Click chuột trái vào biểu tượng HELP g? ?c bên phải c? ??a sổ CCS Chọn Contents Index  Sử dụng HELP CCS Nhập vào nội dung c? ??n... 38 37 36 35 34 33 ICSPDAT ICSPCLK C6 33P 13 OSC1/CLKIN RE0/RD/AN5 RE1/WR/AN6 RE2/CS/AN7 Y1 14 GND RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/CCP1 RC3/SCL RC4/SDA RC5/SDO RC6/TX/CK RC7/RX/DT RD7/PSP7 RD6/PSP6... dụng chương trình CCS:  C? ?i đặt trình biên dịch C dùng phần mềm CCS:  C? ??a sổ CCS:  Tạo source file: File->Source file (ho? ?c dùng project Wizard hướng dẫn giáo trình) Chọn thư m? ?c lưu trữ source

Ngày đăng: 24/10/2020, 08:00

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan