1. Trang chủ
  2. » Luận Văn - Báo Cáo

cấu trúc while, do while, for, switch

33 37 0

Đ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

Thông tin cơ bản

Tiêu đề Cấu Trúc While, Do While, For, Switch
Định dạng
Số trang 33
Dung lượng 368,31 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: * Cấu trúc Khai báo thị tiền xử lý Khai báo biến toàn cục Khai báo nguyên mẫu hàm Xây dựng hàm chương trình * Ví dụ: #include #include Khai báo thị tiền xử lý #define Led1 P1_0 Unsigned char code Led_arr[3]; Khai báo biến toàn cục Unsigned char data dem; Unsigned int xdata X; Void delay(unsigned int n); Khai báo nguyên mẫu hàm bit kiemtra(unsigned int a); void delay(unsigned int n) { Khai báo biến cục bộ; Mã chương trình trễ; } Void main() Xây dựng hàm chương trình { Khai báo biến cụ bộ; Mã chương trình chính; } Bit kiemtra(unsigned int a) { Khai báo biến cục bô; Mã chương trình kiểm tra biến a; } Chú ý: Hàm không khai báo nguyên mẫu phải xây dựng trước hàm có lời gọi hàm Ở ví dụ hàm “bit kiemtra(unsigned int a)” khai báo nguyên mẫu hàm nên xây dựng hàm vị trí chương trình Hàm C Hàm khối tạo nên chương trình bao gồm chương trình Hàm C trả kết thơng qua tên hàm hay khơng trả kết Hàm có loại: Hàm chuẩn hàm tự định nghĩa Hàm thư viện hàm định nghĩa sẵn thư viện đó, muốn sử dụng hàm thư viện phải khai báo thưviện trước sử dụng lệnh #include Cấu trúc hàm tựthiết kế: Tên hàm ([][,][…]) { [Khai báo biến cục bộvà câu lệnh thực hàm] [return [];] } Giải thích: - Kiểu kết quả: kiểu liệu kết trả về, : int, byte, char, float, void… Một hàm có thểcó khơng có kết trả Trong trường hợp hàm khơng có kết trảvề ta nên sử dụng kiểu kết void - Kiểu t số: kiểu liệu tham số - Tham số:là tham số truyền liệu vào cho hàm, hàm có khơng có tham số 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 ngun cho 2^i để thực hiện: VD: { char x, y; x=19; //x=00010011// 10 unsigned int digit = 0, number = 0; int temp=0; unsigned short digits_array[4]; // khai bao mang digits_array[] void main(){ int n = 0; P0 = 0; //================================================== { for(n = 0;n < 500;n++) { digits_array[3]=mask(digit); digit=(number/100u)%10u; // chia lay phan du duoc chu so hang tram digits_array[2]=mask(digit); digit=(number/10u)%10u; // chia lay phan du duoc chu so hang chuc digits_array[1]=mask(digit); digit=number % 10u; // chia lay phan du duoc chu so hang don vi digits_array[0] = mask(digit); //=================================================== P0 = digits_array[digits_array_index]; P1 = shifter; shifter 3u) digits_array_index = 0; } if(temp != 0) { number = number - 10; if(number == 0) temp= 0; } else { if(number==500) // neu number ==500 thi temp=0 temp = 1; else number =number+ 10; //nguoc lai number = number +10 } } while(1); } 19 SƠ ĐỒ THUẬT TOÁN: 20 Câu 7: 21 LPF lọc thông thấp (Low Pass Filter) tức lọc cho thành phần tần số thấp tần số cắt qua , thành phần tần số cao bị loại bỏ Phương pháp tăng độ xác phép đo nhiệt độ, phép đo dòng ện, điện áp,… dùng ADC dùng lọc thông thấp, đơn giản lấy trung bình cộng lần trích mẫu thời gian tầm 500ms nêu thuật tốn cách thực Sơ đồ khối: Bắt đầu Định ngĩa biến khởi tạo LCD, cảm biến Đọc giá trị đo nhiệt lần n Trể 500ms Hiển thị kết lần đo n //Chương trình cảnh báo nhiệt 200C < t < 400C // Phần mềm MikroC for 8051 // VĐK AT89S8253 // 22 // =================ket noi 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; //=============================================== sbit OW_Bit at P1_2_bit; // thiet lap pinout cho DS18x20 const unsigned short TEMP_RESOLUTION = 9; // thiet lap phan giai tuong ung cho DS1820 char *text = "000.0000"; unsigned temp; // thiet lap tro voi ky tu // khai bao bien temp void Display_Temperature(unsigned int temp2write) { const unsigned short RES_SHIFT = TEMP_RESOLUTION - 8; // hien thi gia tri T am va T duong char temp_whole; unsigned int temp_fraction; // khai bao bien T cuc bo // khai bao bien T phan so //=========== kiem tra nhiet am ===================== if (temp2write & 0x8000) { text[0] = '-'; temp2write = ~temp2write + 1; 23 } temp_whole = temp2write >> RES_SHIFT; // xuat temp_whole dich bit sang phai //=========== canh bao qua nhiet ======================= if(temp_whole >=20 && temp_whole

Ngày đăng: 08/10/2021, 09:07

HÌNH ẢNH LIÊN QUAN

Xem các hình dưới, nu cho các led luân phiên sáng t t, thi gian mi ỗ led khá lâu (lâu h n th i gian l u  nh c a m t) ta sẽ th y t ng led m t ơờư ảủắấ ừộ sáng nh  sau:ư - cấu trúc  while, do while, for, switch
em các hình dưới, nu cho các led luân phiên sáng t t, thi gian mi ỗ led khá lâu (lâu h n th i gian l u nh c a m t) ta sẽ th y t ng led m t ơờư ảủắấ ừộ sáng nh sau:ư (Trang 17)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w