Mạch vi điều khiển

Mạch vi điều khiển

Jump to TINA Main Page & General Information 

TINA hỗ trợ rất nhiều (PIC, AVR, Arduino, 8051, HCS, STM, ARM, TI-Tiva, TI-Sitara, Infineon-XMC) vi điều khiển; MCU mới liên tục được thêm vào. Bạn có thể xem, sửa đổi và gỡ lỗi chương trình đang chạy trong bộ xử lý và tất nhiên, bạn có thể tạo mã của riêng mình.

Có hai cách cung cấp chương trình cho vi điều khiển ở TINA. Bạn có thể sử dụng mã nhị phân và tệp gỡ lỗi được tạo bởi trình biên dịch chuẩn (ví dụ MPLAB cho PIC) hoặc bạn chỉ có thể tải mã lắp ráp của mình để chạy và gỡ lỗi trong TINA bằng trình gỡ lỗi trình biên dịch tích hợp sẵn.

Tạo một mạch đếm đơn giản bằng vi điều khiển PIC với lập trình ngôn ngữ lắp ráp

Tạo một mạch đếm đơn giản bằng vi điều khiển PIC với lập trình ngôn ngữ C

Gỡ lỗi vi điều khiển cơ bản bằng TINA

Trong vi điều khiển TINA có thể được mô phỏng không chỉ một mình mà còn cùng với các mô hình tương tự, kỹ thuật số, HDL hoặc các mô hình khác.

Chạy và chỉnh sửa mã MCU

Tải mạch PIC Flasher.TSC từ thư mục exampleMicrocontrollersPic.

Sơ đồ sau sử dụng bộ vi điều khiển PIC 16F73 sẽ xuất hiện cùng với bộ vi điều khiển PIC 16F73:

Mạch vi điều khiển, hình ảnh 1

Mạch này chỉ đơn giản là đếm từng bước một. Nhấn nút nút để xem nó hoạt động như thế nào.

Màn hình nên bước từng bước một.

Bấm đúp vào MCU để xem mã ASM trong đó. (xem thêm chi tiết trong hướng dẫn bắt đầu nhanh).

TINA có một tính năng tuyệt vời, theo đó bạn có thể chỉnh sửa và thay đổi mã nguồn trực tiếp trong TINA.

Hãy thực hiện thay đổi sau trong mã:

Thay đổi hướng dẫn (đã chọn ở trên) trong dòng 25 (bạn có thể thấy số dòng ở góc dưới bên phải của cửa sổ trình chỉnh sửa mã):

từ addlw 01H

để thêm 02H

Lưu mã đã thay đổi vào TINA bằng cách nhấn biểu tượng và đóng các cửa sổ MCU đang mở.

Nếu bạn nhấn nút bây giờ, gia số sẽ là 2!

Lưu ý rằng mã đã thay đổi sẽ được lưu tự động trong tệp TINA .TSC.

Sử dụng trình gỡ lỗi

Chúng ta hãy xem một ứng dụng khác có nhiều tương tác hơn.

Tải ví dụ PIC16F84interrupt_rb0.TSC của TINA từ thư mục exampleMicrocontrollersPic.

Nhấn nút. Có vẻ như lúc đầu không có gì xảy ra.

Tuy nhiên, nếu bạn nhấp vào công tắc SW-HL1., Màn hình sẽ chuyển tiếp bằng 1 mỗi khi công tắc thay đổi từ Thấp thành Cao.

Khả năng xử lý ngắt của PIC sẽ cho phép chúng tôi phát hiện các thay đổi chuyển đổi.

Bây giờ chúng ta hãy xem hoạt động chi tiết hơn bằng cách sử dụng trình gỡ lỗi ASM tương tác của TINA.

Để kích hoạt trình gỡ lỗi, chọn Tùy chọn trên menu Phân tích. Sau đó, đặt hộp kiểm gỡ lỗi Mã Bật MCU Mã hóa, như hiển thị bên dưới trong hộp thoại Tùy chọn phân tích.

Nhấn nút OK và trình gỡ lỗi MCU sẽ xuất hiện:

Chúng ta hãy theo dõi từng bước thực hiện chương trình bằng cách nhấn Truy tìm nút.

Sau khoảng lần nhấp 14, chúng tôi nhận được nhãn PT1: nơi chương trình dường như nằm trong một vòng lặp vô hạn.

PT1: TEMF INCF, F GOTO PT1

Bây giờ bấm vào công tắc SW-HL1 và thay đổi nó thành Cao. (Bạn nên nhấp khi con trỏ thay đổi thành mũi tên chỉ lên). Quay trở lại Trình gỡ lỗi và nhấp vào Trace vào nút hai lần. Chương trình sẽ nhận ra ngắt và nhảy vào


NT_SERV: label.
INT_SERV: INCF COUNTER, F MOVF COUNTER, 0 MOVWF PORT

tăng COUNTER và sao chép vào PORT A, và đầu ra sẽ là 1. Sau đó, chương trình sẽ quay trở lại vòng lặp vô hạn của Google tại PT1.

Chỉnh sửa mã trong trình gỡ lỗi

Bây giờ, hãy thực hiện một thay đổi nhỏ trong chương trình để chứng minh việc sử dụng trình gỡ lỗi. Sao y câu lệnh INCF COUNTER, F bằng cách sử dụng Sao chép và Dán như thế này:

        INT_SERV:
        INCF COUNTER, F 
        INCF COUNTER, F 
        MOVF COUNTER, 0
        MOVWF PORTA    

Bây giờ khi bạn nhấn chương trình sẽ hỏi:

Nhấn Yes và nhấn nút một lần nữa. Bây giờ mức tăng sẽ là 2 tại mỗi thay đổi Thấp-Cao của công tắc.

Bạn cũng có thể kiểm tra mạch trong chế độ Chạy liên tục của trình gỡ lỗi bằng cách nhấn nút nút.

Mặc dù trình gỡ lỗi sẽ chạy nhanh, bạn vẫn có thể thấy chu kỳ vô hạn của 'và sau đó nhảy đến phần máy chủ Ngắt (INT_SERV :) khi bạn thay đổi công tắc.

Tạo một điểm dừng

Sử dụng chế độ từng bước, thường không thể đến một điểm cụ thể trong chương trình. Ngay cả khi bạn đủ kiên nhẫn để bước một ngàn bước, luồng của chương trình có thể không cho phép bạn bước đến nơi bạn muốn.

Để dừng tại một dòng cụ thể, bạn có thể đánh dấu câu lệnh đích bằng cách đặt điểm dừng của điểm số.

Chạy chương trình trong chế độ liên tục của trình gỡ lỗi bằng cách sử dụng Chạy lệnh và bây giờ chương trình sẽ dừng ở dòng mong muốn trước khi thực hiện lệnh được đánh dấu.

Để chứng minh điều này, hãy nhấp vào câu lệnh tăng trong máy chủ ngắt của chúng tôi sau nhãn INT_SERV: và nhấn Chuyển đổi nút ngắt.

Bây giờ nhấn phím Nút chạy. Chương trình bắt đầu chạy trong một chu kỳ vô hạn của Google.

Mặc dù bạn đã đặt điểm dừng, việc thực thi mã sẽ không dừng lại vì nó không bao giờ đến điểm dừng. Tuy nhiên, khi bạn thay đổi công tắc từ Thấp thành Cao, chương trình sẽ dừng ở câu lệnh được đánh dấu:

   INT_SERV:
             INCF COUNTER, F

Bây giờ bạn có thể tiếp tục từng bước một hoặc trong chế độ Run