Bài giảng "Lập trình hệ thống nhúng: chương 3 - Bùi Quốc Bảo" trình bày cấu trúc của một chương trình. Ưu ñiểm của việc cấu trúc chương trình. Các tệp tin tiêu đề (Header file) và tiệp tin tiêu đề mô đun (Module header file). . | L P TRÌNH H TH NG NHÚNG BÙI QU C B O L p trình có c u trúc M t chương trình thư ng ñư c chia làm nhi u module M i module g m 1 header file (.h) và source file (.c) Program BM K Thu t ði n T - ðH Bách Khoa 2 1 Ưu ñi m c a vi c c u trúc chương trình Các module nh có th phát tri n song song. Vi c debug, s a l i t ng module thì d dàng hơn. Quá trình biên d ch l i chương trình di n ra nhanh hơn. Có kh năng thay ñ i ñ ch y trên nhi u n n t ng ph n c ng khác nhau (portable) Vì sao? BM K Thu t ði n T - ðH Bách Khoa 3 Header file System interface header file System common header file Module header file BM K Thu t ði n T - ðH Bách Khoa 4 2 Module header file Module header file ch a các mô t hàm, các ñ nh nghĩa macro, các ñ nh nghĩa ki u d li u (typedef). Module header thư ng không ch a các ñ nh nghĩa hàm, các bi n (ñòi h i b nh ). Chú ý: Thông thư ng, m t header file không ñòi h i b nh chương trình hay d li u. BM K Thu t ði n T - ðH Bách Khoa 5 Header file #ifndef filename_h #define filename_h #include “include file” Common context items: #define's, enum's Functional area 1: Heading comment #define's, enum's for context Data description 1: Heading comment enum's for context typedef or struct to declare data item #define's for constant values Data description 2: . External function declarations Functional area 2: . #endif /* filename_h */ BM K Thu t ði n T - ðH Bách Khoa 6 3 //***************************************************************************** // - Driver for the LED on 8051 experimental board // // Copyright (c) 2011 BAO BUI, HCMUT. All rights reserved. // Software License Agreement // // THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED // OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. // LMI SHALL NOT, IN ANY