Chương trình “Đèn led nhấp nháy”

Một phần của tài liệu LUẬN VĂN:CÁC KỸ THUẬT GỠ LỖI TRONG VIỆC PHÁT TRIỂN HỆ THỐNG NHÚNG VỚI NGÔN NGỮ C doc (Trang 50 - 52)

Mỗi kỹ sư lập trình khi bắt đầu một ngôn ngữ lập trình, một công cụ mới thì Hello world luôn là chương trình đầu tiên được viết ra. Chương trình hiển thị dòng chữ “Hello world” trên màn hình như một sự khởi đầu mới, là lời chào thân ái khi chúng ta bắt đầu tiếp cận với một ngôn ngữ lập trình mới.

Đối với các kỹ sư lập trình phần mềm nhúng thì chương trình Hello world chính là lập trình cho các đèn led nhấp nháy để báo hiệu rằng hệ thống của ta đang làm việc.

Mục đích của chương trình nhấp nháy led dưới đây là lập trình để các đèn led ở các chân cắm 0, 2, 4, 6 trên GPIO Port 0 nhấp nháy:

Bảng 5.1: Mã lệnh của chương trình Led.c

/* Chuong trinh Led.c

** Muc dich: nhay cac led 0, 2, 4, 6 tren Port0 trong thoi gian 600000 micro giay ** Kiem tra cac led co hoat dong khong?

*/

#include"lpc214x.h"

void delay(unsigned long int);

/* Ham main co nhiem vu thuc thi cac chuong trinh chinh*/ int main()

{

IODIR0 = 0x00000055; // Dat GPIO pin 0, 2, 4, 6 = Output IOSET0 = 0x00000055; // Set GPIO-1[24] Output Pin(OFF LED)

while(1) {

IOCLR0 = 0x00000055; // Xoa Output GPIO1[24] Pin (ON LED) delay(600000); // Delay

IOSET0 = 0x00000055; // Set Output GPIO1[24] Pin (OFF LED)

delay(600000); // Delay }

}

/* Ham tre voi khoang thoi gian cho truoc time*/ void delay(unsigned long time)

{ while(time > 0) { time--; } }

Ý nghĩa của các giá trị, phép gán, hàm:

• IODIR0: bật các chân cắm 0, 2, 4, 6 của cổng Port 0, thiết lập trạng thái của các chân cắm là trạng thái xuất (giá trị nhị phân tại các chân cắm là 1 – chân cắm ở trạng thái xuất).

• IOSET0: đưa các chân cắm tương ứng bit = 1 trong thanh ghi lên mức cao khi đã thiết lập trạng thái xuất.

• IOCLR0: đưa các chân cắm tương ứng bit = 1 trong thanh ghi xuống mức thấp khi đã thiết lập trạng thái xuất.

• Hàm delay: hàm làm trễ thời gian giữa 2 lần nhấp nháy led với một khoảng thời gian cho trước.

• Giá trị: 0x00000055 là giá trị theo cơ số 16, tương đương với giá trị 00000000000000000000000101010101 các giá trị tại bit 0, 2, 4, 6 là 1.

Thực hiện Translate (nhấn Ctrl + F7) để biên dịch chương trình, kiểm tra xem chương trình có lỗi hay không? Sau đó Build (nhấn F7) để chương trình được biên dịch lại, kết nối và tạo ra tập tin thực thi .hex. Nếu chương trình không có lỗi biên dịch – các lỗi ngữ nghĩa (compiler error) thì chương trình mới có thể được gỡ lỗi, mô phỏng.

Thực hiện gỡ lỗi cho chương trình bằng Debug (nhấn Ctrl + F5) để bắt đầu quá trình gỡ lỗi và chạy chương trình mô phỏng bằng Run (F5).

Thông thường thì chương trình sẽ gọi ra ngay màn hình hiển thị của GPIO để cho chúng ta thấy led đang nhấp nháy, nếu không thấy ta có thể vào thẻ Peripherals - GPIO – Fast GPIO – Port 0 để bật hiển thị GPIO.

Sau khi chạy chương trình và gỡ lỗi, ta được kết quả như sau:

Hình 5.1. Kết quả thực thi chương trình Led.c

Chương trình đã mô phỏng cho sự nhấp nháy của led bằng việc nhấp nháy các chân cắm 0, 2, 4, 6 của thanh ghi GPIO. Chương trình cũng cho thấy tốc độ nhấp nháy của led nhanh hay chậm phụ thuộc vào thời gian làm trễ mà ta đã viết.

Một phần của tài liệu LUẬN VĂN:CÁC KỸ THUẬT GỠ LỖI TRONG VIỆC PHÁT TRIỂN HỆ THỐNG NHÚNG VỚI NGÔN NGỮ C doc (Trang 50 - 52)