Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 66 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
66
Dung lượng
0,98 MB
Nội dung
Khoa Điện- Điện tử Đề cương giảng: Lập trình C ứng dụng CHƯƠNG TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH C 1.1 Lịch sử hình thành phát triển ngơn ngữ lập trình C 1.2 Ngơn ngữ lập trình (Programming Language) 1.2.1 Thuật giải (Algorithm) 1.2.2 Chương trình (Program) 1.2.3 Ngơn ngữ lập trình (Programming language) 1.2.4 Các bước lập trình 1.3 Cấu trúc chương trình C cho vi điều khiển 1.4 Bộ chữ viết, từ khoá, tên 10 1.4.1 Bộ chữ viết 10 1.4.2 Từ khoá 10 1.4.3 Tên 10 CHƯƠNG CƠ SỞ LẬP TRÌNH C CHO VI ĐIỀU KHIỂN 12 2.1 Một số kiểu liệu 12 2.1.2 Kiểu ký tự (Char) 12 2.1.3 Kiểu số nguyên 13 2.1.4 Kiểu số thực 13 2.2 Khai báo hằng, biến, mảng cho nhớ vi điều khiển 13 2.2.1 Khai báo 13 2.2.1.1 Hằng số thực 13 2.2.1.2 Hằng số nguyên 14 2.2.1.3 Hằng ký tự 14 2.2.1.4 Hằng xâu ký tự 15 2.2.1.5 Cách khai báo 15 2.2.2 Khai báo biến 16 2.2.2.1 Biến kiểu xâu ký tự 17 2.2.3 Khai báo mảng 18 2.2.3.1 Cách khái báo mảng 18 2.2.3.2 Cách thức truy nhập phần tử mảng 18 2.2.2.3 Lấy địa phần tử mảng 19 Khoa Điện- Điện tử Đề cương giảng: Lập trình C ứng dụng 2.2.2.4 Ví dụ áp dụng: 19 2.3 Con trỏ 21 2.4 Cấu trúc liệu 27 2.5 Biểu thức Các phép toán 31 2.5.1 Phép toán số học hai 31 2.5.2.Phép quan hệ logic 32 2.5.3 Sự chuyển đổi kiểu 32 2.5.4 Phép tăng giảm 33 2.5.5 Câu lệnh gán 33 2.5.6 Biểu thức điều kiện 34 2.6 Các tốn tử điều khiển chương trình 34 2.6.1 Cấu trúc điều khiển if 34 2.6.1.1 Cấu trúc rẽ nhánh if dạng khuyết 34 2.6.1.2 Cấu trúc rẽ nhánh if dạng dầy đủ 35 2.6.2 Cấu trúc điều khiển switch 38 2.6.3 Cấu trúc lặp while 40 2.6.4 Cấu trúc lặp while 42 2.6.5 Cấu trúc lặp for 43 2.6.6 Toán tử break continue 46 2.6.6.1 Câu lênh break 46 2.6.6.2 Câu lệnh continue 46 2.6.6.Toán tử goto nhãn 48 CHƯƠNG HÀM VÀ LẬP TRÌNH HƯỚNG HÀM 50 3.1 Cách tạo hàm(function) C 50 3.2 Cách xây dựng hàm: 52 3.3 Các nguyên tắc xây dựng sử dụng hàm C 52 3.4 Sự hoạt động hàm 52 3.5 Tổ chức thực hàm 56 3.6 Ứng dụng lập trình Mobile Robot 59 3.6.1 Phần cứng Mobile Robot 59 Khoa Điện- Điện tử Đề cương giảng: Lập trình C ứng dụng 3.6.2 Lập trình di chuyển cho Mobile Robot 60 3.6.3 Điều khiển Mobile Robot theo âm 65 Khoa Điện- Điện tử Đề cương giảng: Lập trình C ứng dụng CHƯƠNG TỔNG QUAN VỀ NGƠN NGỮ LẬP TRÌNH C 1.1 Lịch sử hình thành phát triển ngơn ngữ lập trình C Ngơn ngữ lập trình C Brian W.kerningham Dennis M.Ritchice phát triển vào năm 1970 phịng thí nghiệm BELL (Hoa kỳ) với mục đích ban đầu để phát triển hệ điều hành UNIX Phần lớn ý tưởng quan trọng C xuất phát từ ngôn ngữ có tên BCPL Martin Richards nghiên cứu ảnh hưởng BCPL gián tiếp thông qua ngôn ngữ B Ken Thompson viết vào năm 1970 cho hệ điều hành UNIX chạy họ máy tính PDP- Từ đời ngơn ngữ lập trình C có nhiều loại chương trình dich C khác như: Turbo C hãng Borland, Quick C, Microsoft C, Sự phát triển ngơn ngữ lập trình năm 1980 đưa đến phong cách lập trình hướng đối tượng (OOP – Object Oriented Programing) mà ngôn ngữ ưa dùng C++ bổ sung yếu tố hướng đối tượng ngơn ngữ lập trình C - Ngơn ngữ lập trình C ngơn ngữ lập trình vạn dùng để viết ứng dụng thực tế như: Quản lý văn bản, sở liệu, ghép nối máy tính - Ngơn ngữ lập trình C ngơn ngữ lập trình uyển chuyển, có độ thích nghi cao 1.2 Ngơn ngữ lập trình (Programming Language) Phần tìm hiểu số khái niệm thuật toán, chương trình, ngơn ngữ lập trình Thuật ngữ "thuật giải" "thuật tốn" dĩ nhiên có khác song nhiều trường hợp chúng có nghĩa 1.2.1 Thuật giải (Algorithm) Là dãy thao tác xác định đối tượng, cho sau thực số hữu hạn bước đạt mục tiêu Theo R.A.Kowalski chất thuật giải: Thuật giải = Logic + Điều khiển - Logic: Đây phần quan trọng, trả lời câu hỏi "Thuật giải làm gì, giải vấn đề gì?", yếu tố tốn có quan hệ với Khoa Điện- Điện tử Đề cương giảng: Lập trình C ứng dụng v.v… Ở bao gồm kiến thức chuyên môn mà bạn phải biết để tiến hành giải tốn Ví dụ 1: Để giải tốn tính diện tích hình cầu, mà bạn khơng cịn nhớ cơng thức tính hình cầu bạn khơng thể viết chương trình cho máy để giải toán - Điều khiển: Thành phần trả lời câu hỏi: giải thuật phải làm nào? Chính cách thức tiến hành áp dụng thành phần logic để giải vấn đề Để dễ quy trình xử lý, nhà lập trình đưa dạng lưu đồ để minh họa bước q trình xử lý vấn đề (bài tốn) Hình dạng (symbol) Hành động (Activity) Dữ liệu vào (Input) Xử lý (Process) Dữ liệu (Output) Quyết định (Decision), sử dụng điều kiện Luồng xử lý (Flow lines) Gọi CT con, hàm… (Procedure, Function…) Bắt đầu, kết thúc (Begin, End) Điểm ghép nối (Connector) Khoa Điện- Điện tử Đề cương giảng: Lập trình C ứng dụng Ví dụ: Điều khiển đèn sáng tắt nút gạt Bắt đầu nút gạt trạng thái on S Đ Đèn sáng Đèn tắt Bài tập Vẽ lưu đồ cho chương trình sau: Điều khiển đèn led sáng tắt với thời gian sáng s, thời gian tắt 7s Điều khiển động điện theo nút nhấn chạy/dừng đảo chiều Điều khiển đèn giao thông : Đèn xanh 5s vàng s đèn đỏ 12s 1.2.2 Chương trình (Program) Là tập hợp mơ tả, phát biểu, nằm hệ thống qui ước ý nghĩa thứ tự thực hiện, nhằm điều khiển máy tính làm việc Theo Niklaus Wirth thì: Chương trình = Thuật tốn + Cấu trúc liệu Các thuật tốn chương trình có cấu trúc dựa cấu trúc điều khiển bản: - Tuần tự (Sequential): Các bước thực cách xác từ xuống, bước thực lần - Chọn lọc (Selection): Chọn hay nhiều thao tác để thực - Lặp lại (Repetition): Một hay nhiều bước thực lặp lại số lần Muốn trở thành lập trình viên chun nghiệp bạn làm trình tự để có thói quen tốt thuận lợi sau nhiều mặt người làm máy tính Bạn Khoa Điện- Điện tử Đề cương giảng: Lập trình C ứng dụng làm theo bước sau: Tìm, xây dựng thuật giải (trên giấy) → viết chương trình máy → dịch chương trình → chạy thử chương trình 1.2.3 Ngơn ngữ lập trình (Programming language) Ngơn ngữ lập trình hệ thống ký hiệu tuân theo qui ước ngữ pháp ngữ nghĩa, dùng để xây dựng thành chương trình cho máy tính Một chương trình viết ngơn ngữ lập trình cụ thể (ví dụ Pascal, C…) gọi chương trình nguồn, chương trình dịch làm nhiệm vụ dịch chương trình nguồn thành chương trình thực thi máy tính 1.2.4 Các bước lập trình Bước 1: Phân tích vấn đề xác định đặc điểm (xác định I-P-O) Bước 2: Lập giải pháp (đưa thuật giải) Bước 3: Cài đặt (viết chương trình) Bước 4: Chạy thử chương trình (dịch chương trình) Bước 5: Kiểm chứng hồn thiện chương trình (thử nghiệm nhiều số liệu đánh giá) 1.3 Cấu trúc chương trình C cho vi điều khiển Ex-interrupt Interrupt control On-Chip Flash ROM K Bytes On-Chip Data RAM 256 Bytes Register Timer Timer Counter Input CPU OSC Bus control PORT P0 P1 P2 P3 Serial port TxD RxD ADDRESS/DATA Trước tiên ta xét ví du: Viết chương trình C dịng thơng báo “ Chào bạn đến với chương trình C” hình Cụ thể chương trình /* Chuong trinh vi du*/ Khoa Điện- Điện tử Đề cương giảng: Lập trình C ứng dụng #include void delay(long k); void main() { while(1)// vong lap vo han { P1_0=1;// led sang delay(2000); P1_0=0// led tat delay(2000); } } void delay(long k) { long i; for(i=0;i ‘ “ Các dấu ngăn cách khơng nhìn thấy dấu cách, dấu nhảy cách tab, dấu xuống dòng Dấu gạch nối _ 1.4.2 Từ khố - Là từ có ý nghĩa hồn tồn xác định chương trình: Ví dụ: void struct class while - Khơng dùng từ khoá để đặt tên cho hằng, biến, mảng, hàm - Từ khoá phải viết chữ thường Ví dụ từ khố viết đúng: struct Ví dụ từ khoá viết sai: Struct 1.4.3 Tên - Là dãy ký tự dùng để tên hằng, tên biến, tên mảng, tên hàm Tên tạo thành từ chữ a z, A Z, chữ số 9, dấu gạch Tên không bắt đầu chữ số, chứa kí tự đặc biệt dấu cách, dấu phép tốn - Tên khơng đặt trùng với từ khố - Ví dụ tên viết đúng: Giai_Phuong_Trinh_Bac2 abc123 - Ví dụ tên viết sai: Baitap 10 Khoa Điện- Điện tử Đề cương giảng: Lập trình C ứng dụng TL0 = 0x18; TF0 = 0; // Xoa co tran } 3.2 Cách xây dựng hàm: Cấu trúc: [kiểu_giá_trị_trả_về] tên_hàm([danh sách tham số]); { Các khai báo Các câu lệnh } Trong đó: tên_hàm tên hợp lệ nào, [kiểu_giá_trị_trả_về] kiểu liệu kết trả lại cho hàm gọi [danh sách tham số] mơ tả kiểu liệu thứ tự tham số hàm nhận gọi Các khai báo câu lệnh cặp dấu {} tạo thành phần thân hàm(khối) 3.3 Các nguyên tắc xây dựng sử dụng hàm C Một hàm khơng có đối Dù hàm khơng có đối định nghĩa ta phải có hai dấu “( “ “)” đằng sau tên hàm hay ta khai báo hàm có đối kiểu void Hàm khơng cần giá trị trả (Lúc hàm C có vai trị giống thủ tục procedure Pascal) ta cần khai báo kiểu trả hàm void Một hàm không khai báo giá trị trả máy coi hàm có giá trị trả ngầm định kiểu int Khi hàm định nghĩa hàm ta muốn gọi sử dụng theo qui tắc sau: ten_ham([danh_sach_cac_tham_so_thuc_thu]) Khi gọi hàm số tham số thực phải số tham số hình thức tham số thực phải kiểu giá trị với đối tương ứng Một hàm gọi dù hàm khơng có đối ta phải viết hai dấu “(“ “)” sau tên hàm gọi 3.4 Sự hoạt động hàm - Cấp phát nhớ cho đối biến toàn cục 52 Khoa Điện- Điện tử Đề cương giảng: Lập trình C ứng dụng - Gán giá trị tham số thực cho đối tương ứng - Thực câu lệnh thân hàm - Khi gặp câu lênh return dấu } cuối thân hàm máy xoá đối biến cục khỏi nhớ hàm kết thúc - Nếu hàm kết thúc câu lệnh return có chứa biểu thức máy tính tốn giá trị biểu thức chuyển đổi kiểu phù hợp gán cho tên hàm Khai báo ngun mẫu Trong chương trình C thơng thường trước định nghĩa hàm trước tiên ta khai báo dạng nguyên mẫu hàm chương trình định nghĩa cụ thể cuối chương trình Nhằm giúp cho chương trình dịch C phát lỗi rễ dàng Dạng nguyên mẫu hàm dịng hàm thêm vào dấu chấm phẩy phía sau Tuy nhiên khai báo nguyên mẫu hàm ta bỏ qua tên đối Ví dụ: ví dụ ta khai báo nguyên mẫu hàm max ta có viết hai cách sau: Cách 1: float max(float a,float b,float c); Cách 2: float max(float ,float ,float ); Vậy tổng qt chương trình C viết cách tổng quát sau: - Các #include - Các #define - Khai báo biến, mảng ngoài, biến mảng tĩnh - Khai báo nguyên mẫu hàm - Hàm main() - Định nghĩa chi tiết hàm Biến mảng động Các biến, mảng dược khai báo bên thân hàm gọi biến, mảng tự động Chúng có hiệu lực phạm vi hàm mà chúng khai báo Khi hàm kết thúc phiên làm việc chúng bị xố khỏi nhớ trả lại nhớ cho máy Chú ý: Vì chương trình bắt đầu làm việc từ câu lệnh hàm main() kết thúc hàm kết thúc Do biện tự động khai báo bên hàm main() tồn suốt thời gian làm việc chương trình 53 Khoa Điện- Điện tử Đề cương giảng: Lập trình C ứng dụng Biến mảng Là biến, mảng khai báo bên hàm, chúng tồn suốt thời gian làm việc chương trình Phạm vi sử dụng từ vị trí khai báo đến cuối chương trình( kể trưởng hợp chương trình gồm nhiều tệp ghép nối toán tử #include) Biến mảng tĩnh Cách khai báo static khieu_du_lieu ten_bien; Ví dụ: static int a,b,x; Dịng khai báo đặt trong(biến, mảng tĩnh trong) hay ngoài(biến, mảng tĩnh ngoài) - Các biến, mảng tĩnh giống biến, mảng chỗ: Chúng tồn suốt thời gian làm việc chương trình - Các biến, mảng tĩnh khác biến, mảng chỗ: + Phạm vi hoạt động biến, mảng tĩnh giới hạn bên hàm mà khai báo Tuy nhiên giá trị lưu giữ khỏi hàm giá trị sử dụng hàm thực trở lại + Phạm vi hoạt động biến, mảng tĩnh ngồi từ vị trí khai báo đến cuối tệp không bao gồm tệp kết nối tốn tử #include Ví dụ: Chương trình sử dụng ngắt: Quay trở lại toán đếm đàn dê: Cảm biến đưa vào chân T0 timer 0, đểm đủ 100 sản phẩm , chân P1_0 có tín hiệu xung vng tron 10us; 54 Khoa Điện- Điện tử Đề cương giảng: Lập trình C ứng dụng Các nguồn ngắt 89C51: Ngắt Nguồn ngắt Địa Véc tơ External IE0 0003h Timer TF0 000Bh External IE1 0013h Timer TF1 001Bh Serial Port RI TI 0023h Timer (AT89C52) TF2 EXF2 002Bh System Reset RST 0000h - Thanh ghi IE: Thanh ghi cho phép ngắt EA - ET2 ES ET1 Chương trình: #include void delay_10us(); void CTngatTimer0() interrupt 55 EX1 ET0 EX0 Khoa Điện- Điện tử Đề cương giảng: Lập trình C ứng dụng { P1_0 = 1; delay_10us(); P1_0 = 0; delay_10us(); } void main() { TMOD = 0x01;// Timer che 16 bit TH0 = 0xFC; // nap gia tri 0xffff - 1000 + TL0 = 0x18; TR0 = 1; // Timer run EA = 1; // cho phep ngat toan cuc ET0 = 1;// Cho phep ngat ngoai while(1); } void delay_10us() { char i; for(i=0;i