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ậptrìnhCứngdụng CHƯƠNG TỔNG QUAN VỀ NGÔN NGỮ LẬPTRÌNHC 1.1 Lịch sử hình thành phát triển ngôn ngữ lậptrìnhC 1.2 Ngôn ngữ lậptrì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ậptrình (Programming language) 1.2.4 Các bước lậptrình 1.3 Cấu trúc chương trìnhC 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ẬPTRÌNHC 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ậptrìnhCứngdụ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 toá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ẬPTRÌ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 Ứngdụnglậptrì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ậptrìnhCứngdụng 3.6.2 Lậptrì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ậptrìnhCứngdụng CHƯƠNG TỔNG QUAN VỀ NGÔN NGỮ LẬPTRÌNHC 1.1 Lịch sử hình thành phát triển ngôn ngữ lậptrìnhC Ngôn ngữ lậptrìnhC 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ậptrìnhC 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ậptrình năm 1980 đưa đến phong cách lậptrì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ậptrìnhC - Ngôn ngữ lậptrìnhC ngôn ngữ lậptrình vạn dùng để viết ứngdụ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ậptrìnhC ngôn ngữ lậptrình uyển chuyển, có độ thích nghi cao 1.2 Ngôn ngữ lậptrì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ậptrình Thuật ngữ "thuật giải" "thuật toá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ố toán có quan hệ với Khoa Điện- Điện tử Đề cương giảng: LậptrìnhCứngdụ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 toán Ví dụ 1: Để giải toán tính diện tích hình cầu, mà bạn không nhớ công thức tính hình cầu bạn 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ậptrình đưa dạng lưu đồ để minh họa bước trình xử lý vấn đề (bài toá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ậptrìnhCứngdụ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 toán + Cấu trúc liệu Các thuật toá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ậptrình viên chuyên 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ậptrìnhCứngdụ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ậptrình (Programming language) Ngôn ngữ lậptrì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ậptrì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ậptrì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 hoà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ìnhC 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ìnhC 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ậptrìnhCứngdụ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ừ khoá - Là từ có ý nghĩa hoàn toà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ừ khoá 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 toán - Tên không đặt trùng với từ khoá - 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ậptrìnhCứngdụ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 đối Dù hàm đố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 đố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ậptrìnhCứngdụ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 toá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 nguyên mẫu Trong chương trìnhC 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 quát chương trìnhC 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ị xoá 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ậptrìnhCứngdụ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 từ vị trí khai báo đến cuối tệp không bao gồm tệp kết nối toá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 vuông tron 10us; 54 Khoa Điện- Điện tử Đề cương giảng: LậptrìnhCứngdụ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ậptrìnhCứngdụ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