Thứ Tư, 22 tháng 6, 2016

Bài 4. Hướng dẫn mô phỏng trên Proteus và cách nạp chương trình cho họ 8051

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à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à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<reg52.h>           // thu vien cua 89s52
sbit LED = P2^0;            // dinh nghia chan P2.0 co ten la LED
void Delay(void);           // ham delay
void main (void)
{
    while(1)                // vong lap vo han
    {
        LED = 0;            // LED ON
        Delay();
        LED = 1;            // LED OFF
        Delay();
    }
}

void Delay(void)
{
    int j;
    int i;
    for(i=0;i<10;i++)
    {
        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.
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.

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.

Để 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:

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:
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é:


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ộ!









Không có nhận xét nào:

Đăng nhận xét