Chương trình C nhúng là gì và cấu trúc của nó cho người mới bắt đầu

Hãy Thử Công Cụ CủA Chúng Tôi Để LoạI Bỏ Các VấN Đề





Trước đó, nhiều ứng dụng nhúng đã được phát triển bằng cách sử dụng lập trình cấp lắp ráp. Tuy nhiên, họ không cung cấp tính di động. Nhược điểm này đã được khắc phục nhờ sự ra đời của nhiều ngôn ngữ cấp cao khác nhau như C, Pascal và COBOL. Tuy nhiên, ngôn ngữ C đã được chấp nhận rộng rãi cho các hệ thống nhúng và nó vẫn tiếp tục như vậy. Mã C được viết ra đáng tin cậy hơn, có thể mở rộng và di động hơn và trên thực tế, dễ hiểu hơn nhiều. Lập trình C nhúng là linh hồn của bộ xử lý hoạt động bên trong mỗi hệ thống nhúng chúng ta bắt gặp trong cuộc sống hàng ngày của mình, chẳng hạn như điện thoại di động, máy giặt và máy ảnh kỹ thuật số. Mỗi bộ xử lý được liên kết với phần mềm nhúng. Điều đầu tiên và quan trọng nhất là phần mềm nhúng quyết định chức năng của hệ thống nhúng. Ngôn ngữ C nhúng được sử dụng thường xuyên nhất để lập trình vi điều khiển .

Ngôn ngữ C là gì?

Ngôn ngữ C được phát triển bởi Dennis Ritchie vào năm 1969. Nó là một tập hợp của một hoặc nhiều hàm, và mỗi hàm là một tập hợp các câu lệnh thực hiện một nhiệm vụ cụ thể.
Ngôn ngữ C là ngôn ngữ cấp trung bình vì nó hỗ trợ các ứng dụng cấp cao và ứng dụng cấp thấp. Trước khi đi vào chi tiết lập trình C nhúng, chúng ta nên biết về tổ chức bộ nhớ RAM.




Các tính năng chính của ngôn ngữ C bao gồm những điều sau đây.

  • Ngôn ngữ C là phần mềm được thiết kế với các từ khóa, kiểu dữ liệu, biến, hằng, v.v.
  • Embedded C là một thuật ngữ chung cho một ngôn ngữ lập trình được viết bằng C, ngôn ngữ này được liên kết với một kiến ​​trúc phần cứng cụ thể.
  • Embedded C là một phần mở rộng của ngôn ngữ C với một số tệp tiêu đề bổ sung. Các tệp tiêu đề này có thể thay đổi từ bộ điều khiển sang bộ điều khiển.
  • Các vi điều khiển 8051 #include đã được sử dụng.

Lập trình C nhúng là gì

Trong mọi dự án dựa trên hệ thống nhúng, lập trình C nhúng đóng một vai trò quan trọng để làm cho bộ vi điều khiển chạy và thực hiện các hành động ưu tiên. Hiện tại, chúng ta thường sử dụng một số thiết bị điện tử như điện thoại di động, máy giặt, hệ thống an ninh, tủ lạnh, máy ảnh kỹ thuật số, v.v. Việc điều khiển các thiết bị nhúng này có thể được thực hiện với sự trợ giúp của chương trình C nhúng. Ví dụ trong máy ảnh kỹ thuật số, nếu chúng ta nhấn nút camera để chụp ảnh thì vi điều khiển sẽ thực hiện chức năng cần thiết để nhấp vào ảnh cũng như lưu trữ.



Lập trình C nhúng

Lập trình C nhúng

Lập trình C nhúng xây dựng với một tập hợp các hàm trong đó mỗi hàm là một tập hợp các câu lệnh được sử dụng để thực thi một số tác vụ cụ thể. Cả hai ngôn ngữ C và C nhúng đều giống nhau và được thực hiện thông qua một số yếu tố cơ bản như biến, tập ký tự, từ khóa, kiểu dữ liệu, khai báo biến, biểu thức, câu lệnh. Tất cả các yếu tố này đóng một vai trò quan trọng trong khi viết một chương trình C nhúng.

Các nhà thiết kế hệ thống nhúng phải biết về kiến ​​trúc phần cứng để viết chương trình. Các chương trình này đóng một vai trò nổi bật trong việc giám sát và điều khiển các thiết bị bên ngoài. Chúng cũng trực tiếp vận hành và sử dụng kiến ​​trúc bên trong của vi điều khiển, chẳng hạn như xử lý ngắt, bộ định thời, giao tiếp nối tiếp và các tính năng có sẵn khác.


Lập trình hệ thống nhúng

Như chúng ta đã thảo luận trước đó, việc thiết kế một hệ thống nhúng có thể được thực hiện bằng Phần cứng & Phần mềm. Ví dụ, trong một hệ thống nhúng đơn giản, bộ xử lý là mô-đun chính hoạt động giống như trái tim của hệ thống. Ở đây một bộ xử lý không là gì ngoài bộ vi xử lý, DSP, vi điều khiển, CPLD & FPGA. Tất cả các bộ xử lý này đều có thể lập trình được để nó xác định hoạt động của thiết bị.

Chương trình hệ thống nhúng cho phép phần cứng kiểm tra đầu vào và điều khiển đầu ra cho phù hợp. Trong quy trình này, chương trình nhúng có thể phải kiểm soát trực tiếp kiến ​​trúc bên trong của bộ xử lý như Bộ định thời, Xử lý ngắt, Cổng I / O, giao diện truyền thông nối tiếp, v.v.

Vì vậy lập trình hệ thống nhúng rất quan trọng đối với bộ vi xử lý. Có nhiều ngôn ngữ lập trình khác nhau dành cho hệ thống nhúng như C, C ++, hợp ngữ, JAVA, JAVA script, visual basic, ... Vì vậy, ngôn ngữ lập trình này đóng vai trò quan trọng trong việc tạo ra một hệ thống nhúng nhưng việc lựa chọn ngôn ngữ là rất cần thiết.

Các bước để xây dựng một chương trình C nhúng

Có các bước khác nhau liên quan đến việc thiết kế một chương trình c nhúng như sau.

  • Bình luận
  • Chỉ thị của Bộ xử lý
  • Cấu hình của cổng
  • Biến toàn cục
  • Chức năng cốt lõi / Chức năng chính
  • Khai báo biến
  • Logic của chương trình

Bình luận

Trong ngôn ngữ lập trình, chú thích là rất cần thiết để mô tả chức năng của chương trình. Mã của các chú thích là không thể thực thi nhưng được sử dụng để cung cấp tài liệu chương trình. Để hiểu chức năng của chương trình, đây sẽ là một phương pháp đơn giản để hiểu chức năng của chương trình. Trong C nhúng, nhận xét có sẵn trong hai loại là nhận xét dòng đơn và dòng chính.

Trong một ngôn ngữ lập trình C nhúng, chúng ta có thể đặt các chú thích trong mã của mình để giúp người đọc hiểu mã một cách dễ dàng.

C = a + b / * thêm hai biến có giá trị được lưu trữ trong một biến khác C * /

Nhận xét dòng đơn

Nói chung, đối với các ngôn ngữ lập trình, chú thích một dòng rất hữu ích để làm rõ một phần của chương trình. Những nhận xét này bắt đầu bằng dấu gạch chéo kép (//) và nó có thể nằm ở bất kỳ đâu trong ngôn ngữ lập trình. Bằng cách sử dụng này, toàn bộ dòng có thể được bỏ qua trong một chương trình.

Nhận xét nhiều dòng

Nhận xét nhiều dòng bắt đầu bằng một dấu gạch chéo (/) và dấu hoa thị (/ *) trong ngôn ngữ lập trình giải thích một khối mã. Các loại chú thích này có thể được sắp xếp ở bất kỳ đâu trong ngôn ngữ lập trình và chủ yếu được sử dụng để bỏ qua toàn bộ khối mã trong một chương trình.

Chỉ thị của Bộ xử lý

Các dòng bao gồm trong mã chương trình được gọi là chỉ thị tiền xử lý có thể được theo sau thông qua ký hiệu băm (#). Các dòng này là các chỉ thị tiền xử lý nhưng không phải là các câu lệnh được lập trình.
Mã có thể được kiểm tra thông qua bộ xử lý trước khi quá trình biên dịch mã thực bắt đầu & giải quyết các chỉ thị này trước khi tạo mã thông qua các câu lệnh thông thường. Có một số chỉ thị tiền xử lý đặc biệt có sẵn mặc dù hai chỉ thị cực kỳ hữu ích trong ngôn ngữ lập trình

như sau.

#include
#include
Sbit LED = P2 ^ 3
Chủ yếu()
{
LED = 0x0ff
Sự chậm trễ()
LED = 0x00
}
#định nghĩa
#include
#define LED P0
Chủ yếu()
{
LED = 0x0ff
Sự chậm trễ()
LED = 0x00
}

Trong chương trình trên, chỉ thị #include thường được sử dụng để bao gồm các thư viện chuẩn như study và. h được sử dụng để cho phép các chức năng I / O sử dụng thư viện của ‘C’. Chỉ thị #define thường được sử dụng để mô tả chuỗi các biến & phân bổ các giá trị bằng cách thực hiện quy trình trong một lệnh cụ thể như macro.

Cấu hình của cổng

Bộ vi điều khiển bao gồm một số cổng mà mỗi cổng có các chân khác nhau. Các chân này có thể được sử dụng để điều khiển các thiết bị giao tiếp. Việc khai báo các chân này có thể được thực hiện trong một chương trình với sự trợ giúp của các từ khóa. Các từ khóa trong chương trình c nhúng là tiêu chuẩn cũng như được xác định trước như bit, sbit, SFR được sử dụng để chỉ ra các bit & chân đơn trong một chương trình.

Có một số từ được dành riêng để làm các công việc cụ thể. Những từ này được gọi là từ khóa. Chúng là tiêu chuẩn và được xác định trước trong Embedded C. Từ khóa luôn được viết bằng chữ thường. Các từ khóa này phải được xác định trước khi viết chương trình chính. Các chức năng chính của từ khóa bao gồm những điều sau đây.

#include
Sbit a = P 2 ^ 2
SFR 0x00 = PoRT0
Bit C
chủ yếu()
{
…………… ..
…………… ..
}

sbit

Đây là một loại kiểu dữ liệu, được sử dụng để truy cập một bit trong thanh ghi SFR.

Cú pháp cho kiểu dữ liệu này là: tên biến sbit = bit SFR

Ví dụ: sbit a = P2 ^ 1

Nếu chúng ta gán p2.1 là biến ‘a’, thì chúng ta có thể sử dụng ‘a’ thay vì p2.1 ở bất kỳ đâu trong chương trình, điều này làm giảm độ phức tạp của chương trình.

Bit

Kiểu dữ liệu này chủ yếu được sử dụng để cho phép bộ nhớ định địa chỉ bit của bộ nhớ truy cập ngẫu nhiên như 20h đến 2fh.

Cú pháp của kiểu dữ liệu này là: tên của biến bit

Ví dụ: bit c

Nó là một thiết lập chuỗi bit trong một vùng dữ liệu nhỏ chủ yếu được sử dụng với sự trợ giúp của một chương trình để ghi nhớ một cái gì đó.

SFR

Kiểu dữ liệu này được sử dụng để lấy các cổng ngoại vi của thanh ghi SFR thông qua một tên bổ sung. Vì vậy, việc khai báo tất cả các thanh ghi SFR có thể được thực hiện bằng chữ in hoa.

Cú pháp của kiểu dữ liệu này là: Tên biến SFR = Địa chỉ SFR cho thanh ghi SFR

Ví dụ: cổng SFR0 = 0 × 80

Nếu chúng ta phân bổ 0 × 80 như ‘port0’, sau đó chúng ta có thể sử dụng 0 × 80 thay cho port0 ở bất kỳ đâu trong ngôn ngữ lập trình để giảm độ khó của chương trình.

Đăng ký SFR

SFR là viết tắt của Thanh ghi chức năng đặc biệt. Trong vi điều khiển 8051, nó bao gồm bộ nhớ RAM với 256 byte, được chia thành hai phần tử chính: phần tử đầu tiên 128 byte chủ yếu được sử dụng để lưu trữ dữ liệu trong khi phần tử khác 128 byte chủ yếu được sử dụng cho các thanh ghi SFR. Tất cả các thiết bị ngoại vi như bộ định thời, bộ đếm và cổng I / O được lưu trữ trong thanh ghi SFR & mọi phần tử bao gồm một địa chỉ duy nhất.

Biến toàn cục

Khi biến được khai báo trước hàm key được gọi là biến toàn cục. Biến này có thể được phép trên bất kỳ hàm nào trong chương trình. Tuổi thọ của biến toàn cục chủ yếu phụ thuộc vào chương trình cho đến khi nó kết thúc.

#include
Int không dấu a, c = 10
Chủ yếu()
{
……………
………… ..
}

Chức năng cốt lõi / Chức năng chính

Chức năng chính là một phần trung tâm trong khi thực hiện bất kỳ chương trình nào và nó bắt đầu với chức năng chính một cách đơn giản. Mỗi chương trình chỉ sử dụng một chức năng chính vì nếu chương trình bao gồm một chức năng chính ở trên, thì tiếp theo trình biên dịch sẽ bị nhầm lẫn khi bắt đầu thực hiện chương trình.

#include
Chủ yếu()
{
……………
………… ..
}

Khai báo biến

Tên như biến được sử dụng để lưu trữ các giá trị nhưng biến này phải được khai báo đầu tiên trước khi sử dụng trong chương trình. Khai báo biến cho biết tên của nó cũng như kiểu dữ liệu. Ở đây, kiểu dữ liệu không là gì khác ngoài việc biểu diễn dữ liệu lưu trữ. Trong lập trình C nhúng, nó sử dụng bốn kiểu dữ liệu cơ bản như số nguyên, số nổi, ký tự để lưu trữ dữ liệu trong bộ nhớ. Kích thước kiểu dữ liệu, cũng như phạm vi, có thể được xác định tùy thuộc vào trình biên dịch.

Kiểu dữ liệu đề cập đến một hệ thống mở rộng để khai báo các biến thuộc các kiểu khác nhau như số nguyên, ký tự, số float, v.v. Phần mềm C nhúng sử dụng bốn kiểu dữ liệu được sử dụng để lưu trữ dữ liệu trong bộ nhớ.

‘Char’ được sử dụng để lưu trữ bất kỳ ký tự đơn lẻ nào ‘int’ được sử dụng để lưu trữ giá trị số nguyên và ‘float’ được sử dụng để lưu trữ bất kỳ giá trị dấu phẩy động chính xác nào. Kích thước và phạm vi của các kiểu dữ liệu khác nhau trên máy 32 bit được cho trong bảng sau. Kích thước và phạm vi có thể khác nhau trên các máy có kích thước từ khác nhau.

  • Kích thước kiểu dữ liệu char / đã ký là 1 byte và phạm vi của nó từ -128 đến +128
  • Kích thước kiểu dữ liệu char unsigned là 1 byte và phạm vi của nó từ 0 đến 255
  • Kích thước kiểu dữ liệu int / đã ký int là 2 byte và phạm vi của nó từ -32768 đến 32767
  • Kích thước kiểu dữ liệu int không dấu là 2 byte và phạm vi của nó từ 0 đến 65535

Chủ yếu()
{
Int a, b, c không dấu
}

Cấu trúc của một chương trình C nhúng được hiển thị bên dưới.

  • bình luận
  • Các chỉ thị tiền xử lý
  • biến toàn cục
  • chức năng chính

{

  • biến cục bộ
  • các câu lệnh
  • ………… ..
  • ………… ..

}

  • vui vẻ (1)

{

  • biến cục bộ
  • các câu lệnh
  • ………… ..
  • ………… ..

}

Logic của chương trình

Logic của chương trình là một kế hoạch của làn đường xuất hiện trong lý thuyết đằng sau & kết quả đầu ra có thể dự đoán được của các hành động của chương trình. Nó giải thích tuyên bố khác về lý thuyết liên quan đến lý do tại sao chương trình nhúng sẽ hoạt động và cho thấy các tác động được công nhận của các hành động khác với tài nguyên.

Chủ yếu
{
LED = 0x0f
trì hoãn (100)
LED = 0x00
trì hoãn (100)
}

Các yếu tố chính của chương trình nhúng C

Các yếu tố chính cần được xem xét khi chọn ngôn ngữ lập trình để phát triển một hệ thống nhúng bao gồm những điều sau đây.

Quy mô chương trình

Mọi ngôn ngữ lập trình chiếm một số bộ nhớ trong đó bộ xử lý nhúng như vi điều khiển bao gồm một lượng cực kỳ ít bộ nhớ truy cập ngẫu nhiên.

Tốc độ của chương trình

Ngôn ngữ lập trình phải rất nhanh, vì vậy nên chạy càng nhanh càng tốt. Không nên giảm tốc độ của phần cứng nhúng vì phần mềm chạy chậm.

Tính di động

Đối với các bộ xử lý nhúng khác nhau, việc biên dịch các chương trình tương tự có thể được thực hiện.

  • Thực hiện đơn giản
  • Bảo trì đơn giản
  • Dễ đọc

Sự khác biệt giữa Chương trình C và Chương trình C nhúng

Sự khác biệt giữa lập trình C và C nhúng thực sự không nhiều ngoài môi trường hoạt động và một số phần mở rộng. Các ngôn ngữ lập trình này là Tiêu chuẩn ISO và cũng có cú pháp, chức năng, kiểu dữ liệu gần giống nhau, v.v. Sự khác biệt chính giữa lập trình C và lập trình c nhúng bao gồm những điều sau.

Ngôn ngữ C

Ngôn ngữ C được nhúng

Nói chung, ngôn ngữ này được sử dụng để phát triển các ứng dụng dựa trên máy tính để bàn

Ngôn ngữ C nhúng được sử dụng để phát triển các ứng dụng dựa trên vi điều khiển.
Ngôn ngữ C không phải là một phần mở rộng cho bất kỳ ngôn ngữ lập trình nào, mà là một ngôn ngữ lập trình có mục đích chungEmbedded C là một phần mở rộng của ngôn ngữ lập trình C bao gồm các tính năng khác nhau như định địa chỉ I / O, số học điểm cố định, định địa chỉ nhiều bộ nhớ, v.v.

Nó xử lý sự phát triển bản địa trong tự nhiênNó xử lý sự phát triển chéo trong tự nhiên
Nó độc lập với kiến ​​trúc phần cứngNó phụ thuộc vào kiến ​​trúc phần cứng của bộ vi điều khiển và các thiết bị khác
Các trình biên dịch của ngôn ngữ C phụ thuộc vào hệ điều hànhCác trình biên dịch C nhúng độc lập với hệ điều hành
Trong ngôn ngữ C, các trình biên dịch tiêu chuẩn được sử dụng để thực thi một chương trìnhTrong ngôn ngữ C nhúng, các trình biên dịch cụ thể được sử dụng.
Các trình biên dịch phổ biến được sử dụng trong ngôn ngữ này là GCC, Borland turbo C, Intel C ++, v.v.Các trình biên dịch phổ biến được sử dụng bằng ngôn ngữ này là Keil, BiPOM Electronics & green hill
Định dạng của ngôn ngữ C là định dạng tự doĐịnh dạng của nó chủ yếu phụ thuộc vào loại vi xử lý được sử dụng.
Việc tối ưu hóa ngôn ngữ này là bình thườngTối ưu hóa ngôn ngữ này là một cấp độ cao
Nó rất dễ sửa đổi và đọcNó không phải là dễ dàng để sửa đổi và đọc
Sửa lỗi dễ dàngViệc sửa lỗi của ngôn ngữ này rất phức tạp

Ví dụ về chương trình nhúng C

Sau đây là một số chương trình nhúng C đơn giản được sử dụng cho dự án dựa trên vi điều khiển .

Ví dụ 1

Ví dụ 1

Ví dụ-2

Ví dụ-2

Ví dụ-3

Ví dụ-3

Ví dụ-4

Ví dụ-4

Ưu điểm

Các ưu điểm của chương trình c nhúng g bao gồm những điều sau đây.

  • Nó rất đơn giản để hiểu.
  • Nó thực hiện một tác vụ tương tự liên tục nên không có yêu cầu thay đổi phần cứng như bộ nhớ bổ sung nếu không thì không gian lưu trữ.
  • Nó thực hiện đơn giản một tác vụ cùng một lúc
  • Chi phí của phần cứng được sử dụng trong c nhúng thường rất thấp.
  • Các ứng dụng của nhúng là cực kỳ thích hợp trong các ngành công nghiệp.
  • Mất ít thời gian hơn để phát triển một chương trình ứng dụng.
  • Nó làm giảm độ phức tạp của chương trình.
  • Nó rất dễ dàng để xác minh và hiểu.
  • Nó có thể di động từ bộ điều khiển này sang bộ điều khiển khác.

Nhược điểm

Các nhược điểm của lập trình c nhúng bao gồm những điều sau đây.

  • Tại một thời điểm, nó chỉ thực thi một tác vụ nhưng không thể thực thi nhiều tác vụ
  • Nếu chúng tôi thay đổi chương trình thì cũng cần thay đổi phần cứng
  • Nó chỉ hỗ trợ hệ thống phần cứng.
  • Nó có vấn đề về khả năng mở rộng
  • Nó có một hạn chế như bộ nhớ hạn chế, nếu không thì khả năng tương thích của máy tính.

Các ứng dụng của chương trình nhúng C

Các ứng dụng của lập trình c nhúng bao gồm những điều sau đây.

  • Lập trình C nhúng được sử dụng trong các ngành công nghiệp cho các mục đích khác nhau
  • Ngôn ngữ lập trình được sử dụng trong các ứng dụng là kiểm tra tốc độ trên đường cao tốc, điều khiển đèn giao thông, điều khiển đèn đường, theo dõi phương tiện, trí tuệ nhân tạo, tự động hóa gia đình và điều khiển cường độ tự động.

Chúng tôi hy vọng rằng chúng tôi đã thành công trong việc cung cấp một cách dễ dàng và dễ tiếp cận cho những người mới bắt đầu Lập trình C nhúng . Hiểu biết về lập trình C nhúng là điều kiện tiên quyết cần thiết nhất để thiết kế các dự án dựa trên nhúng. Ngoài ra, việc hiểu rõ hơn và có kiến ​​thức đúng đắn về lập trình C nhúng sẽ giúp ích rất nhiều cho sinh viên trong việc lựa chọn một nghề nghiệp bổ ích.

Chúng tôi khuyến khích và hoan nghênh các truy vấn, đề xuất và nhận xét từ độc giả của chúng tôi. Do đó, bạn có thể gửi thắc mắc và phản hồi của mình về bài viết này trong phần nhận xét bên dưới. Theo liên kết dưới đây cho Các dự án không hàn