Mã asm vi xử lý
Trong chương trình học ngành Công nghệ Kỹ thuật Điện, Điện tử, sinh viên sẽ được học 6 tín chỉ về Vi xử lý, bao gồm: Để học tốt học phần này ngoài tài liệu, các em cần một số phần mềm hỗ trợ lập trình, mô phỏng như EMU8086, Pinnacle 52 (nên thay thế bằng Keil C để chạy tốt trên các bản Windows mới và được sử dụng nhiều trong thực tế) và Proteus. Các em cần cài đặt các phần mềm đã giới thiệu, học cách sử dụng chúng. Tài liệu hướng dẫn sử dụng phần mềm thầy đã gửi link ở phần dưới. Các em nên làm một số ví dụ mẫu để biết quy trình sử dụng, sau đó làm các bài tập, học cách mô phỏng từng bước chương trình để kiểm tra so sánh giữa ý hiểu và kết quả thực tế. Một số vấn đề khi học phần vi xử lý 80x86 . Điều các em cần học là học cách tra cứu và sử dụng một lệnh bất kỳ. Sau một quá trình làm các bài tập và ví dụ, các em sẽ tự nhớ một số lệnh hay được sử dụng. org 100h Dịch và thực hiện lệnh từng bước. Sau khi thực hiện xong lệnh DIV, nếu thanh ghi AH và AL cho cùng giá trị như suy đoán thì ta đã hiểu đúng sự thực hiện của lệnh. Một số vấn đề khi học vi điều khiển 8051 Để mạch này có thể hoạt động được thì vi điều khiển cần được nạp một chương trình. Sau đây là một chương trình ví dụ để điều khiển led đơn nối với chân P1.0 nhấp nháy: org 0
Soạn thảo chương trình này trên Pinnacle 52, lưu vào ổ cứng với tên ví dụ là "nhapnhay.asm". Dịch và mô phỏng để kiểm tra hoạt động (xem tài liệu hướng dẫn sử dụng phần mềm Pinnacle 52 trong link bên dưới). của toán hạng được chỉ ra và nằm sau mã lệnh. của toán hạng được chỉ ra sau mã lệnh. . thông qua một thanh ghi.Các thanh ghi được sử dụng để định địa chỉ gián tiếp bao gồm: R0, R1 và DPTR . 12. Ngắt -
Khi hoạt động ở mode 0 và mode 2, tốc độ baud được xác định dựa trên tần số thạch anh sử dụng. Trong mode 0, tốc độ baud luôn luôn bằng tần số dao động thạch anh chia 12. Điều này có nghĩa là nếu tần số thạch anh là 11,0592Mhz, khi hoạt động ở mode 0 tốc độ baud sẽ là 921.600 baud. Khi hoạt động ở mode 2, tốc độ baud luôn bằng tần số thạch anh chia 64. Ví dụ nếu sử dụng thạch anh tần số 11.0592Mhz, tốc độ baud sẽ là 11,0592*10^6/64=172.800. MOV TMOD,#20h ;Timer 1 hoạt động trong chế độ auto-reload Lưu ý, bit SMOD trong thanh ghi PCON nếu được đặt bằng 1 sẽ nhân đôi tốc độ baud của UART nếu timer1 được sử dụng để tạo tốc độ baud. Mặc định SMOD bị xóa về 0. Quan sát sơ đồ khối ta thấy rằng CCAPnH là thanh ghi đệm chứa giá trị độ rỗng của xung. CL là thanh ghi chứa số đếm của bộ PCA Counter/Timer. CCAPnL là thanh ghi
chứa giá trị độ rỗng được lấy từ CCAPnH. Giá trị của CL và CCAPnL luôn được kiểm tra bởi bộ so sánh 8 bit. Khi CL Để bộ so sánh hoạt động các bit ECOMn và PWMn phải đặt bằng 1. Có thể viết lệnh như sau (ví dụ viết với bộ CCP0): MOV A, CCAPM0 ORL A,#01000010B MOV CCAPM0,A Nguồn xung cho CL của PCA Counter/Timer có thể được xác lập như sau: Quan sát sơ đồ khối của khối PCA Timer, 2 bit CPS0 và CPS1 xác định nguồn xung cho bộ đếm.
MOV A, CMOD CLRCCON.7 ; cho phep timer hoat dong (CIDL=0) Mô phỏng tương tác kết hợp Keil C và Proteus - Bước 3: Khởi động Proteus, mở file nguyên lý. Nháy chuột phải vào IC vi điều khiển, chọn file .hex Keil C đã tạo
ra. - Bước 5: Mô phỏng từng bước trong Keil C, các lệnh sẽ chạy tương ứng trong
Protues [2]. Ayala, K. J. The 8051 Microcontroller:
Architecture, Programming, and Applications. West Publishing Company, 1991 Ví dụ bài tập cho 8086: 1. Viết chương trình điều khiển các led đơn nối với cổng P1 và P2 sáng dần từ giữa ra 5 lần sau đó tắt dần 10 lần: sangdan_tatdan Video hướng dẫn sử dụng phần mềm Proteus:
Video hướng dẫn tạo dự án trên Keil C viết bằng C (viết bằng ngôn ngữ Assembly thao tác tương tự):
|