Các yếu tố để chọn ngôn ngữ lập trình nhúng – học lập trình Nhúng tại IMIC.

Các yếu tố để chọn ngôn ngữ lập trình nhúng



Sau đây là một số yếu tố cần được xem xét khi chọn Ngôn ngữ lập trình để phát triển Hệ thống nhúng.
•    Kích thước: Bộ nhớ mà chương trình chiếm giữ rất quan trọng vì Bộ xử lý nhúng như Vi điều khiển có số lượng ROM rất hạn chế.
•    Tốc độ: Các chương trình phải rất nhanh tức là chúng phải chạy càng nhanh càng tốt. Phần cứng không nên bị chậm lại do phần mềm chạy chậm.
•    Tính linh động: Cùng một chương trình có thể được biên dịch cho các bộ xử lý khác nhau.
•    Dễ thực hiện
•    Dễ bảo trì
•    Dễ đọc
Hệ thống nhúng trước đó được phát triển chủ yếu sử dụng Ngôn ngữ assembly. Mặc dù Ngôn ngữ assembly gần nhất với mã máy nhưng việc thiếu tính linh động và dung lượng cao dành cho việc phát triển chương trình, khiến Ngôn ngữ assembly khó hoạt động.
Có những ngôn ngữ lập trình cấp cao khác cung cấp các tính năng được đề cập ở trên nhưng không có ngôn ngữ nào gần với Ngôn ngữ lập trình C.
Giới thiệu về ngôn ngữ lập trình nhúng
Trước khi đi vào chi tiết về Embedded C và những điều cơ bản của Embedded C, trước tiên chúng ta sẽ nói về C Programming.
C Programming, được phát triển bởi Dennis Ritchie vào cuối thập niên 60 và đầu thập niên 70, là ngôn ngữ lập trình phổ biến nhất và được sử dụng rộng rãi. C Programming cung cấp quyền truy cập bộ nhớ mức thấp bằng trình biên dịch không phức tạp (phần mềm chuyển đổi chương trình thành mã máy) và đạt được ánh xạ hiệu quả theo hướng dẫn của máy.
Ngôn ngữ lập trình C trở nên phổ biến đến mức nó được sử dụng trong rất nhiều ứng dụng, từ Hệ thống nhúng đến Siêu máy tính.
Embedded C  được sử dụng rộng rãi trong việc phát triển Hệ thống nhúng, là một phần mở rộng của C Programming. Embedded C sử dụng cùng một cú pháp và ngữ nghĩa của C Programming như hàm chính, khai báo kiểu dữ liệu, xác định biến, vòng lặp, hàm, câu lệnh, v.v.
Phần mở rộng trong Embedded C từ C Programming bao gồm Địa chỉ phần cứng I / O, truy cập không gian địa chỉ, v.v.
Sự khác biệt giữa C và Embedded C
Thực tế không có nhiều khác biệt giữa C và Embedded C ngoài một vài phần mở rộng và môi trường hoạt động. Cả C và Embedded C đều là các tiêu chuẩn ISO có cú pháp, kiểu dữ liệu, hàm gần như giống nhau, v.v.
Embedded C về cơ bản là một phần mở rộng cho Standard C Programming với các tính năng bổ sung như Addressing I/O, multiple memory addressing và fixed-point arithmetic.. v.v
C Programming thường được sử dụng để phát triển các ứng dụng máy tính để bàn trong khi Embedded C được sử dụng để phát triển các ứng dụng dựa trên Vi điều khiển.
Khái niệm cơ bản về chương trình nhúng
Bây giờ chúng ta đã hiểu một chút về Hệ thống nhúng và Ngôn ngữ lập trình, chúng ta sẽ đi sâu vào những điều cơ bản của Embedded C. Chúng tôi sẽ bắt đầu với hai trong số các tính năng cơ bản của Embedded C: Từ khóa và Kiểu dữ liệu.
Từ khóa trong Embedded C
Từ khóa là một từ đặc biệt có ý nghĩa đối với trình biên dịch (ví dụ Trình biên dịch C, là phần mềm được sử dụng để chuyển đổi chương trình được viết bằng C sang Mã máy). Ví dụ: nếu chúng tôi sử dụng Trình biên dịch Cx51 của Keil (Trình biên dịch C phổ biến cho Vi điều khiển dựa trên 8051) thì đây là một số từ khóa:
•    bit
•    sbit
•    sfr
•    small
•    large
Đây là một vài trong số nhiều từ khóa được liên kết với Trình biên dịch Cx51 C cùng với Từ khóa C tiêu chuẩn.
Kiểu dữ liệu trong Embedded C
Các kiểu dữ liệu trong Ngôn ngữ lập trình C  giúp chúng ta khai báo các biến trong chương trình. Có nhiều loại dữ liệu trong Ngôn ngữ lập trình C như int, unsigned int, signed char, unsigned char, float, double v.v. Ngoài ra, còn có một số loại dữ liệu khác trong Embedded C.
Sau đây là các loại dữ liệu bổ sung trong Embedded C được liên kết với Trình biên dịch Cx51 của Keil.
•    bit
•    sbit
•    sfr
•    s16

Cấu trúc cơ bản của Embedded C 
Điều tiếp theo cần hiểu trong Khái niệm cơ bản về Chương trình C nhúng là cấu trúc cơ bản hoặc Mẫu của Chương trình C nhúng. Điều này sẽ giúp chúng ta hiểu cách viết Embedded C.
Phần sau đây cho thấy cấu trúc cơ bản của Embedded C.

•    Multiline Comments . . . . . Denoted using /*……*/
•    
•    Single Line Comments . . . . . Denoted using //
•    
•    Preprocessor Directives . . . . . #include<…> or #define
•    
•    Global Variables . . . . . Accessible anywhere in the program
•    
•    Function Declarations . . . . . Declaring Function
•    
•    Main Function . . . . . Main Function, execution begins here
{
Local Variables . . . . . Variables confined to main function
Function Calls . . . . . Calling other Functions
Infinite Loop . . . . . Like while(1) or for(;;)
Statements . . . . .
….
….
}
•    
•    Function Definitions . . . . . Defining the Functions
{
Local Variables . . . . . Local Variables confined to this Function
Statements . . . . .
….
….
}
Chương trình Embedded C cơ bản
Cho đến bây giờ, chúng ta đã thấy một vài Thông tin cơ bản về Embedded C cũng  như sự khác biệt giữa C và Embedded C, cấu trúc cơ bản hoặc mẫu của Embedded C và các thành phần khác nhau của Embedded C.
Tiếp tục, chúng ta sẽ tìm hiểu cơ bản về Embedded C với sự trợ giúp của một ví dụ. Trong ví dụ này, chúng tôi sẽ sử dụng Vi điều khiển 8051 để nhấp nháy đèn LED được kết nối với PORT1 của vi điều khiển.
Ví dụ về Embedded C
Hình ảnh sau đây cho thấy sơ đồ mạch cho mạch ví dụ. Nó chứa một Vi điều khiển dựa trên 8051 (AT89S52) cùng với các thành phần cơ bản của nó (như Mạch RESET, Mạch dao động, v.v.) và các thành phần cho đèn LED nhấp nháy (LED và Điện trở).
 Để viết Chương trình Embedded C cho mạch trên, chúng tôi sẽ sử dụng Trình biên dịch Keil C. Trình biên dịch này là một phần của IDE Keil TừVision. Chương trình được hiển thị dưới đây.
#include<reg51.h> // Preprocessor Directive
void delay (int); // Delay Function Declaration
void main(void) // Main Function
{
P1 = 0x00; 
/* Making PORT1 pins LOW. All the LEDs are OFF.
(P1 is PORT1, as defined in reg51.h) */
while(1) // infinite loop
{
P1 = 0xFF; // Making PORT1 Pins HIGH i.e. LEDs are ON.
delay(1000); 
/* Calling Delay function with Function parameter as 1000.
This will cause a delay of 1000mS i.e. 1 second */
P1 = 0x00; // Making PORT1 Pins LOW i.e. LEDs are OFF.
delay(1000);
}
}
void delay (int d) // Delay Function Definition
{
unsigned int i=0; // Local Variable. Accessible only in this function.
 
/* This following step is responsible for causing delay of 1000mS (or as per the value entered while calling the delay function) */
for(;d>0;d–)
{
for(i=250;i>0;i – -);
for(i=248;i>0;i – -);
}
}
 

Share:

ĐỐI TÁC LIÊN KẾT TUYỂN DỤNG NHÂN SỰ CỦA IMIC TECHNOLOGY

IMIC Technology

IMIC Technology tự hào là doanh nghiệp đầu tiên tại Việt Nam triển khai các Chương trình Đào tạo chuyên môn dự án cho Học viên ngành CNTT/CNPM. Cũng là một trong những doanh nghiệp đạt được nhiều giải thưởng lớn trong lĩnh vực này. Góp phần phát triển mạnh ngành CNTT/CNPM tại nước ta hiện nay.