Tải bản đầy đủ (.pdf) (61 trang)

KIỂM THỬ PHẦN mềm NHÚNG

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (861.38 KB, 61 trang )

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

Bùi Ngọc Hải

KIỂM THỬ PHẦN MỀM NHÚNG

KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Cơng nghệ thơng tin

HÀ NỘI - 2010

LUAN VAN CHAT LUONG download : add


ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

Bùi Ngọc Hải

KIỂM THỬ PHẦN MỀM NHÚNG

KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Cơng nghệ thơng tin

Cán bộ hướng dẫn: PGS.TS Nguyễn Ngọc Bình

HÀ NỘI - 2010

LUAN VAN CHAT LUONG download : add



Lời cảm ơn
Đầu tiên tơi xin bày tỏ lịng biết ơn chân thành và sâu sắc tới PGS.TS Nguyễn Ngọc
Bình, người thầy đã định hướng đề tài và tận tình hướng dẫn tơi hồn thành khóa luận
này.
Tơi xin gửi lời cảm ơn chân thành tới các thầy, cô giáo khoa Công nghệ thông tin,
trường Đại học Công Nghệ - Đại học Quốc Gia Hà Nội đã chỉ bảo, giúp đỡ tơi trong suốt
q trình học tập tại trường.
Tơi cũng xin được gửi lời cảm ơn chân thành tới bạn bè của tôi, những người đã
luôn cổ vũ, động viên, giúp đỡ tơi trong suốt q trình học tập và thực hiện khóa luận tốt
nghiệp.
Cuối cùng tơi xin gửi lời cảm ơn tới bố mẹ và tồn thể gia đình với lịng biết ơn và
tình u thương sâu sắc.
Hà Nội, tháng 5 năm 2010

Bùi Ngọc Hải

LUAN VAN CHAT LUONG download : add


Tóm tắt
Các hệ thống nhúng ngày nay rất phát triển với những ứng dụng rộng rãi trong nhiều
lĩnh vực công nghiệp và đời sống, đâu đâu ta cũng bắt gặp các ứng dụng của hệ thống
nhúng, từ những thiết bị nhỏ như điện thoại, máy nghe nhạc đến các hệ thống phức tạp
như ơ tơ, máy móc cơng nghiệp. Trong phát triển phần mềm nhúng, khâu kiểm thử có vai
trị quan trọng trong việc đảm bảo chất lượng và độ tin cậy của hệ thống. Các hệ thống
nhúng có kiến trúc phần cứng cũng như phần mềm rất đa dạng, trong đó có rất nhiều hệ
thống sử dụng vi điều khiển họ 8051 và phần mềm viết cho hệ thống này thường được
viết bằng ngơn ngữ C. Khóa luận này sẽ trình bày một số phương pháp kiểm thử chương
trình C cho vi điều khiển 8051.

Một cách rất phổ biến để kiểm thử phần mềm cho hệ thống nhúng nói chung và cho
hệ thống 8051 nói riêng, đó là chạy phần mềm trên chương trình giả lập phần cứng,
chương trình giả lập ở đây có thể là một vi điều khiển ảo, cũng có thể là chương trình mơ
phỏng trực quan cả một hệ thống mạch bao gồm vi điều khiển và các thiết bị khác. Một
cách khác để kiểm thử chương trình cho 8051 đó là sử dụng cơng cụ Unit Test – kiểm thử
mức đơn vị, Unit Test giúp ta kiểm thử và đảm bảo chất lượng từng đơn vị nhỏ nhất của
chương trình.

LUAN VAN CHAT LUONG download : add


Mục lục
Chương 1. Mở đầu .............................................................................................................. 1
1.1. Đặt vấn đề ................................................................................................................. 1
1.2. Phạm vi nghiên cứu ................................................................................................. 1
1.3. Cấu trúc của khóa luận ........................................................................................... 2
Chương 2. Hệ thống nhúng và phần mềm nhúng ........................................................... 3
2.1. Hệ thống nhúng ........................................................................................................ 3
2.2. Phần mềm nhúng ..................................................................................................... 5
Chương 3. Kiểm thử phần mềm và kiểm thử phần mềm nhúng .................................. 7
3.1 Kiểm thử phần mềm ................................................................................................. 7
3.1.1. Kiểm thử phần mềm là gì? ............................................................................... 7
3.1.2. Kiểm thử đơn vị (unit test): .............................................................................. 7
3.1.3. Integration Test – Kiểm thử tích hợp.............................................................. 8
3.1.4. System Test - Kiểm thử mức hệ thống ............................................................ 8
3.1.5. Acceptance Test - Kiểm thử chấp nhận sản phẩm......................................... 9
3.1.6. Regression Test - Kiểm thử hồi quy ................................................................ 9
3.2. Kiểm thử phần mềm nhúng .................................................................................. 10
3.2.1. Tổng quan về kiểm thử phần mềm nhúng .................................................... 10
3.2.2. Kiểm thử bằng phương pháp chạy phần mềm trên môi trường giả lập

phần cứng. .................................................................................................................. 10
3.2.3. Kiểm thử phần mềm nhúng bằng Unit Test. ................................................ 11
Chương 4. Lập trình nhúng cho vi điều khiển 8051 bằng ngôn ngữ C ....................... 12
4.1. Vi điều khiển 8051.................................................................................................. 12
4.2. Lập trình C cho 8051 với trình biên dịch SDCC ................................................ 13
4.2.1. Ngơn ngữ C và lập trình nhúng ..................................................................... 13
4.2.2. Lập trình C cho 8051 ...................................................................................... 14
4.2.3. Trình biên dịch SDCC .................................................................................... 15
4.2.4. IDE cho lập trình 8051 với SDCC ................................................................. 18
4.2.5. Ví dụ về lập trình C cho 8051 với SDCC và MIDE-51 ................................ 19
Chương 5. Kiểm thử chương trình cho 8051 bằng cơng cụ giả lập ............................. 21
5.1. Chương trình giả lập vi điều khiển “8051 series microcontroller simulator”. 21
5.1.1. 8051 series microcontroller simulator ........................................................... 21
5.1.2. Ví dụ kiểm thử chương trình cho 8051 trên chương trình giả lập 8051
series microcontroller simulator .............................................................................. 23

LUAN VAN CHAT LUONG download : add


5.1.3. Nhận xét ........................................................................................................... 28
5.2. Chương trình mơ phỏng hệ thống mạch điện tử Proteus .................................. 29
5.2.1. Giới thiệu Proteus ........................................................................................... 29
5.2.2. Ví dụ về kiểm thử chương trình nhấp nháy Led trên Proteus ................... 33
5.2.3. Nhận xét ........................................................................................................... 37
Chương 6. Kiểm thử chương trình cho 8051 bằng Unit Test, sử dụng công cụ
Embedded Unit ................................................................................................................. 38
6.1. Giới thiệu Embedded Unit .................................................................................... 38
6.2. Cải tiến để sử dụng Embedded Unit cho lập trình C cho 8051 ......................... 39
6.3. Ví dụ kiểm thử chương trình C cho 8051 với Embedded Unit .......................... 40
6.4. Nhận xét .................................................................................................................. 44

Chương 7. Kết luận .......................................................................................................... 45
Phụ lục ............................................................................................................................... 46
Phụ lục A: Kiến trúc vi điều khiển 8051 ..................................................................... 46
Phụ lục B: Hướng dẫn sử dụng Embedded Unit ....................................................... 52
Tài liệu tham khảo ............................................................................................................ 55

LUAN VAN CHAT LUONG download : add


Chương 1. Mở đầu
1.1. Đặt vấn đề
Hệ thống nhúng rất đa dạng và phong phú, tuy nhiên có rất ít người biết được tầm
quan trọng và sự hiện hữu của chúng trong thế giới quanh ta. Từ những hệ thống phức tạp
như hàng khơng vũ trụ, phịng thủ qn sự, máy móc tự động trong cơng nghiệp, đến
những phương tiện di chuyển thông thường như máy bay, xe điện, xe hơi, các trang thiết
bị y tế trong bệnh viện, cho tới những thiết bị truyền hình và điện thoại di động chúng ta
sử dụng hằng ngày, đâu đâu cũng có sự hiện diện của hệ thống nhúng.
Cùng với sự đa dạng của các hệ thống nhúng, lĩnh vực lập trình phần mềm nhúng
hiện nay rất phát triển. Trong phát triển phần mềm thì hoạt động kiểm thử có vai trị hết
sức quan trọng, mang tính sống cịn của sản phẩm, và với phần mềm nhúng cũng không
phải là ngoại lệ. Sự phát triển của các hệ thống nhúng kéo theo những yêu cầu phát triển
của hoạt động kiểm thử phần mềm nhúng. Có những hệ thống nhúng địi hỏi độ tin cậy rất
cao, việc kiểm thử cho các hệ thống này yêu cầu cẩn thận hơn so với kiểm thử phần mềm
thông thường.
Tuy nhiên hiện nay, hệ thống nhúng ở Việt Nam phát triển khá khiêm tốn so với thế
giới, và lĩnh vực kiểm thử cho phần mềm nhúng lại càng khiêm tốn hơn. Có rất ít các tài
liệu, các bài báo nói về hoạt động kiểm thử phần mềm nhúng cũng như khơng có nhiều
các cơng cụ hỗ trợ cho việc kiểm thử này. Việc nghiên cứu và tìm hiểu các phương pháp,
các kĩ thuật kiểm thử cho phần mềm nhúng là một vấn đề cần thiết hiện nay, nó sẽ góp
phần thúc đẩy sự phát triển của lĩnh vực hệ thống nhúng, một lĩnh vực giàu tiềm năng

nhưng mới chỉ bước đầu phát triển tại Việt Nam.

1.2. Phạm vi nghiên cứu
Trong phạm vi của khóa luận này, tơi nghiên cứu và trình bày về một loại hệ thống
nhúng cụ thể - đó là các hệ thống sử dụng vi điều khiển 8051 và một số phương pháp
kiểm thử chương trình cho các hệ thống này. Hệ thống sử dụng 8051 tơi trình bày ở đây
chỉ là các hệ thống đơn giản, không sử dụng hệ điều hành nhúng, ví dụ như hệ thống đèn
Led nối với vi điều khiển, phần mềm viết cho hệ thống này là chương trình điều khiển
Led.Các chương trình được lập trình bằng ngơn ngữ C, sử dụng công cụ biên dịch chạy
trên môi trường Windows XP 32 bit.

1

LUAN VAN CHAT LUONG download : add


Các phương pháp kiểm thử mà tôi giới thiệu trong khóa luận này là phương pháp
kiểm thử chức năng sử dụng chương trình mơ phỏng phần cứng và phương pháp sử dụng
Unit Test ( kiểm thử đơn vị ), hai phương pháp này cũng đều được thực hiện bởi các công
cụ kiểm thử chạy trên môi trường Windows XP 32 bit.
Với phương pháp kiểm thử sử dụng Unit Test, tôi giới thiệu một Unit Test
Framework cho chương trình C nhúng là Embedded Unit, và tơi có đề xuất một phương
pháp để kiểm thử chương trình cho vi điều khiển 8051 sử dụng cơng cụ Embedded Unit
với một trình biên khơng hỗ trợ cho 8051 là GCC. Đó là việc tạo một file thư viện
“8051.h” chứa các biến của vi điều khiển, file này chỉ dùng khi test, nó giúp cho GCC
khơng báo lỗi vì thiếu thư viện khi biên dịch các phép kiểm thử.

1.3. Cấu trúc của khóa luận
Phần cịn lại của khóa luận có cấu trúc như sau:
- Chương 2 : giới thiệu sơ lược về hệ thống nhúng và phần mềm nhúng.

- Chương 3 : trình bày về lí thuyết kiểm thử phần mềm và kiểm thử phần mềm
nhúng.
- Chương 4 : giới thiệu về vi điều khiển 8051 và lập trình C cho hệ thống 8051 trên
Windows sử dụng trình biên dịch SDCC.
- Chương 5 : phương pháp kiểm thử phần mềm nhúng sử dụng công cụ giả lập phần
cứng, giới thiệu công cụ giả lập vi điều khiển 8051 và phần mềm mô phỏng hệ thống
mạch Proteus.
- Chương 6 : phương pháp kiểm thử đơn vi ( Unit Test) cho phần mềm nhúng sử
dụng Embedded Unit, giới thiệu về Embedded Unit và cải tiến để sử dụng nó cho chương
trình 8051 trên Windows.
- Chương 7 : rút ra kết luận từ các vấn đề đã nghiên cứu.

2

LUAN VAN CHAT LUONG download : add


Chương 2. Hệ thống nhúng và phần mềm nhúng
2.1. Hệ thống nhúng
Hệ thống nhúng (Embedded system) là một thuật ngữ để chỉ một hệ thống có khả
năng tự trị được nhúng vào trong một môi trường hay một hệ thống mẹ. Đó là các hệ
thống tích hợp cả phần cứng và phần phềm phục vụ các bài toán chuyên dụng trong nhiều
lĩnh vực cơng nghiệp, tự động hố điều khiển, quan trắc và truyền tin. Đặc điểm của các
hệ thống nhúng là hoạt động ổn định và có tính năng tự động hoá cao.[5]
Hệ thống nhúng thường được thiết kế để thực hiện một chức năng chuyên dụng,
thường nó có khả năng tự hành và được thiết kế tích hợp vào một hệ thống lớn hơn để
thực hiện một chức năng chun biệt nào đó. Khác với các máy tính đa chức năng, chẳng
hạn như máy tính cá nhân, một hệ thống nhúng chỉ thực hiện một hoặc một vài chức năng
nhất định, thường đi kèm với những yêu cầu cụ thể và bao gồm một số thiết bị máy móc
và phần cứng chun dụng mà ta khơng tìm thấy trong một máy tính đa năng nói chung

[5].
Vì hệ thống chỉ được xây dựng cho một số nhiệm vụ nhất định nên các nhà thiết kế
có thể tối ưu hóa nó nhằm giảm thiểu kích thước và chi phí sản xuất. Các hệ thống nhúng
thường được sản xuất hàng loạt với số lượng lớn. Hệ thống nhúng rất đa dạng, phong phú
về chủng loại. Đó có thể là những thiết bị cầm tay nhỏ gọn như đồng hồ kĩ thuật số và
máy chơi nhạc MP3, hoặc những sản phẩm lớn như đèn giao thơng, bộ kiểm sốt trong
nhà máy hoặc hệ thống kiểm soát các máy năng lượng hạt nhân. Xét về độ phức tạp, hệ
thống nhúng có thể rất đơn giản với một vi điều khiển hoặc rất phức tạp với nhiều đơn vị,
các thiết bị ngoại vi và mạng lưới được nằm gọn trong một lớp vỏ máy lớn. Các thiết bị
PDA hoặc máy tính cầm tay cũng có một số đặc điểm tương tự với hệ thống nhúng như
các hệ điều hành hoặc vi xử lý điều khiển chúng nhưng các thiết bị này không phải là hệ
thống nhúng thật sự bởi chúng là các thiết bị đa năng, cho phép sử dụng nhiều ứng dụng
và kết nối đến nhiều thiết bị ngoại vi [13].
Hệ thống nhúng bao gồm cả thiết bị phần cứng và phần mềm, hầu hết đều phải thỏa
mãn yêu cầu hoạt động theo thời gian thực (real-time). Tùy theo tính chất và yêu cầu,
mức độ đáp ứng của hệ thống có thể phải là rất nhanh (ví dụ như hệ thống thắng trong xe

3

LUAN VAN CHAT LUONG download : add


hơi hoặc điều khiển thiết bị trong nhà máy), hoặc có thể chấp nhận một mức độ chậm trễ
tương đối (ví dụ như điện thoại di động, máy lạnh, ti-vi) [13].
Để có thể dễ hình dung, ta xem ví dụ sau đây: một chiếc xe hơi trung bình có
khoảng 70-80 chip vi xử lý (micro controller unit), mỗi bộ vi xử lý đảm nhiệm một nhiệm
vụ, chẳng hạn như đóng mở cửa, điều khiển đèn tín hiệu, đo nhiệt độ trong/ngoài xe, hiển
thị giao diện người dùng , điều khiển thắng (nếu dùng hệ thống thắng điện)…
Mỗi bộ phận như thế là một hệ thống nhúng, tất cả được thiết kế tích hợp vào một hệ
thống chung lớn hơn, chính là chiếc xe hơi. Một ví dụ khác gần gũi hơn với cuộc sống

hằng ngày, đó là những chiếc điện thoại di động. Các chức năng như điều khiển màn hình
hiển thị, máy nghe nhạc và radio, bộ cảm ứng chụp hình, kết nối với máy tính và thiết bị
ngoại vi, hoặc cao cấp hơn là kết nối với hệ thống định vị toàn cầu (GPS), tất cả đều là
những hệ thống nhúng được tích hợp chung vào chiếc điện thoại.
Các hệ thống nhúng có thể khơng có giao diện (đối với những hệ thống đơn nhiệm)
hoặc có đầy đủ giao diện giao tiếp với người dùng tương tự như các hệ điều hành trong
các thiết bị để bàn. Đối với các hệ thống đơn giản, thiết bị nhúng sử dụng nút bấm, đèn
LED và hiển thị chữ cỡ nhỏ hoặc chỉ hiển thị số, thường đi kèm với một hệ thống menu
đơn giản.
Còn trong một hệ thống phức tạp hơn, một màn hình đồ họa, cảm ứng hoặc có các
nút bấm ở lề màn hình cho phép thực hiện các thao tác phức tạp mà tối thiểu hóa được
khoảng không gian cần sử dụng; ý nghĩa của các nút bấm có thể thay đổi theo màn hình
và các lựa chọn. Các hệ thống nhúng thường có một màn hình với một nút bấm dạng cần
điểu khiển (joystick button). Sự phát triển mạnh mẽ của mạng toàn cầu đã mang đến cho
những nhà thiết kế hệ nhúng một lựa chọn mới là sử dụng một giao diện web thông qua
việc kết nối mạng. Điều này có thể giúp tránh được chi phí cho những màn hình phức tạp
nhưng đồng thời vẫn cung cấp khả năng hiển thị và nhập liệu phức tạp khi cần đến, thơng
qua một máy tính khác. Điều này là hết sức hữu dụng đối với các thiết bị điều khiển từ xa,
cài đặt vĩnh viễn. Ví dụ, các router là các thiết bị đã ứng dụng tiện ích này.
Độ tin cậy của hệ thống nhúng
Các hệ thống nhúng thường nằm trong các cỗ máy được kỳ vọng là sẽ chạy hàng
năm trời liên tục mà không bị lỗi hoặc có thể khơi phục hệ thống khi gặp lỗi. Vì thế, các

4

LUAN VAN CHAT LUONG download : add


phần mềm hệ thống nhúng được phát triển và kiểm thử một cách cẩn thận hơn là phần
mềm cho máy tính cá nhân.

Ngồi ra, các thiết bị rời khơng đáng tin cậy như ổ đĩa, công tắc hoặc nút bấm
thường bị hạn chế sử dụng. Việc khôi phục hệ thống khi gặp lỗi có thể được thực hiện
bằng cách sử dụng các kỹ thuật như watchdog timer – nếu phần mềm khơng đều đặn nhận
được các tín hiệu watchdog định kì thì hệ thống sẽ bị khởi động lại [5].
Một số vấn đề cụ thể về độ tin cậy như:
- Hệ thống không thể ngừng để sửa chữa một cách an tồn, ví dụ như ở các hệ thống
khơng gian, hệ thống dây cáp dưới đáy biển, các đèn hiệu dẫn đường,… Giải pháp đưa ra
là chuyển sang sử dụng các hệ thống con dự trữ hoặc các phần mềm cung cấp một phần
chức năng.
- Hệ thống phải được chạy liên tục vì tính an tồn, ví dụ như các thiết bị dẫn đường
máy bay, thiết bị kiểm soát độ an tồn trong các nhà máy hóa chất,… Giải pháp đưa ra là
lựa chọn backup hệ thống.
- Nếu hệ thống ngừng hoạt động sẽ gây tổn thất rất nhiều tiền của ví dụ như các
dịch vụ bn bán tự động, hệ thống chuyển tiền, hệ thống kiểm soát trong các nhà máy
…[5]

2.2. Phần mềm nhúng
Là phần mềm trong các hệ thống nhúng. Phần mềm nhúng có thể là những chương
trình đơn giản chạy trực tiếp trên nền phần cứng hoặc là những chương trình, ứng dụng
chạy trên nền một hệ điều hành nhúng. Phần mềm nhúng thường chạy với số tài ngun
phần cứng hạn chế: khơng có bàn phím, màn hình hoặc có nhưng với kích thước nhỏ, bộ
nhớ hạn chế.[5]
Phần mềm nhúng thường được lập trình trên máy tính cá nhân của lập trình viên,
được biên dịch với một trình biên dịch và một mơi trường phát triển, máy tính dùng để lập
trình được gọi là host. Sau đó chương trình được nạp lên thiết bị và chạy, thiết bị mà
chương trình được nạp lên gọi la target.Với mỗi target khác nhau sẽ có cấu trúc vi điểu
khiển khác nhau, và sử dụng hệ điều hành nhúng khác nhau, do vậy tùy từng loại sẽ có
các cách thức lập trình tương ứng .

5


LUAN VAN CHAT LUONG download : add


C là một trong những ngơn ngữ lập trình nhúng phổ biến nhất hiện nay. C có một số
ưu điểm nổi bật tiêu biểu như khá nhỏ và dễ dàng cho việc học, các chương trình biên
dịch C thường khá sẵn cho hầu hết các bộ xử lý đang sử dụng hiện nay, và có rất nhiều
người đã biết và làm chủ được ngôn ngữ này.

6

LUAN VAN CHAT LUONG download : add


Chương 3. Kiểm thử phần mềm và kiểm thử phần mềm
nhúng
3.1 Kiểm thử phần mềm
3.1.1. Kiểm thử phần mềm là gì?
Kiểm thử phần mềm là hoạt động khảo sát sản phần mềm nhằm cung cấp cho người
có lợi ích liên quan đến phần mềm những thông tin về chất lượng của sản phẩm phần
mềm ấy. Mục đích của kiểm thử phần mềm là tìm ra các lỗi hay khiếm khuyết phần mềm
nhằm đảm bảo hiệu quả hoạt động tối ưu của phần mềm trong nhiều lĩnh vực khác
nhau.[6]
Theo nghĩa thông thường nhất, kiểm thử phần mềm bao gồm việc chạy thử phần
mềm hay một chức năng của phần mềm, xem nó chạy đúng như mong muốn hay khơng.
Việc kiểm thử này có thể thực hiện từng chặng, sau khi mỗi chức năng hoặc mô đun được
phát triển, hoặc thực hiện sau cùng, khi phần mềm đã được phát triển hoàn tất.
Các mức kiểm thử phần mềm thông thường là [6] :
- Unit Test – Kiểm thử mức đơn vị
- Integration Test – Kiểm thử tích hợp

- System Test - Kiểm thử mức hệ thống
- Acceptance Test - Kiểm thử chấp nhận sản phẩm
- Regression Test - Kiểm thử hồi quy
3.1.2. Kiểm thử đơn vị (unit test):
Một Unit là một thành phần phần mềm nhỏ nhất mà ta có thể kiểm thử được. Theo
định nghĩa này, các hàm (Function), thủ tục (Procedure), lớp (Class), hoặc các phương
thức (Method) đều có thể được xem là Unit.
Vì Unit được chọn để kiểm thử thường có kích thước nhỏ và chức năng hoạt động
đơn giản, chúng ta khơng khó khăn gì trong việc tổ chức, kiểm thử, ghi nhận và phân tích
kết quả kiểm thử. Nếu phát hiện lỗi, việc xác định nguyên nhân và khắc phục cũng tương
đối dễ dàng vì chỉ khoanh vùng trong một Unit đang kiểm thử. Một nguyên lý đúc kết từ

7

LUAN VAN CHAT LUONG download : add


thực tiễn: thời gian tốn cho Unit Test sẽ được đền bù bằng việc tiết kiệm rất nhiều thời
gian và chi phí cho việc kiểm thử và sửa lỗi ở các mức kiểm thử sau đó.
Unit Test thường do lập trình viên thực hiện. Cơng đoạn này cần được thực hiện
càng sớm càng tốt trong giai đoạn viết code và xuyên suốt chu kỳ phát triển phần mềm.
Thông thường, Unit Test địi hỏi kiểm thử viên (tester)có kiến thức về thiết kế và code
của chương trình. Mục đích của Unit Test là bảo đảm thông tin được xử lý và xuất ra
(khỏi Unit) là chính xác, trong mối tương quan với dữ liệu nhập và chức năng của Unit.
Điều này thường đòi hỏi tất cả các nhánh bên trong Unit đều phải được kiểm tra để phát
hiện nhánh phát sinh lỗi. Một nhánh thường là một chuỗi các lệnh được thực thi trong một
Unit, ví dụ: chuỗi các lệnh sau điều kiện If và nằm giữa then … else là một nhánh. Thực
tế việc chọn lựa các nhánh để đơn giản hóa việc kiểm thử và qt hết Unit địi hỏi phải có
kỹ thuật, đơi khi phải dùng thuật tốn để chọn lựa.
Cũng như các mức kiểm thử khác, Unit Test cũng địi hỏi phải chuẩn bị trước các

tình huống (test case) hoặc kịch bản (script), trong đó chỉ định rõ dữ liệu vào, các bước
thực hiện và dữ liệu mong chờ sẽ xuất ra. Các test case và kịch bản này nên được giữ lại
để tái sử dụng.
Unit Test thường sử dụng các Unit Test Framework, đó là các khung chương trình
được viết sẵn để hộ trợ cho việc test các mô đun, các đơn vị phần mềm.
3.1.3. Integration Test – Kiểm thử tích hợp
Kiểm thử tích hợp kết hợp các thành phần của một ứng dụng và kiểm thử như một
ứng dụng đã hoàn thành. Trong khi Unit Test kiểm thử các thành phần và đơn vị phần
mềm riêng lẻ thì kiểm thử tích hợp kết hợp chúng lại với nhau và kiểm thử sự giao tiếp
giữa chúng.
Kiểm thử tích hợp có 2 mục tiêu chính:
- Phát hiện lỗi giao tiếp xảy ra giữa các Unit.
- Tích hợp các Unit đơn lẻ thành các hệ thống nhỏ (subsystem) và cuối cùng là
nguyên hệ thống hoàn chỉnh (system) chuẩn bị cho kiểm thử ở mức hệ thống.
3.1.4. System Test - Kiểm thử mức hệ thống

8

LUAN VAN CHAT LUONG download : add


Mục đích Kiểm thử mức hệ thống là kiểm tra thiết kế và tồn bộ hệ thống (sau khi
tích hợp) có thỏa mãn u cầu đặt ra hay khơng.
Điểm khác nhau then chốt giữa kiểm thử tích hợp và kiểm thử hệ thống là kiểm thử
hệ thống chú trọng các hành vi và lỗi trên tồn hệ thống, cịn kiểm thử tích hợp chú trọng
sự giao tiếp giữa các đơn vị hoặc đối tượng khi chúng làm việc cùng nhau. Thông thường
ta phải thực hiện kiểm thử đơn vị và kiểm thử tích hợp để bảo đảm mọi đơn vị phần mềm
và sự tương tác giữa chúng hoạt động chính xác trước khi thực hiện kiểm thử hệ thống
Kiểm thử hệ thống kiểm tra cả các hành vi chức năng của phần mềm lẫn các yêu cầu
về chất lượng như độ tin cậy, tính tiện lợi khi sử dụng, hiệu năng và bảo mật. Mức kiểm

thử này đặc biệt thích hợp cho việc phát hiện lỗi giao tiếp với phần mềm hoặc phần cứng
bên ngoài, chẳng hạn các lỗi “bế tắc” (deadlock) hoặc chiếm dụng bộ nhớ. Sau giai đoạn
kiểm thử hệ thống, phần mềm thường đã sẵn sàng cho khách hàng hoặc người dùng cuối
cùng kiểm thử để chấp nhận (Acceptance Test) hoặc dùng thử (Alpha/Beta Test).
3.1.5. Acceptance Test - Kiểm thử chấp nhận sản phẩm
Thông thường, sau giai đoạn kiểm thử hệ thống là kiểm thử chấp nhận, được khách
hàng thực hiện (hoặc ủy quyền cho một nhóm thứ ba thực hiện). Mục đích của kiểm thử
chấp nhận là để chứng minh phần mềm thỏa mãn tất cả yêu cầu của khách hàng và khách
hàng chấp nhận sản phẩm (và trả tiền thanh toán hợp đồng).
Kiểm thử chấp nhận có ý nghĩa hết sức quan trọng, mặc dù trong hầu hết mọi trường
hợp, các phép kiểm thử của kiểm thử hệ thống và kiểm thử chấp nhận gần như tương tự,
nhưng bản chất và cách thức thực hiện lại rất khác biệt.
3.1.6. Regression Test - Kiểm thử hồi quy
Kiểm thử hồi quy không phải là một mức kiểm thử, như các mức khác đã nói ở trên.
Nó đơn thuần kiểm tra lại phần mềm sau khi có một sự thay đổi xảy ra, để bảo đảm phiên
bản phần mềm mới thực hiện tốt các chức năng như phiên bản cũ và sự thay đổi không
gây ra lỗi mới trên những chức năng vốn đã làm việc tốt. Kiểm thử hồi quy có thể thực
hiện tại mọi mức kiểm thử.
Ví dụ: một phần mềm đang phát triển khi kiểm tra cho thấy nó chạy tốt các chức
năng A, B và C. Khi có thay đổi code của chức năng C, nếu chỉ kiểm tra chức năng C thì
chưa đủ, cần phải kiểm tra lại tất cả các chức năng khác liên quan đến chức năng C, trong

9

LUAN VAN CHAT LUONG download : add


ví dụ này là A và B. Lý do là khi C thay đổi, nó có thể sẽ làm A và B khơng cịn làm việc
đúng nữa.


3.2. Kiểm thử phần mềm nhúng
3.2.1. Tổng quan về kiểm thử phần mềm nhúng
Kiểm thử phần mềm nhúng cũng có các đặc điểm tương tự như kiểm thử phần mềm
nói chung, ngồi ra do đặc trưng của hệ thống nhúng rất đa dạng về môi trường phát triển,
đa dạng về kiến trúc phần cứng cũng như kiến trúc phần mềm nên kiểm thử cho phần
mềm nhúng có một số đặc trưng riêng.
Rõ ràng là kiểm thử phần mềm cho một chiếc điện thoại di động sẽ khác đáng kể so
với kiểm thử cho một chiếc máy giặt hay một hệ thống điểu khiển trong ô tô, mỗi hệ
thống đó yêu cầu một cách đánh giá riêng trong phương pháp kiểm thử của nó để có thể
kiểm thử được hết các phần của hệ thống.[12]
Mặc dù có nhiều lí do giải thích tại sao các hệ thống nhúng khác nhau phải được
kiểm thử theo những cách khá là khác nhau, tuy nhiên chúng cũng có nhiều vấn đề tương
tự, giải pháp tương tự cho các hệ thống trên trong một vài phương pháp kiểm thử nào
đó.[12]
Trong bài khóa luận này, tơi xin đề cập đến hai phương pháp hay được dùng để
kiểm thử cho khá nhiều các hệ thống nhúng khác nhau. Đó là phương pháp sử dụng
chương trình giả lập để mơ phỏng phần cứng hệ thống, qua đó kiểm tra sự thực thi của
chương trình phần mềm. Phương pháp thứ hai là một phương pháp rất phổ biến cho kiểm
thử phần mềm nói chung, đó là kiểm thử đơn vị ( Unit test).
3.2.2. Kiểm thử bằng phương pháp chạy phần mềm trên môi trường giả lập
phần cứng.
Chạy chương trình phần mềm trên mơi trường giả lập phần cứng thay vì chạy trực
tiếp trên phần cứng thật là một cách kiểm thử chương trình rất hữu ích. Người phát triển
có thể chạy thử chương trình nhúng của mình ngay trên máy PC mà khơng cần phải nạp
lên thiết bị thật, giúp tiết kiệm tiền mua thiết bị [14]. Hơn nữa, những thiết bị phần cứng
thật có thể hỏng nếu chương trình của ta chạy sai, hoặc đơn giản là do ta lắp ráp thiết bị
khơng đúng, điều đó thật nghiêm trọng nếu các thiết bị đó là đắt tiền, các phần mềm mơ
phỏng sẽ giúp người phát triển tránh được những rủi ro này.

10


LUAN VAN CHAT LUONG download : add


Khơng chỉ giúp tiết kiệm về tài chính, các cơng cụ giả lập còn giúp người phát triển
phần mềm nhúng tiết kiệm thời gian. Khi lập trình và biên dịch xong, thay vì phải loay
hoay kết nối các thiết bị phức tạp, kết nối thiết bị với máy tính để nạp chương trình và
thực thi, người lập trình có thể khởi động chương trình giả lập và chạy ngay chương
trình mình vừa viết một cách rất trực quan, qua đó kiểm tra được chương trình của mình
chạy có đúng như mong muốn dự kiến hay không.
3.2.3. Kiểm thử phần mềm nhúng bằng Unit Test.
Unit Test được sử dụng rất nhiều trong kiểm thử phần mềm vì nó là mức kiểm thử
đơn giản nhất và phát hiện ra nhiều lỗi lập trình nhất. Và đối với lập trình nhúng cũng
khơng phải là ngoại lệ, ta có thể dùng Unit Test để kiểm thử từng chức năng trong một
chương trình viết cho hệ thống nhúng, với Unit Test, người phát triển không khó khăn gì
trong việc tổ chức kiểm thử và phân tích kết quả kiểm thử, các lỗi lập trình sẽ được phát
hiện sớm.
Hiện nay, các Unit Test Framework dành cho lập trình nhúng chưa có nhiều như các
Unit Test Framework cho lập trình ứng dụng trên máy PC, với lập trính nhúng sử dụng
ngơn ngữ C, tiêu biểu chỉ có một vài framework là Embedded Unit (Embunit), Tessy,
Testape, Embedded Unity…Trong đó Embedded Unit là phổ biến nhất vì nó dễ sử dụng
và là một công cụ mã nguồn mở, ta có thể tải về miễn phí tại
.

11

LUAN VAN CHAT LUONG download : add


Chương 4. Lập trình nhúng cho vi điều khiển 8051 bằng

ngơn ngữ C
4.1. Vi điều khiển 8051
Trong khóa luận này, tơi chọn vi điều khiển 8051 để tìm hiểu và trình bày, áp dụng
các phương pháp kiểm thử phần mềm cho 8051 vì nó là vi điều khiển có giá thành rẻ,
được sử dụng rất rộng rãi, 8051 có rất nhiều tài liệu và công cụ trợ giúp phát triển và
hướng dẫn lập trình, và nó cũng có rất nhiều nhà sản xuất (nguồn cung cấp đa dạng).
8051 là một vi điều khiển rất phổ biến dùng cho các hệ thống nhúng, vi điều khiển
8051 là thành viên đầu tiên và phổ biến nhất của họ vi điều khiển 8051.
Intel 8051 — là vi điều khiển đơn tinh thể kiến trúc Harvard, lần đầu tiên được sản
xuất bởi Intel năm 1980, để dùng trong các hệ thống nhúng. Trong những năm 1980 và
đầu những năm 1990 đã rất nổi tiếng. Tuy nhiên hiện tại đã cũ và được thay thế bằng các
thiết bị hiện đại hơn, với các lõi phối hợp 8051, được sản xuất bởi hơn 20 nhà sản xuất
độc lập, như Atmel, Maxim IC, NXP Semiconductors (Philips Semiconductor trước đây),
Winbond, Silicon Laboratories, Texas Instruments và Cypress Semiconductor. Các phiên
bản của vi điều khiển 8051 tạo nên họ 8051. Tên gọi chính thức của họ vi điều khiển Intel
8051 là MCS 51.
Vào năm 1981. Hãng Intel giới thiệu một bộ vi điều khiển được gọi là 8051. Bộ vi
điều khiển này có 128 byte RAM, 4K byte ROM trên chíp, hai bộ định thời, một cổng nối
tiếp và 4 cổng (đều rộng 8 bit) vào ra tất cả được đặt trên một chíp. Lúc ấy nó được coi là
một “hệ thống trên chíp”. 8051 là một bộ xử lý 8 bit có nghĩa là CPU chỉ có thể làm việc
với 8 bit dữ liệu tại một thời điểm. Dữ liệu lớn hơn 8 bit được chia ra thành các dữ liệu 8
bit để cho xử lý. 8051 có tất cả 4 cổng vào - ra I/O mỗi cổng rộng 8 bit. Mặc dù 8051 có
thể có một ROM trên chíp cực đại là 64 K byte, nhưng các nhà sản xuất lúc đó đã cho
xuất xưởng chỉ với 4K byte ROM trên chip [1].
8051 đã trở nên phổ biến sau khi Intel cho phép các nhà sản xuất khác sản xuất và
bán bất kỳ dạng biến thế nào của 8051 mà họ thích với điều kiện họ phải để mã tương
thích với 8051. Điều này dẫn đến sự ra đời nhiều phiên bản của 8051 ( các vi điều khiển
trong họ 8051 ) với các tốc độ khác nhau và dung lượng ROM trên chíp khác nhau được
bán bởi hơn nửa các nhà sản xuất. Điều này quan trọng là mặc dù có nhiều biến thể khác


12

LUAN VAN CHAT LUONG download : add


nhau của 8051 về tốc độ và dung lương nhớ ROM trên chíp, nhưng tất cả chúng đều
tương thích với 8051 ban đầu về các lệnh. Điều này có nghĩa là nếu ta viết chương trình
của mình cho một phiên bản nào đó thì nó cũng sẽ chạy với mọi phiên bản bất kỳ khác mà
khơng phân biệt nó từ hãng sản xuất nào.
Vi điều khiển 8051 cũng như họ vi điều khiển 8051 là một trong những bộ vi điều
khiển 8-bit mạnh và linh hoạt nhất, đã trở thành bộ vi điều khiển hàng đầu trong những
năm gần đây

4.2. Lập trình C cho 8051 với trình biên dịch SDCC
4.2.1. Ngơn ngữ C và lập trình nhúng
So với bất kỳ ngơn ngữ lập trình nào khác đang tồn tại C thực sự phù hợp và
trở thành một ngôn ngữ phát triển của hệ nhúng. Điều này không phải là cố hữu và sẽ tồn
tại mãi, nhưng tại thời điểm này thì C có lẽ là một ngơn ngữ gần gũi nhất để trở thành một
chuẩn ngôn ngữ trong thế giới hệ nhúng.
Sự thành công về phát triển phần mềm thường là nhờ vào sự lựa chọn ngôn ngữ phù
hợp nhất cho một dự án đặt ra. Cần phải tìm một ngơn ngữ để có thể đáp ứng được u
cầu lập trình cho các bộ xử lý từ 8 - bit đến 64 – bit, trong các hệ thống hữu hạn về bộ nhớ
vài Kbyte hoặc Mbyte. Cho tới nay, điều này chỉ có C là thực sự có thể thỏa mãn và phù
hợp nhất.
Có lẽ một thế mạnh lớn nhất của C là nó là một ngơn ngữ bậc cao mức thấp nhất.
Tức là với ngôn ngữ C chúng ta có thể điều khiển và truy cập trực tiếp phần cứng khá
thuận tiện mà không hề phải hy sinh hay đánh đổi bất kỳ một thế mạnh nào của ngôn ngữ
bậc cao. Đây cũng là một trong những tiêu chí xây dựng của những người sang lập ra
ngôn ngữ C muốn hướng tới.
Thời kỳ đầu của hệ thống nhúng, Assembly cũng là một ngơn ngữ hay được dùng để

lập trình cho các vi xử lý, với ngôn ngữ này cho phép người lập trình điều khiển và kiểm
sốt hồn tồn vi xử lý cũng như phần cứng hệ thống trong việc thực thi chương trình.
Tuy nhiên ngơn ngữ Assembly lại có nhiều nhược điểm, đó là việc học và sử dụng nó rất
khó khăn và đặc biệt khó khăn trong việc phát triển các chương trình ứng dụng lớn, phức
tạp. Chính vì vậy mà ngày nay Assembly ít được phổ cập và sử dụng.

13

LUAN VAN CHAT LUONG download : add


4.2.2. Lập trình C cho 8051
Về cơ bản thì lập trình C cho vi điều khiển 8051, cấu trúc của chương trình cũng
giống như lập trình C cho các ứng dụng trên máy PC. Nhưng với lập trình C cho 8051, ta
chỉ cần biết số lệnh không nhiều, tuy nhiên với đặc trưng về phần cứng, ta sẽ phải nhớ
nhiều tên biến đặc biệt đã được định nghĩa sẵn để sử dụng trong chương trình, các biến
này thể hiện các thanh ghi hoặc các bit có chức năng đặc biệt của vi điều khiển.
Các kiểu dữ liệu về cơ bản giống với C chuẩn, ngồi ra cịn có một số kiểu dữ liệu
đặc trưng cho vi điều khiển như kiểu sfr ( thanh ghi đặc biệt), kiểu bit, sbit….
Cấu trúc một chương trình C cho 8051[1]:
//include các file
#include <file.h>
#include <file.c>
//Khai báo biến toàn cục
unsigned char x,y;
int z=0;
//Khai báo và định nghĩa các hàm
Kiểu trả về Hàm1( đối số ) ko
{
…//Các câu lệnh

}
void Hàm2( đối số )
{
…//Các câu lệnh
}
//Hàm main ( bắt buộc chương trình nào cũng phải có )
void main(void)

14

LUAN VAN CHAT LUONG download : add


{
…//Các câu lệnh
}
Các câu lệnh trong hàm main có thể có lời gọi các hàm đã khai báo ở trên hoặc
khơng. Khi có lời gọi hàm nào thì chương trình nhảy đến hàm đó thực hiện hàm đó xong
con rỏ lại quay về chương trình chính(hàm main) thực hiện tiếp các hàm hoặc câu lệnh.
Các câu lệnh trong C kết thúc bằng dấu “;”
Các comment được đặt trong dấu: Mở đầu bằng “/*” kết thúc bằng “*/” , nếu
comment trên 1 dịng thì có thể dùng dấu: “//” . Khi lập trình nên comment các câu lệnh
khối lệnh làm gì để về sau khi chương trình lớn dễ sửa lỗi.
Ngồi các hàm cơ bản, lập trình C cho 8051 cịn có các hàm ngắt để xử lý ngắt :
Void Tênhàm(void) interrupt nguồnngắt using băngthanhghi
{
// các câu lệnh
}
Hàm ngắt không được phép trả lại giá trị hay truyền tham biến vào hàm, tên hàm là
bất kì , Interrupt là từ khóa chỉ hàm ngắt

4.2.3. Trình biên dịch SDCC
Giới thiệu SDCC
SDCC là một trình biên dịch C rất phổ biến cho vi điều khiển, “SDCC” là viết tắt
của Small Device C Compiler, nó là phần mềm tự do mã nguồn mở, ta có thể tải miễn phí
từ . SDCC là chương trình dịch đa đích, nó có thể biên dịch
và hỗ trợ cho nhiều loại vi điều khiển như 8051, PIC, Motorola, Zilog,...[9]
SDCC được phát triển bởi một cộng đồng đông đảo lập trình viên khắp thế giới và
rất phổ biến với người dùng Linux, SDCC cũng có phiên bản dành cho Windows. Trong
khóa luận này, tơi sử dụng phiên bản SDCC 2.5.0 dành cho Windows để biên dịch các ví
dụ về lập trình C cho 8051.
Cài đặt

15

LUAN VAN CHAT LUONG download : add


Sau khi tải phiên bản SDCC dành cho Windows tại ta
tiến hành cài đặt, sau khi cài đặt, chương trình sẽ hỏi xem ta có muốn đưa đường dẫn của
thư mục bin chứa các file thực thi SDCC vào biến môi trường PATH không ? Ta chọn yes
và kết thúc cài đặt, lúc này ta có thể gọi trình biên dịch SDCC từ bất kì đâu.

Hình 3. Cài đặt SDCC
Ta kiểm tra phiên bản SDCC vừa cài bằng cách bật mơi trường dịng lệnh của
Windows ( Comand Prompt) gõ lệnh sdcc –version [9], kết quả như sau chứng tỏ ta đã
cài đặt thành công:
“SDCC : mcs51/gbz80/z80/avr/ds390/pic16/pic14/TININative/xa51/ds400/hc08
2.5.0 #1020 (May 8 2005) (MINGW32)”.
Sử dụng SDCC
Ta có thể biên dịch 1 file .c bằng lệnh : sdcc tênfile.c

- ví dụ : sdcc test.c
file thực thi được tạo ra sẽ có đi là .ihx chứa mã hexa để nạp lên vi điều khiển và
chạy.

16

LUAN VAN CHAT LUONG download : add


Khi ta có nhiều file mã nguồn, ta có thể biên dịch từng file thành các file .rel riêng
rẽ, sau đó biên dịch file chính cùng với các file .rel mà nó cần dùng [9] ( điều này giống
như biên dịch file .o khi dùng trình biên dịch GCC ).
Ví dụ : ta có 2 file delay.c và blink.c, blink.c là file chính sử dụng file delay.c, ta
biên dịch như sau :
sdcc -c delay.c // tạo file delay.rel
sdcc blink.c delay.rel // biên dịch file blink.c sử dụng delay.rel
Khi ta biên dịch một file mã nguồn, SDCC sẽ tạo ra không phải chỉ một file đích
.ihx, mà cịn có một số file khác được trình biên dịch tạo ra, ta có danh sách các loại file
sẽ được tạo khi biên dịch như sau :
- File .asm : chứa mã assembly của chương trình
- File .ihx : chứa mã hexa, để nạp và chạy trên vi điều khiển, đây là file mà ta cần
- File lst: danh sách assembly code, khá có ích cho việc hiểu sâu và tối ưu mã, tại
đây ta có thể thấy mã C dọc theo mã assembly và mã máy
- File .map : chứa ánh xạ bộ nhớ được tạo bởi bộ liên kết (linker), đây là file khá
quan trọng, nó cho ta biết cách sử dụng các phần khác nhau của bộ nhớ.
- File .mem : tóm tắt về cách sử dụng bộ nhớ, thể hiện RAM và miêu tả bộ nhớ khác
- File .rel : file chứa object được tạo ra dành cho bộ liên kết
- File .rst : file danh sách assembly với lien kết chỉnh sửa thông tin
- File .sym : chứa bảng các kí hiệu
File chứa mã hexa cho các vi điều khiển có định dạng chuẩn là .hex, nên sẽ có một

số loại chip không đọc được file .ihx do SDCC tạo ra. SDCC cung cấp một công cụ
chuyển từ file .ihx sang file .hex chuẩn, đó là cơng cụ packihx, ta gõ lệnh như sau:
packihx tênfile.ihx > tênfile.hex
Lệnh này sẽ tạo file .hex để ta có thể nạp cho vi điều khiển.
Trình biên dịch SDCC cũng cho phép ta nhúng mã assembly vào chương trình C,
các câu lện assembly phải được đặt giữa 2 cặp từ khóa là _asm và _endasm và kết thúc
khối lệnh bằng dấu ; sau _endasm [9].

17

LUAN VAN CHAT LUONG download : add


Ngồi ra SDCC cịn cho phép ta có thể tạo các thư viện – các file .lib để có thể sử
dụng lại, sử dụng chung cho nhiều chương trình, ta có thể tạo thư viện bằng lệnh sau:
Sdcclib tênthưviện.lib tênfile.rel
Khi viết mã nguồn cho 8051 với SDCC, các chân của các cổng được viết như sau:
chân P0.0 được viết là P0_0, chân P0.1 được viết là P0_1 ….( sử dụng dấu gạch dưới
phân tách giữa cổng và chân ).
4.2.4. IDE cho lập trình 8051 với SDCC
Ta có thể sử dụng trực tiếp trình biên dịch SDCC trên mơi trường dịng lệnh của
Windows, tuy nhiên nếu ta sử dụng một IDE trợ giúp cho lập trình thì việc sử dụng SDCC
sẽ hiệu quả và dễ sử dụng hơn. Ở đây, tôi sử dụng một IDE khá phổ biến cho 8051 đó là
MIDE – 51. MIDE-51là một IDE dành cho vi điều khiển 8051 trên Windows, nó là một
phần mềm tự do, ta có thể tại miễn phí tại trang . MIDE-51 có cả
bản đóng gói đầy đủ và bản chỉ có trình soạn thảo (Editor) MIDE-51 [8].

Hình 4. trình soạn thảo MIDE-51

18


LUAN VAN CHAT LUONG download : add


Với bản đầy đủ, nó đã tích hợp sẵn trình dịch SDCC, trình hợp ngữ, trình giả lập vi
điều khiển, ta chỉ việc cài ra và sử dụng, không cần phải cấu hình.
Với bản chỉ có trình soạn thảo, ta cần phải cấu hình cho nó, như đặt đường dẫn đến
thư mục thực thi của SDCC, đường dẫn đến trình giả lập….Mọi cấu hình đều được thiết
lập trong mục edit -> Preference.
4.2.5. Ví dụ về lập trình C cho 8051 với SDCC và MIDE-51
Ta có một chương trình C đơn giản như sau
#include <8051.h>
void delay( )
//hàm tạo trễ một khoảng thời gian
{
int i,j;
for (i = 0;i<=1000;i++)
for (j = 0;j<=1000;j++);
}
void main()
{
while (1)
{
P1_1 = 0; // led glow
delay( );
P1_1 = 1; // led off
delay( );
}
}
Đây là một chương trình đơn giản, nó làm nhấp một đèn nháy led được nối với chân

P1.1, hàm delay( ) có tác dụng tạo trễ, để khi chạy ta có thể quan sát được sự nhấp nháy
của đèn.
Ta viết đoạn mã trên vào MIDE-51, lưu lại thành file example.c. Sau đó ta biên dịch
bằng cách chọn Build hoặc bấm phím F9.

19

LUAN VAN CHAT LUONG download : add


×