Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 31 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
31
Dung lượng
347,98 KB
Nội dung
Câu 1 Nêu cấu trúc chương trình viết C đầy đủ MikroC KeilC? Hàm gì? Nêu cách sử dụng hàm C? Câu Nêu cấu trúc : While, Do while, for, switch ? Sự khác While while? Trình bày chuẩn giao tiếp onewire gữa vi điều khiển Ds1820? Câu Nêu phép dịch bit C ? Viết chương trình Led đuổi PORT1 dùng pháp d ịch bit? Câu 4: Phương pháp quét ma trận bàn phím? Phương pháp chống nhiễu , chống đè cho nút bấm ph ần c ứng phần mềm? Câu 5: Viết chương trình điều khiển led đơn để hiển th ị ch ữ đ ầu tên sinh viên thực hiện? vẽ lưu đồ thuật toán ? Giải thích câu lệnh chương trình? Câu 6: Phương pháp quét Led thanh? Cách thay đổi thời gian đếm trễ chương trình Led seg? Viết chương trình điều khiển đếm từ 0=>10=>20=> … =>500=>490=>480=>470=>…=> 0… thực lại? vẽ lưu đ thu ật tốn? Giải thích câu lệnh chương trình? Câu 7: Lọc thơng thấp gì? Phương pháp tăng độ xác phép đo nhiệt đ ộ, phép đo dòng ện, điện áp, ADC dùng lọc thông thấp, đơn giản việc l trung bình c ộng lần trích mẫu thời gian tầm 500ms Nêu thuật toán cách thực C? Viết chương trình hiển cảnh báo nhiệt 2040 độ C? Giải thích câu lệnh? Câu 8: Ngắt gì? Trình bày loại ngắt 8051? Phương pháp viết chương trình có sử dụng ngắt MikroC KeilC? Viết chương trình đếm số bấm nút sử dụng ngắt hiển th ị lên Led thanh? Lưu đồ thuật toán? Giải thích câu lệnh? Bài Làm : Câu 1: Cấu trúc chương trình viết ngơn ngữ C: Một hàm C phải bao gồm kiểu trả (kiểu trả void khơng có giá trị trả về), tên xác định, danh sách tham số đ ể ngoặc đơn (nếu danh sách khơng có tham số ghi void bên dấu ngoặc), sau khối câu lệnh (hay khối mã) và/hay câu lệnh return (Nếu kiểu trả void mệnh đề khơng bắt buộc phải có Ngược lại, khơng bắt buộc có câu lệnh return mà tùy theo kỹ thuật, người lập trình dẫn dịng mã cho h ướng chẻ nhánh đ ều trả kiểu.) < kiểu_trả_về> tên_hàm { Return; } Trong đó, N biến khai báo kiểu liệu tách rời dấu phẩy ',' : var1, var2,…,varN; Toàn danh sách đặt ngoặc đơn sau tên_hàm Hàm C Trong chương trình lớn, có chương trình viết lặp l ặp lại nhiều lần, để tránh rườm rà thời gian viết ch ương trình, ng ười ta thường chia chương trình thành nhiều module, module gi ải quy ết cơng việc Các module gọi ch ương trình Trong C, chương trình gọi hàm Hàm có th ể trả kết thông qua tên hàm hay hàm kết Hàm có loại hàm chuẩn hàm tự định nghĩa Cách sử dụng hàm C : - Hàm thư viện (hàm chuẩn) : hàm định nghĩa sẵn thư viện đó, muốn sử dụng th viện ph ải khai báo thư viện trước sử dụng lệnh #include - Hàm người dùng : hàm người dùng lập trình tạo nhằm đáp ứng nhu cầu Câu : - Cấu trúc while + Cú pháp: while(biểu thức) Khối lệnh; + Sự hoạt động vòng lặp while: Bước 1: tính giá trị (biểu thức) sau while Bước 2: giá trị tính (biểu thức) ‘sai’ (==0) kết thúc vịng lặp while Bước 3: giá trị (biểu thức) ‘đúng’ (!=0) thực khối lệnh sau while Bước 4: quay lại bước Chú ý: Thân while thực lần nhiều lần không thực lần từ đầu biểu th ức sau while sai + Biểu diễn lưu đồ: - Cấu trúc lặp for +Cú pháp: for (biểu thức 1; biểu thức 2; biểu thức 3) Khối lệnh; Trong đó: Biểu thức 1: biểu thức khởi đầu Biểu thức 2: biểu thức điều kiện - điều kiện lặp Biểu thức 3: bước nhảy - thường dùng với ý nghĩa thay đ ổi b ước nh ảy Cả biểu thức tuỳ chọn, chúng có th ể vắng mặt câu lệnh cụ thể dấu chấm phẩy phải có +Sự hoạt động vòng lặp for: Bước 1: Thực biểu thức khởi đầu – Biểu thức Bước 2: Tính giá trị biểu thức để xác định điều kiện lặp Nếu biểu thức có giá trị ‘sai’ (==0) khỏi vịng lặp Ngược lại, biểu thức có giá trị ‘đúng’ ( khác 0) chuy ển t ới bước Bước 3: Thực khối lệnh sau for ( thân for ), chuy ển t ới bước Bước 4: Thực biểu thức 3, quay bước +Biểu diễn lưu đồ: - Cấu trúc lặp “do-while” +Cú pháp: Khối lệnh; while (biểu thức); +Giải thích cú pháp: Bước 1: thực khối lệnh sau Bước 2: kiểm tra giá trị biểu thức sau while, có giá trị ‘đúng’ ( khác 0) lặp lại bước 1, ‘sai’ (=0) kết thúc vịng l ặp + Biểu diễn lưu đồ: - Cấu trúc lựa chọn: switch Cú pháp lệnh switch kiểm tra vài giá trị cho m ột bi ểu thức, tương tự với làm đầu liên kết m ột vài lệnh if else if với Dạng thức sau: switch (expression) { case constant1: block of instructions break; case constant2: block of instructions break; default: default block of instructions } Nó hoạt động theo cách sau: switch tính biểu th ức kiểm tra xem có constant1 hay khơng, th ực block of instructions tìm thấy từ khố break, sau nh ảy đến ph ần cu ối c c ấu trúc lựa chọn switch Cịn khơng, switch kiểm tra xem bi ểu th ức có constant2 hay khơng Nếu thực block of instructions tìm thấy từ khố break Cuối cùng, giá trị biểu thức không đ ược ch ỉ định (bạn định câu lệnh case tuỳ thích), ch ương trình thực lệnh phần default: Nếu tồn ph ần khơng bắt buộc phải có Sự khác while while While dùng để kiểm tra điều kiện trước; điều kiện trả true thực thi câu lệnh bên Do-While dùng để thực thi câu lệnh bên lầntrước kiểm tra điều kiện; điều kiện trả true tiếp tục thực thi; điều kiện false khỏi vịng lặp Phương pháp đọc giá trị cảm biến DS1820 theo chu ẩn giao tiếp dây(onewire) Chuẩn onewire theo phương thức giao tiếp master/slave Các hàm hỗ trợ để thực việc giao tiếp DS1820 với vi điều ển Nội dung hàm sau : - Sbit OW_Bit at P1_2_bit; //Khởi tạo chân data - Unsigned short Ow_Reset(); //Phát lệnh reset cảm biến DS1820 - Unsigned short Ow_read(); //Đọc liệu từ cảm biến DS1820,dữ liệu trả dạng unsigned short - Void Ow_Write(char par) //Gửi lệnh xuống DS1820 Câu 3: Các phép dịch bit C - Phép dịch trái (Shl): - x Shl i cho gái trị nhận từ số nguyên x sau d ịch số qua trái i bit Quy tắc: Muốn nhân số với ta dịch số qua trái bit - Tổng quát, muốn nhân sốnguyene với 2^i ta dịch số qua trái i bit; x Shl i= x*n; v ới n=2^i Trong C khơng hỗ trợ phép tốn dùng phép chia nguyên cho 2^i để thực hiện: VD: { char x, y; x=19; //x=00010011// y=x Shl 2; //y=01001100=x*4=76// } Dịch trái đượ cký hiệu : dịch chuyển toàn dãy bit sang phải theo số bit cho yêu cầu dịch Vídụ: 1011 >> = 0101 Chương trình Led đuổi PORT1 dùng phép dịch bit // ============================================= // chuong trinh LED duoi su dung phep dich bit void main() { int I ; { // tat tat ca cac LED P0 = 0xff ; // tat cac LED tren PORT0 P1 = 0xff ; // tat cac LED tren PORT1 P2 = 0xff ; // tat cac LED tren PORT2 P3 = 0xff ; // tat cac LED tren PORT3 // LED duoi tren PORT1 P1 = 0xFE ; for(i=0; i> = 0101 Chương trình Led đuổi PORT1 dùng phép dịch bit // =============================================... modul LCD =============== sbit LCD_RS at P2_0 _bit; sbit LCD_EN at P2_1 _bit; sbit LCD_D4 at P2_2 _bit; sbit LCD_D5 at P2_3 _bit; sbit LCD_D6 at P2_4 _bit; sbit LCD_D7 at P2_5 _bit; //===============================================... (interrupt) trình dừng chương trình chạy để ưu tiên thực chương trình khác, chương trình gọi ch ương trình phục vụ ngắt (ISR –Interrupt Service Routine) ISR hồn tồn gi ống v ới chương trình bình