Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 96 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
96
Dung lượng
5,13 MB
Nội dung
Nguồn: http://fco.vn/diendan Đề cương ứng dụng lập trình C cho vi điều khiển 8051 I Ngôn ngữ C cho vi điều khiển 1, Giới thiệu ngôn ngữ C Trong kỹ thuật lập trình vi điều khiển nói chung, ngơn ngữ lập trình sử dụng thường chia làm loại: Ngôn ngữ bậc thấp Ngôn ngữ bậc cao Ngôn ngữ bậc cao ngôn ngữ gần vơi ngôn ngữ người hơn, việc lập trình ngôn ngữ trở nên dễ dàng đơn giản Có thể kể đến số ngơn ngữ lập trình bậc cao C, Basic, Pascal… dó C ngôn ngữ thông dụng kỹ thuật vi điều khiển Về chất, sử dụng ngôn ngữ thay cho ngôn ngữ bậc thấp giảm tải cho lập trình viên việc nghiên cứu tập lệnh xây dựng cấu trúc giải thuật Chương trình viết ngơn ngữ bậc cao phần mềm máy tính gọi trình biên dịch (Compiler) chuyển sang dạng hợp ngữ trước chuyển sang mã máy Khi sử dụng ngôn ngữ C người lập trình khơng cần hiểu sâu sắc cấu trúc vi điều khiển Có nghĩa với người chưa quen với vi điểu khiển cho trước xây dựng chương trình cách nhanh chóng hơn, khơng phải thời gian tìm hiểu kiến trúc vi điều khiển Và việc sử dụng lại chương trình xây dựng trước dễ dàng hơn, sử dụng tồn sửa chữa phần Ngôn ngữ C 2.1 Kiểu liệu 2.1.1 Kiểu liệu C Kiểu Số Byte Khoảng giá trị Char -128 – +127 Unsigned char – 255 Int -32768 - +32767 Unsigned int - 65535 Long -2147483648 - +2147483647 Unsigned long – 4294697295 Float Nguồn: http://fco.vn/diendan * Khai báo biến: - Cú pháp: Kiểu_dữ_liệu Vùng_nhớ Tên_biến _at_ Đia_chỉ; Ví dụ: Unsigned char data x; - Khi khai báo biến gán ln cho biến giá trị ban đầu Ví dụ: Thay vì: unsigned char x; x = 0; Ta cần: unsigned char x = 0; - Có thể khai báo nhiều biến kiểu lúc Ví dụ: unsigned int x,y,z,t; - Chỉ định vùng nhớ: từ khoá “Vùng_nhớ” cho phép người dùng vùng nhớ sử dụng để lưu trữ biến sử dụng chương trình Các vùng nhớ sử dụng là: CODE, DATA, DATAB, IDATA, PDATA, XDTA Khi không khai báo vùng nhớ trình dịch Keil C mặc định vùng nhớ DATA Vùng nhớ Ý nghĩa CODE Bộ nhớ mã nguồn chương trình DATA Bộ nhớ liệu gồm 128 Byte thấp RAM vi điều khiển BDATA Bộ nhớ liệu có thê định địa bit, nằm vùng nhớ DATA IDATA Bộ nhớ liệu gồm 128 Byte cao RAM vi điều khiển có số dịng vi điều khiển sau PDATA Bố nhớ liệu gồm 256 Byte, truy cập địa đặt P0 XDATA Bộ nhớ liệu ngồi có dung lượng lên đến 64 KB, truy cập địa đặt P0 P2 * Định nghĩa lại kiểu - Cú pháp: typedef Kiễu_dữ_liệu Tên_biến; - Ten_biến sau sử dụng kiểu liệu dùng để khai báo biến khác Ví dụ: typedef int m5[5]; Dùng tên m5 khai báo hai biến tên a b có kiểu liệu mảng chiểu phần tử: m5 a,b; Nguồn: http://fco.vn/diendan 2.1.2 Kiểu liệu Keil C Kiểu Số bit Bit Sbit Sfr Sfr16 16 - bit : dùng để khai báo biến có giá trị hay biến logic vùng RAM vi điều khiển Khi khai báo biến kiểu bit trình dịc Keil C mặc định vùng nhớ sử dụng BDATA ` - sbit, sfr, sfr16: dùng để định nghĩa cho ghi chức cổng vi điều khiển dùng để truy nhập đoạn liệu bit, bit, 16 bit Ví dụ: ta sử dụng để định nghĩa từ gợi nhớ để sử dụng dễ dàng viết chương trình dài có cấu trúc sbit led=P0^0; sfr keypad = 0x90; 2.1.3 Mảng Mảng tập hợp nhiều phần tử kiểu giá trị chung tên Các phần tử mảng phân biệt với số hay số thứ tự phần tử dãy phẩn tử Mỗi phần tử có vai trị biến lưu trữ giá trị độc lập với phần tử khác mảng Mảng mảng chiều mảng nhiều chiều Khai báo: - Cú pháp: Tên_kiểu Vùng_nhớ Tên_mảng[số_phần_tử_mảng]; Khi bỏ trống số phần tử mảng ta có mảng có số phần tử Ví dụ: Unsigned int data a[5],b[2][3]; Với khai báo ta có: mảng a mảng chiều phần tử Mảng b mảng hai chiều, tổng số phần tử Chỉ số mảng số Mảng có chiều phải cung cấp đầy đủ nhiêu sơ Ví du: phần tử mảng b[0][1] Khi viết b[0] sai Nguồn: http://fco.vn/diendan unsigned char code code_7seg[]={0x81, 0xcf, 0x92, 0x86, 0xcc, 0xa4, 0xa0, 0x8f, 0x80, 0x84 } ; 2.1.4 Con trỏ Khi ta khai báo biến, biến cấp phát khoảng nhớ bao gồm số byte định dùng để lưu trữ giá trị Địa khoảng nhớ địa biến khai báo Con trỏ biến dùng để chứa địa mà không chứa giá trị, hay giá trị trỏ địa khoảng nhớ mà trỏ tới Với vùng nhớ cụ thể trỏ tới vùng nhớ chiếm dung lượng phụ thuộc vào độ lớn vùng nhớ Con trỏ tổng quát không xác định trước vùng nhớ có dung lượng lớn tốt nên sử dụng trỏ cụ thể Loại trỏ Kích thước Con trỏ tổng quát byte Con trỏ XDATA byte Con trỏ CODE byte Con trỏ DATA byte Con trỏ IDATA byte Con trỏ PDATA byte Khai báo biến trỏ: - Cú pháp: Kiểu_Dữ_liệu Vùng_nhớ *Tên_biến; - Ví dụ: int *int_ptr; long data *long_ptr; - không rõ vùng nhớ trỏ coi trỏ tổng quát 2.1.5 Kiểu liệu cấu trúc Kiểu liệu cấu trúc tập hợp biến, mảng kiểu cấu trúc khác biểu thị tên kiểu liệu cấu trúc dùng để lưu trữ giá trị, thơng tin có liên quan đến Định nghĩa khai báo biến cấu trúc: - Định nghĩa: typedef struct { Khai báo biến thành phần; } Tên_kiểu_cấu_trúc; - Khai báo: Tên_kiểu_cấu_trúc Vùng_nhớ Tên_biến; Nguồn: http://fco.vn/diendan Ví dụ: typedef struct { char day; char month; int year; } Date_type; Date_type date,date_arr[5]; 2.2 Phép tốn Phép gán kí hiệu: “=” - Cú pháp: Biến_1 = Biến_2; Trong Biến_2 giá trị xác định biến 2.2.1 Phép tốn số học Phép tốn ý nghĩa Ví dụ + Phép cộng X=a+b - Phép trừ X=a-b * / Phép nhân Phép chia lấy phần X=a*b X=a/b nguyên (a=9, b=2 → X=4) Phép chia lấy phần dư a%b % (a=9, b=2 → X=1) 2.2.2 Phép toán Logic AND: && OR: || NOT: ! 2.2.3 Các phép toán so sánh: Phép toỏn ý ngha > So sánh lớn >= So sánh lớn So sánh nhỏ < Ví dụ a>b 4>5 có giá trị a>=b 6>=2 có giá trị a