Một số lỗi khi biên dịch file hex năm 2024

Tiếp theo ta chọn loại Chip: ở đây ta lựa chọn STM32F100x Ấn Yes và ta đã hoàn thành Bước 1 – tạo project mới.

v Bước 2: Tạo File.C

Tiếp theo ta cần tạo 1 File.C để viết chương trình cho Chip lên file đó.Vào File->New:

Sau đó chọn Save

Chọn đường dẫn vào cùng thư mục với Project vừa tạo ở Bước 1. Sau đó đặt tên, với phần đuôi mở rộng là .C:

Chọn Save, và ta đã hoàn thành xong bước 2 – Tạo File.C

v Bước 3: Add File.C và Project

Ta cần phải liên kết File.C với Project vừa tạo với nhau:

Trong giao diện Keil C, ở không gian làm việc của Project: Chuột phải vào phần “Source Group 1” -> Add files to Group “Source Group 1”:

Chọn đường dẫn đến thư mục Project => chọn File.C vừa tạo ở bước 2 =>

Và ta đã hoàn tất giai đoạn tạo Project, chuẩn bị viêt code

v Bước 4: Biên dịch và tạo File Hex

Tùy chỉnh Options:

+ Sửa tần số thạc anh

+ Tạo file Hex

Biên dịch chương trình: Ấn vào biểu tượng Build. Nếu thành công sẽ có thông báo: “Creating hex file from …”, 0 Error. Và ta sẽ có 1 file Hex được tạo ra cùng thư

mục với project.

v Bước 5: Gỡ lỗi chương trình (nếu có)

Nếu chương trình còn có lỗi, để tiến hành gỡ lỗi chương trình (Debug) ta thực hiện từng bước:

v Bước 6: Nạp chương trình cho Vi điều khiển

Tùy từng mạch nạp chuyên dụng mà ta cần cài đặt Driver, và phần mềm nạp Chip khác nhau.

Trong đề tài này dùng Flash loader.

+ Giới thiệu

Flash Loader Demonstrator (viết tắt FLD) được viết bởi STMicroelectronics, là công cụ được sử dụng cho việc nạp file thực thi chương trình lập trình (file .hex,

.bin) vào chip ARM Cortex - M3 thông qua cổng nối tiếp USART1.

+ Hướng dẫn nạp và chạy chương trình nạp bằng FLD

Trước khi tiến hành nạp chương trình bằng FLD, cần thiết lập chip ở chế độ Boot từ System Memory bằng cách đặt chân Boot 0 ở mức logic cao (mức +5V), chân Boot 1 ở mức điện áp thấp (mức 0V).

Tiến hành Reset chip và chạy phần mềm FLD.

Sau khi nạp xong, để chạy chương trình cần thiết lập lại cho chip ở chế độ Boot từ User Flash và tiến hành Reset lại chip.

+ Các bước nạp chương trình bằng FLD

Để nạp mã thực thi chương trình bằng FLD, cần thực hiện 5 bước chính như

sau:

· Bước 1: Kết nối cable COM từ máy tính tới chip thông qua cổng USART1, khởi chạy chương trình Flash Loader Demonstrator.

Tiến hành chọn tốc độ Baud Rate ở 57600 và Parity là Even 1. Sau đó chọn “Next”

· Bước 2: Khi kết nối thành công, FLD sẽ hiển thị thông tin kích thước bộ nhớ Flash củachip như hình 2, chọn “Next”.

· Bước 3: Sau bước hiển thị cấu hình Flash, FLD chuyển sang phần hiển thị thông tin chip, chọn “Next”.

· Bước 4: Giao diện lựa chọn điều khiển nạp chương trình, tiến hành thiết lập các thao tác trên chip, chọn “Next”.

Lưu ý: chọn “Global Erase” để xóa toàn bộ dữ liệu cũ trước khi nạp dữ liệu mới vào bộ nhớ chương trình. Chọn “Verify after download” để kiểm tra dữ liệu sau khi nạp.

· Bước 5: kết thúc việc nạp chip thành công, FLD sẽ hiển thị giao diện thông báo, quá trình nạp là hoàn tất.

Để chạy chương trình vừa nạp, cần thiết lập lại cho chip ở chế độ Boot từ User Flash và tiến hành Reset lại chip.

Bài này mình sẽ hướng dẫn các bạn dùng Keil C để dịch sang file .hex dùng cho mô phỏng mạch trên Proteus. Công cụ chúng ta cần là Keil C và Proteus 8.4.

File .hex là gì ?

Hex ở đây được viết tắt bởi từ hexadecimal có nghĩa là hệ cơ số 16 hay hệ thập lục phân. Khi bạn viết code và nạp chương trình cho vi điều khiển thì không đơn thuần là nạp những "câu lệnh" bạn viết ra đưa vào vi điều khiển, mà phải thông qua trình biên dịch (Code Vision, Keil C...đều là trình biên dịch) "dịch" lại những gì mình viết và tạo ra một chuỗi kí tự gồm những chữ (từ A đến F) và số (từ 0 đến 9) thuộc hệ thập lục phân. Những chữ số này nạp vào vi điều khiển thì vi điều khiển mới "hiểu" được. Những chữ số này được đóng gói và lưu lại thành một file có đuôi mở rộng là ".hex".

Tại sao lại dịch sang file .hex là không phải là file với định dạng khác?

Vi điều khiển chỉ có khả năng làm việc với các tập lệnh dưới định dạng là ở cơ số 16, vì vậy ta cần một file .hex để nạp vào vi điều khiển, qua đó thì vi điều khiển mới hoạt động được.

1. Hướng dẫn dùng Keil C để dịch ra file .hex Để bắt đầu viết code cho một dự án nào đó, các bạn mở Keil C lên và chọn Project/ New uVision Project. Màn hình tiếp theo các bạn điền tên project rồi chọn OK.

Một số lỗi khi biên dịch file hex năm 2024

Ở màn hình tiếp theo, các bạn chọn vi điều khiển mà các bạn đang dùng, ở đây mình chọn là AT89S52.

Một số lỗi khi biên dịch file hex năm 2024

Ở màn hình tiếp theo, đây là lựa chọn không bắt buộc, các bạn có thể đồng ý thêm file STARTUP.A51( Đây là một file trích xuất từ hệ thống, được viết bằng hợp ngữ). File này không ảnh hưởng gì đến chương trình của bạn nên các bạn có thể bỏ chọn.

Ở màn hình tiếp theo, ta bắt đầu thêm file C cho project bằng cách chọn chuột phải vào ô Source Group 1 và chọn Add new item to.... Nếu các bạn đã soạn thảo file .c hay .h từ trước đó mà muốn nhập vào project thì các bạn có thể chọn Add existing items to... và chọn các file đã soạn trước đó.

Các bạn gõ tên cho file c và ấn Add.

Màn hình tiếp theo là phần soạn thảo code, ngôn ngữ dùng ở đây là C. Mình có viết qua chương trình nhấp nháy LEDs như sau:

include // thu vien cua 89s52

sbit LED = P2^0; // dinh nghia chan P2.0 co ten la LED

void Delay(void); // ham delay

while(1) // vong lap vo han

for(j=0;j<10000;j++) // delay 1ms

Các bạn nên ấn nút lưu lại thường xuyên đề phỏng những trường hợp không may.

Khi các bạn soạn thảo xong thì ta tiến hành dịch sang file .hex như sau:

Chọn Flash/ Configure Flash tools

Ở ô Target các bạn chọn giá trị Xtal cho phù hợp, ở đây mình chọn là 12MHz.

Một số lỗi khi biên dịch file hex năm 2024

Tiếp theo bên tab Output các bạn tích chọn ô Create HEX file, format các bạn để ở mặc định. Một tùy biến ở đây các bạn có thể chọn thư mục sẽ chứa file .hex để sau này dễ tìm kiếm.

Một số lỗi khi biên dịch file hex năm 2024

Tiếp theo, để tiến hành dịch chương trình sang file hex, các bạn ấn Project/ Build target. Nếu không có lỗi gì thì sẽ có thông báo là 0 error 0 warning và đã tạo xong file hex ở trong thư mục mà ở trên các bạn đã chọn.

Như vậy ta đã tiến hành xong việc dùng Keil C để dịch sang file .hex dùng cho mô phỏng trên proteus cũng như dùng để nạp chương trình vào IC sau này.

2. Mô phỏng trên Proteus

Các bạn mở Proteus lên, tiến hành vẽ mạch như bình thường.

Một số lỗi khi biên dịch file hex năm 2024

Để nạp file hex cho vi điều khiển, ta chuột phải vào IC rồi chọn Edit Properties. Ở ô program file, ta ấn vào icon Open rồi dẫn đến file hex ta vừa tạo ở trên rồi chọn OK. Để tiến hành mô phỏng, ta ấn vào Debug/ Run Simulation hoặc ấn vào icon run ở góc dưới bên trái màn hình.

3. Nạp chương trình cho 8051 bằng mạch nạp ISP

Công cụ cần thiết là mạch nạp ISP( http://banlinhkien.vn/goods-493-mach-nap-89-avr-usbasp-usbisp.html ) và chương trình nạp progisp1.72 ( https://www.fshare.vn/file/ZP4AFQ9O5H/ )

Dao diện của progisp như sau:

Một số lỗi khi biên dịch file hex năm 2024

Các bạn tiến hành chọn đúng chip mình đang dùng, ở đây là AT89S52.

Chữ PRG ISP sẽ sáng lên khi phần mềm đã nhận đc mạch nạp:

Một số lỗi khi biên dịch file hex năm 2024

Các bạn chọn Load Flash rồi dẫn đến file hex vừa tạo ở trên. Rồi ấn Auto, nếu thành công sẽ có thông báo sau:

Erase, Write Flash, Verify Flash, Successful Done.

Lưu ý là các bạn phải nối đúng các chân của mạch nạp với vi điều khiển nhé:

Một số lỗi khi biên dịch file hex năm 2024

Chúc các bạn thành công! Bài tiếp theo mình sẽ hướng dẫn các bạn về lập trình 8051 từ cơ bản đến nâng cao. Mong các bạn theo dõi và ủng hộ!