Nội dung giáo trình được chia làm 8 bài, được trình bày chi tiết như sau: Sử dụng phần mềm EMU8086 viết chương trình cho vi xử lý 80x86; lập trình giao tiếp vi xử lý với các bộ chỉ thị; lập trình giao tiếp vi xử lý với các bộ điều khiển; sử dụng phần mềm Pinnacle 52 viết chương trình cho vi điều khiển họ 8051.
Trang 1RD
L8 L7 L6 L5 L4 L3 L2 L1
L1 L3 L5 L7
T1OUT 14R1IN 13T2OUT 7R2IN 8C2+
4 C2- 5
C1+
1 C1- 3
VS+ 2VS- 6
XTAL1 19
ALE 30
EA 31PSEN 29RST 9
P0.0/AD0 39 P0.1/AD1 38 P0.2/AD2 37 P0.3/AD3 36 P0.4/AD4 35 P0.5/AD5 34 P0.6/AD6 33 P0.7/AD7 32
P1.0 1P1.1 2P1.2 3P1.3 4P1.4 5P1.5 6P1.6 7P1.7 8
P3.0/RXD 10 P3.1/TXD 11 P3.2/INT0 12 P3.3/INT1 13 P3.4/T0 14 P3.7/RD
17 P3.6/WR
16 P3.5/T115
P2.7/A15 28
P2.0/A8 21 P2.1/A9 22 P2.2/A10 23 P2.3/A11 24 P2.4/A12 25 P2.5/A13 26 P2.6/A14 27
Trang 2Mục lục
Mục lục 1
Bài 1: Sử dụng phần mềm EMU8086 viết chương trình cho Vi xử lý 80x86 8
I Mục tiêu bài học 8
Yêu cầu vật tư thiết bị 8
II Nội dung bài học 8
1 Hướng dẫn sử dụng phần mềm EMU8086 8
1.1 Hướng dẫn cài đặt phần mềm EMU8086 8
1.2 Sử dụng phần mềm EMU8086 11
1.2.1 Khởi động chương trình và các menu của chương trình 11
1.2.2 Soạn thảo chương trình 16
1.2.3 Dịch và liên kết chương trình 19
1.2.4 Mô phỏng và chạy chương trình 22
1.3 Ví dụ và bài tập cơ bản lập trình cho vi xử lý 8086 28
Bài 2: Giao tiếp vi xử lý với các bộ chỉ thị 36
I Mục tiêu bài học 36
Yêu cầu vật tư, thiết bị 36
II Nội dung bài học 36
1 Sơ đồ phần cứng 36
1.1 Cấu trúc cổng song song 36
1.1.1 Sơ đồ khối bộ giao tiếp điều khiển cổng song song 36
Hình 2.1 Sơ đồ giao tiếp điều khiển cổng song song 36
1.1.2 Nhóm các tín hiệu giao diện song song 36
1.1.3 Các chế độ hoạt động của cổng song song 38
1.2 Giao tiếp PC với PC 41
1.2.1 Giao tiếp chế độ chuẩn 41
Hình 2.5 Chức năng các chân giao tiếp chế độ chuẩn 42
1.2.2 Chế độ mở rộng 42
1.3 Giao tiếp PC với thiết bị ngoại vi 43
2 Lập trình cho vi xử lý xuất dữ liệu qua cổng song song 45
Một số lỗi thường gặp 51
Bài 3: Giao tiếp vi xử lý với các bộ điều khiển 53
I Mục tiêu bài học 53
Yêu cầu vật tư, thiết bị 53
II Nội dung bài học 53
Trang 31 Động cơ một chiều 53
1.1 Cấu tạo động cơ một chiều 53
1.2 Phương pháp lựa chọn điều khiển động cơ 54
1.3 Sơ đồ nguyên lý mạch điều khiển động cơ một chiều 54
1.4 Lập trình ghép nối với bộ điều khiển động cơ một chiều 55
2 Động cơ bước 56
2.1Cấu tạo động cơ bước 56
2.1.1.Động cơ nam châm vĩnh cửu 56
2.1.2 Động cơ bước có từ trở thay đổi 56
2.1.3 Động cơ bước hổn hợp : 57
2.2 Đặc điểm chung của động cơ bước 60
2.3 Phương pháp điều khiển bước đủ và nửa bước 61
2.3.1 Phương pháp điều khiển bước đủ 61
2.3.2.Phương pháp điều khiển nửa bước 62
2.4 Lập trình điều khiển động cơ bước thông qua cổng song song 63
Bài 4: Hướng dẫn sử dụng phần mềm Pinnacle 52 viết chương trình cho vi điều khiển họ 8051 68
I Mục tiêu bài học 68
Yêu cầu vật tư, thiết bị 68
II Nội dung bài học 68
1 Hướng dẫn sử dụng phần mềm Pinnacle 52 68
1.1 Giới thiệu về phần mềm Pinnacle 52 68
1.2.Giao diện của Pinnacle 52 69
1.3 Các bước viết chương trình trên Pinnacle 52 70
2 Viết chương trình cho vi điều khiển 76
2.1 Giới thiệu Vi điều khiển 8051 76
2.1.1 Sơ đồ cấu trúc 77
2.1.2 Các thông số cơ bản 78
2.1.3 Tổ chức bộ nhớ của 8051 79
2.2 Sử dụng phần mềm Pinnacle 52 viết chương trình cho Vi điều khiển 83
Nạp chương trình cho MCS 85
Chọn Program_Unlock để nạp chương trình 88
Bài 5: Lập trình 8051 ghép nối với các bộ chỉ thị 91
Trang 4I Mục tiêu bài học 91
Yêu cầu vật tư, thiết bị 91
II Nội dung bài học 91
1 Lập trình điều khiển cổng làm chức năng vào/ ra 91
1.1 Giới thiệu về các cổng vào ra song song của vi điều khiển 8051 91
1.2 Lập trình cho các cổng của vi điều khiển làm chức năng đầu ra 91
1.3 Lập trình cho các cổng của vi điều khiển làm chức năng đầu vào 97
2 Lập trình ghép nối Led 7 đoạn 104
2.1.Giới thiệu về phương pháp hiển thị dữ liệu trên Led 7 đoạn theo phương pháp quét 104
2.2 Giới thiệu về các bộ timer của vi điều khiển 8051 109
2.2.1 Các thanh ghi điều khiển và trạng tháI của timer 110
2.2.2 Mô tả hoạt động của bộ Timer 112
2.3 Lập trình cho Timer của 8051 làm chức năng bộ đếm 113
2.4 Lập trình cho vi điều khiển ở chức năng bộ định thời 116
2.5 Lập trình điều khiển ngắt 119
2.5.1 Giới thiệu hoạt động của ngắt và các ngắt của vi điều khiển 119
2.5.2 Các thanh ghi điều khiển và trạng thái ngắt 120
2.5.3 Lập trình với ngắt Timer 121
2.5.4 Lập trình với ngắt ngoài 126
3 Giao tiếp vi điều khiển với LCD 16x2 131
3.1 Giới thiệu LCD 16x2 131
3.2 Hoạt động của LCD 132
3.2.1 Sơ đồ chân của LCD 133
3.2.2 Mô tả các chân của LCD 133
3.2.3 Các thành phần chức năng của LCD1602A 134
3.2.4 Đặc tính điện của chân giao tiếp 136
3.3 Lược đồ thời gian: 137
3.4 Lập trình cho vi điều khiển 89C51 giao tiếp với LCD 16x2 139
4 Giao tiếp vi điều khiển với Led ma trận 141
4.1 Giới thiệu Led ma trận 141
4.2 Phương pháp quét 143
4.2 Lập trình cho vi điều khiển 89C51 giao tiếp ma trận Led 144
Trang 5Bài 6: Lập trình 8051 ghép nối với các bộ chuyển đổi 146
I Mục tiêu bài học 146
Yêu cầu vật tư, thiết bị 146
II Nội dung bài học 146
1 Giới thiệu: 146
1.1 Lấy mẫu một tín hiệu tương tự 148
1.2 Định lý lấy mẫu 150
1.3 Lượng tử hóa tín hiệu biên độ liên tục 152
2 Giới thiệu các bộ chuyển đổi ADC, DAC thường dùng 154
2.1 Bộ chuyển đổi số tương tự sử dụng vi mạch DAC 0808 154
2.2 Sơ đồ mạch nguyên lý DAC0808 156
2.3 Viết chương trình cho vi điều khiển 89C51 chuyển đổi DAC 156
3 Giới thiệu ADC0809 159
3.1 Sơ đồ mạch nguyên lý ADC0809 161
Hình 6.10 Sơ đồ mạch nguyên lý ADC 0809 161
3.2 Lược đồ thời gian hoạt động của ADC0809 161
3.3 Viết chương trình cho vi điều khiển 8051 chuyển đổi ADC 162
Bài 7: Lập trình 8051 điều khiển động cơ điện 167
I Mục tiêu bài học 167
Yêu cầu vật tư, thiết bị 167
II Nội dung bài học 167
1 Kết nối bộ điều khiển động cơ một chiều 167
2 Lập trình điều khiển chiều quay động cơ một chiều 169
3 Lập trình điều khiển tốc độ động cơ một chiều 171
4 Lập trình ghép nối với bộ điều khiển động cơ bước 174
4.1 Sơ đồ nguyên lý mạch điều khiển động cơ bước 176
Hình 7.7 Sơ đồ mạch nguyên lý mạch 176
4.2 Ví dụ 176
Bài 8: Giao tiếp qua cổng nối tiếp (COM) 180
I Mục tiêu bài học 180
Yêu cầu vật tư, thiết bị 180
II Nội dung bài học 180
1 Cấu trúc cổng nối tiếp 180
1.1 Cấu tạo và phân bố các chân tín hiệu 180
Trang 61.3 Phương pháp truyền 183
1.4 Khung dữ liệu nối tiếp 184
2 Giao tiếp PC với PC 184
3 Giao tiếp PC với thiết bị ngoại vi 185
4 Lập trình cho vi điều khiển 8051 giao tiếp với PC điều khiển thiết bị ngoại vi sử dụng phần mềm Visual hoặc Delphi tạo ứng dụng và Pinnacle 52 lập trình cho 8051 186
4.1 Lập trình truy xuất trực tiếp cổng 186
4.2 Lập trình truy xuất gián tiếp thông qua driver 186
4.3 Các ví dụ cơ bản lập trình cho PC giao tiếp với thiết bị ngoại thông qua 8051 189
Tài liệu tham khảo 206
Trang 7Lời nói đầu
Các chip vi xử lý, vi điều khiển đang được ứng dụng rộng rãi trong các thiết bị điện, điện tử từ đơn giản đến phức tạp, trong công nghiệp cũng như dân dụng, từ các thiết bị văn phòng đến các khí tài quân sự Các hệ thống xây dựng trên các chip vi xử lý, vi điều khiển được sử rộng rãi do chúng có các đặc điểm
ưu việt như tính linh hoạt cao, mức độ tích hợp lớn và khả năng sản xuất hàng loạt với giá thành hạ
Môn học Vi xử lý là môn học cơ sở của các ngành Công nghệ Điện-Điện
tử, Công nghệ Kỹ thuật điện, Công nghệ Tự động Việc phổ biến của máy tính và các vi điều khiển với giá thành hạ đã tạo điều kiện cho sinh viên được tiếp cận với môn học này qua các bài tập thực hành
Trên cơ sở chương trình chi tiết môn học thực hành Vi xử lý đã được trường ĐHSPKT Nam Định phê duyệt, nhóm tác giả biên soạn giáo trình môn học thực hành Vi xử lý làm tài liệu giảng dạy cho học sinh, sinh viên các ngành Công nghệ Điện- Điện tử, Công nghệ Kỹ thuật điện, Công nghệ Tự động Giáo trình chú trọng giới thiệu phần ứng dụng bao gồm tổ chức phần cứng và phương pháp lập trình cho các hệ thực tế nhằm giúp cho học sinh, sinh viên nhanh chóng nắm được các kiến thức và kỹ năng cơ bản ứng dụng vi xử lý, vi điều khiển
Giáo trình được chia làm 8 bài và được sắp xếp như sau
Bài 1: Sử dụng phần mềm EMU8086 viết chương trình cho Vi xử lý 80x86
Bài 2: Lập trình giao tiếp vi xử lý với các bộ chỉ thị
Bài 3: Lập trình giao tiếp vi xử lý với các bộ điều khiển
Bài 4: Sử dụng phần mềm Pinnacle 52 viết chương trình cho vi điều khiển họ
8051
Bài 5: Lập trình ghép nối vi điều khiển họ 8051 với các bộ chỉ thị
Bài 6: Lập trình ghép nối vi điều khiển họ 8051với các bộ chuyển đổi ADC, DAC
Bài 7: Lập trình vi điều khiển họ 8051 điều khiển động cơ điện
Bài 8: Lập trình vi điều khiển họ 8051 giao tiếp với máy tính
Giáo trình được dùng làm tài liệu giảng dạy bậc đại học ngành Điện, Điện tử hoặc làm tài liệu tham khảo cho các ngành khác liên quan
Quá trình biên soạn chắc chắn không tránh được nhiều thiếu sót, các tác giả
Trang 8hơn Thư góp ý xin gửi về bộ môn Kĩ thuật Điện tử- khoa Điện-Điện tử- trường
Đại học Sư phạm Kỹ thuật Nam Định
Nhóm tác giả
Trang 9Bài 1: Sử dụng phần mềm EMU8086 viết chương
- Vận dụng làm các ví dụ, bài tập cho vi xử lý trên EMU8086
Yêu cầu vật tư thiết bị
- Máy tính cài đặt hệ điều hành Windows XP
xử lý và báo rằng chương trình đang chuẩn bị cài đặt, để tiếp tục bạn chon Next
Hình 1.1 Cửa sổ chào mừng của phần mềm cài đặt EMU8086
- Tiếp theo phần mềm đưa ra thông báo yêu cầu người sử dụng đọc kỹ trước khi
Trang 10Hình 1.2 Các thông tin sử dụng phần mềm
- Hộp thoại tiếp theo thông báo cho người cài đặt thiết lập đường dẫn cho thư mục mà chương trình sẽ cài đặt ra, bạn nên để mặc định và chọn Next
Hình 1.3 Thông báo lựa chọn đường dẫn cài đặt
- Hộp thoại kế tiếp báo chương trình đã sẵn sàng cài đặt, bạn tiếp tục chọn Install
Hình 1.4 Các thông tin cài đặt
Trang 11- Khi đó chương trình sẽ tiến hành cài đặt lên máy bạn
Hình 1.5 Tiến trình cài đặt
- Sau khi cài đặt xong chương trình hiện lên hộp thoại thông báo quá trình cài đặt
đã hoàn tất, để kết thúc chọn Finish
Hình 1.6 Thông báo kết thúc quá trình cài đặt
- Bắt đầu sử dụng chương trình chọn: Start/Program/Emu8086/emu8086
khi đó chương trình hiện lên hộp thoại
Hình 1.7 Yêu cầu cập nhật phần mềm
Trang 12Để tiếp tục chọn Later
- Đăng ký bản quyền phần mềm chọn About trên thanh công cụ, khi đó chương trình hiện lên hộp thoại
Hình 1.8 Thông tin bản quyền phần mềm
- Để nhập CD key bạn nháy chuột vào “Click here to enter the registration key ” lúc này chương trình đưa ra hộp thoại với hai dòng để nhập tên người sử dụng và mã bản quyền
- Khi đăng ký hoàn tất chương trình đưa lên hộp thoại cho biết phần mềm đã
được đăng ký cũng như phiên bản của phần mềm
1.2 Sử dụng phần mềm EMU8086
1.2.1 Khởi động chương trình và các menu của chương trình
- Khởi động chương trình chọn từ biểu tượng gọi tắt trên màn hình hoặc từ Start/Programs/EMU8086/EMU8086, khi đó chương trình hiện lên hộp thoại cho phép lựa chọn như sau
Trang 13Hình 1.9 Các tùy chọn làm việc với EMU8086
Các menu chính của chương trình
- Menu File:
+ New : cho phép mở bài mới dạng *.COM, *.EXE, dạng Bin và dạng Boot
+ Examples : cho phép mở các ví dụ có sẵn của chương trình
+ Open : cho phép mở các bài tập đã được ghi vào trong máy hay trên đĩa
+ Save : cho phép ghi lại chương trình hiện tại đang làm
+ Save as : cho phép ghi lại chương trình đang làm với tên khác hoặc đường dẫn khác đi
+ Export to HTML : cho phép bạn xuất file của chương trình đang làm thành file
có đuôi HTML
Hình 1.10 Menu FILE của chương trình
- Menu Edit:
Trang 14Hình 1.11 Menu EDIT của chương trình
+ Undo: phục hồi lại một lệnh mà bạn vừa thao tác
+ Redo: phục hồi lại một lệnh vừa thao tác về phía trước
+ Cut: xoá một đoạn chương trình được bôi đen
+ Copy: sao chép một đoạn chương trình được bôi đen
+ Paste: dán lại phần vừa thực hiện lệnh copy hay lệnh cut
+ Select all: lựa chọn toàn bộ chương trình (đánh dấu)
+ Find: tìm kiếm ký tự hay đoạn văn bản trong chương trình
+ Find next: tìm kiếm các ký tự tiếp theo từ vị trí con trỏ hiện hành
+ Replace: tìm kiếm một hay nhiều ký tự và thay thế nó bởi ký tự mới
+ Go to line: đưa con trỏ tới dòng được nhập từ bàn phím
Ngoài ra trong tap menu này còn một số tính năng khác
- Menu Bookmark: đánh dấu các đoạn chương trình đang viết
Hình 1.12 Menu BOOKMARK của chương trình
Trang 15- Menu Assembler: chứa các tính năng sau
Hình 1.13 Menu ASSEMBLER của chương trình
+ Compile: hợp dịch chương trình
+ Compile and load in the emulator: hợp dịch chương trình và nạp file chạy của chương trình vào vùng mô phỏng
+ Set output directory: đặt đường dẫn cho đầu ra
Hình 1.14 Menu EMULATOR của chương trình
+ Show emulator : cho phép quan sát của sổ mô phỏng của chương trình
+ Asssemble and load in the emulator: hợp dịch chương trình và tải chương trình vào vùng mô phỏng
- Menu math: cho phép thực hiện một số phép toán số học
Hình 1.15 Menu MATH của chương trình
+ Multi base calculator: cho phép quan sát kết quả của quá trình mô phỏng dưới dạng các hệ đếm
+ Base convertor : chuyển đổi các hệ đếm như hệ thập phân, nhị phân, hexa
Trang 16- Menu ASSCII codes: Cho phép quan sát mã ASSCII tương ứng của các ký
tự trên bàn phím máy tính và các ký tự đặc biệt khác Bạn có thể quan sát mã của
ký tự dưới dạng số Hexa hay thập phân bằng cách nháy chuột ra màn hình để thay đổi
Dạng Hexa:
Hình 1.16 Menu ASSCII của chương trình
- Menu Help:
Hình 1.17 Menu HELP của chương trình
Trợ giúp về cách sử dụng chương trình, tập lệnh 8086, các ngắt và một số bài tập mẫu
Trang 17b Các thanh công cụ của chương trình
+ New: mở bài mới
+ Open: mở bài đã có
+ Examples: mở các bài ví dụ có sẵn của chương trình
+ Save: ghi lại bài đang làm
+ Compile: hợp dịch chương trình
+ Emulate: chuyển chương trình sang chế độ mô phỏng
+ Calculator: quan sát kết quả dưới dạng các hệ đếm khác nhau
+ Convertor: chuyển đổi các hệ đếm
+ Option: tuỳ chọn các tính năng ứng dụng của chương trình
lý sử dụng một số phần mềm khác thì phải ta khai báo khung cho chương trình, phần mềm EMU8086 đã tạo kết cấu có sẵn ứng với các khung chương trình này
+ Chọn khung chương trình dạng COM (cho các ứng dụng nhỏ) Chọn mở bài mới và chọn vào tùy chọn COM
Trang 18Hình 1.18 Lựa chọn khung chương trình
Khi đó chương trình sẽ cho ta khung của chương trình dạng COM như sau:
Hình 1.19 Khung chương trình dạng COM
Viết nội dung chương trình chính vào vị trí được bôi đen “Add your code here”
+ Chọn khung chương trình dạng EXE (cho các ứng dụng từ nhỏ tới lớn) Chọn mở bài mới và chọn vào tùy chọn EXE
Trang 19Chương trình mở ra một file mới có giao diện như sau:
Hình 1.20 Khung chương trình dạng EXE
Viết nội dung chương trình chính vào vị trí được bôi đen “Add your code here”
Sau khi đã có được lựa chọn về cấu trúc khung của chương trình hợp ngữ cần làm cho ứng dụng ta sẽ tiến hành soạn thảo chương trình cho VXL:
Trang 20Khi tiến hành soạn thảo chương trình cần theo qui ước của lập trình hợp ngữ về cấu trúc của dòng lệnh, tên nhãn, lệnh, toán hạng, chú thích Chương trình chính, chương trình con phải viết đúng cấu trúc
Lưu ý: Việc soạn thảo chương trình có thể viết hoa hoặc viết thường nhưng nên thống nhất một cách viết trên một bài, không nên sử dụng phông tiếng Việt trong lúc soạn thảo Nên phân biệt giữa chương trình chính và chương trình con (bằng các chú thích, gạch nối, ) để dễ cho việc quan sát và sửa lỗi
Trước khi tiến hành soạn thảo nên ghi lại chương trình để tránh các rủi ro
do mất điện, treo máy Việc ghi lại bằng cách chọn Save trên menu hay trên thanh công cụ Mặc định đường dẫn của chương trình là C:\EMU8086\Mysource
Lưu ý: không nên đặt tên file dài quá 8 ký tự, không được có dấu chấm, dấu gạch giữa các ký tự Đây là qui ước của chương trình hợp dịch hợp ngữ
1.2.3 Dịch và liên kết chương trình
+ Hợp dịch chương trình:
Để tiến hành hợp dịch, trong Menu Assembler chọn compile trên thanh công cụ của chương trình Khi đó chương trình đưa ra hộp thoại yêu cầu ghi tên file chạy (.exe hoặc com) mà trình hợp dịch sẽ tạo ra
Hình 1.21 Lưu chương trình hợp dịch
Chọn đường dẫn và đánh tên cho ứng dụng muốn tạo ra (có thể để đường dẫn mặc định của chương trình và tên trùng với tên mà trước đó đã đặt cho file nguồn)
Trang 21Nếu chương trình không có lỗi về cú pháp (lỗi đánh máy, sai cấu trúc dòng lệnh) thì máy tính sẽ đưa ra thông báo quá trình hợp dịch thành công và dung lượng chương trình được tạo ra
sẽ biết nguyên nhân và vị trí lỗi
Ví dụ một chương trình viết sai cú pháp, khi hợp dịch chương trình máy tính đưa
ra thông báo:
Thông báo quá trình
hợp dịch thành công
Trang 22Hình 1.23 Thông báo lỗi trong quá trình hợp dịch
Máy đưa ra thông báo lỗi ở dòng thứ 15 và lỗi dòng lệnh là: “move ax,data” Dựa trên thông báo lỗi này có thể phán đoán dòng lệnh được nhập sai mã lệnh Để sửa lỗi này, nháy đúp vào thông báo lỗi đó, lúc này chương trình sẽ đánh dấu vệt
đen vào vị trí của dòng lệnh lỗi Sau khi sửa xong phải tiến hành hợp dịch lại trước khi có thể chạy chương trình hay mô phỏng chương trình
+ Đối với lỗi giải thuật: Với lỗi này máy tính không báo lỗi, hiện tượng khi mắc phải lỗi này là chương trình không chạy hoặc chạy không đúng yêu cầu mong muốn Nguyên nhân của lỗi này thường do sai giải thuật chương trình, sai
Trang 23cấu trúc chương trình Để tìm và sửa lỗi này cần chạy từng bước và quan sát kết quả thực hiện từng lệnh
1.2.4 Mô phỏng và chạy chương trình
Để mô phỏng bạn có thể chọn ngay công cụ RUN của chương trình khi tiến hành hợp dịch mà không gặp lỗi hoặc cũng có thể chọn công cụ Emulate trên thanh công cụ Sau khi lựa chọn chương trình đưa ra các cửa sổ sau:
Trang 24Hình 1.23 Cửa sổ EMULATOR trong quá trình mô phỏng
Cửa sổ này hiển thị các thanh ghi của vi xử lý như AX, BX, CX, DX, v.v , địa chỉ các lệnh trong bộ nhớ, mã nhị phân tương ứng của lệnh, các dòng lệnh và nhiều công cụ hỗ trợ cho việc mô phỏng khác
Chọn screen để quan sát màn hình
Hình 1.23 Màn hình mô phỏng
Trang 25Chọn source để quan sát mã nguồn của chương trình Chọn reset để khởi động lại quá trình mô phỏng
Chọn aux để quan sát:
- Bộ nhớ ( memory)
- Khối xử lý toán học (ALU)
Chọn var để quan sát các biến, hằng
Chọn debug để quan sát các lệnh của chương trình dưới dạng trình gỡ rối debug
Trang 26Chọn Stack để quan sát ngăn xếp
Chọn Flags để quan sát các cờ
Các công cụ hỗ trợ cho quá trình mô phỏng
Trang 27+ Load: nạp một file chạy vào chương trình mô phỏng
+ Reload: nạp lại một chương trình hiện hành
+ Step back: chạy lùi lại một bước
+ Single step: chạy tiến một bước
+ Run: chạy toàn bộ chương trình
+ Step delay ms: cho phép chọn tốc độ mô phỏng chương trình
Các công cụ ảo trợ giúp mô phỏng: để nhanh chóng kiểm tra hoạt động của chương trình khi kết nối phần cứng chương trình hỗ trợ kết nối các thiết bị đó dưới dạng ảo Mỗi thiết bị đều có một địa chỉ xác định tượng trưng cho thiết bị ngoại vi bên ngoài và khi lập trình để xuất hay nhập dữ liệu thì chúng ta cũng làm tương tự như lập trình cho đối tượng thật
Chọn Virtual Device:
Led 7 đoạn: có địa chỉ là port199
Máy in ảo có địa chỉ là port 130
Mô phỏng robot có địa chỉ port là 9
Trang 28Mô phỏng động cơ bước có địa chỉ là port 7
Mô phỏng quá trình kiểm soát nhiệt độ có địa chỉ là port 125-127
Mô phỏng hoạt động của mạch giao thông có địa chỉ là port 4
Trang 291.3 Ví dụ và bài tập cơ bản lập trình cho vi xử lý 8086
Các bước viết chương trình cho vi xử lý trên EMU8086
BưÍC 1: Xác định, phân tích yêu cầu của bài toán từ đó vẽ giải thuật của chương trình cho bài toán đó
B2: Khởi động chương trình EMU8086, mở bài mới, soạn thảo và ghi lại chương trình
B3: Hợp dịch và sửa lỗi chương trình nếu có
B4: Chạy chương trình hoặc thực hiện từng bước để quan sát kết quả thực hiện lệnh, sửa lỗi giải thuật
Ví dụ 1:
Viết chương trình cho vxl hiển thị dòng thông báo " chao mung cac ban den voi EMU8086" ra màn hình máy tính
Bước 1:
Phân tích: Để thực hiện được yêu cầu trên thì bạn cần phải nhớ lại về hàm ngắt
số 9 của ngắt INT 21h để hiển thị một chuỗi chữ ra màn hình
Đối với một chương trình lớn, tiến hành vẽ lưu đồ giải thuật, các chương nhỏ thì
có thể bỏ qua
Bước2: Viết chương trình
name "hien thi" ;ten chuong trinh
;Chuong trinh viet dang EXE
.MODEL small ;khai bao mo hinh bo nho su dung cho chuong trinh
Trang 30.DATA ;khai bao doan du lieu
du_lieu db "Chao mung cac ban den voi EMU8086 $"
.STACK 100 ;khai bao doan ngan xep
;***********************
.CODE ;khai bao doan ma
Main Proc ;bat dau chuong trinh chinh
;xac lap gia tri cho thanh ghi doan du lieu
mov ax,data
mov ds,ax
lea dx,du_lieu ;nap du lieu vao dx
mov ah,9 ;ngat xuat du lieu lam trong ds ra man hinh( du lieu bat ;buoc ;ket thuc=$)
end Main ;ket thuc chuong trinh
Sau khi soạn thảo chương trình, tiến hành dịch và chạy chương trình để kiểm tra kết quả
Bước2: Viết chương trình
Trang 31name "cong va tru" ;ten chuong trinh
;chuong trinh viet theo khung dang COM
org 100h ;khai bao dia chi bat dau chuong trinh
mov al, 5 ; nap gia tri cho al =5
mov bl, 10 ; nap gia tri cho al =10
; 5 + 10 = 15 (decimal) hoac hex=0fh hoac bin=00001111b add bl, al ;cong al voi bl
; 15 - 1 = 14 (decimal) hoac hex=0eh hoac bin=00001110b sub bl, 1 ;tru bl di 1
;hien thi ket qua ra man hinh duoi dang so nhi phan
;day la so nhi phan 8 bit do do toi su dung vong lap 8lan
;dua 1 bit co trong bl ra man hinh su dung len xoay trai
;roi kiem tra co c, c=1 thi in 1, c=0 thi in 0 su dung
;ngat 2 cua int 21h de dua tung ky tu
mov cx, 8 ;so bit can dua ra
lap_in:
mov ah,2 ;ngat hien thi tung ky tu
clc ;xoa co c
rol bl,1 ;xoay trai thanh ghi bl 1 vi tri
jc hien_thi1 ;kiem tra co c=1
mov dl,'0' ;hien thi bit0
;in them chu B sau cac so nhi phan
mov dl, 'b' ;nap ky tu can in
Trang 32int 21h ;ngat dua 1 ky tu ra man hinh
; ngat cho doi nhan phim:
Trang 33name "NHAP PHIM" ;ten chuong trinh
;Chuong trinh viet dang EXE
.DATA ;khai bao doan du lieu
du_lieu db "Hay nhap ky tu tu ban phim, nhap E de thoat$"
.STACK 100 ;khai bao doan ngan xep
.CODE ;khai bao doan ma
MAIN PROC
;dat cac thanh ghi doan
mov ax,data ;muon AX de nap dia chi du lieu vao thanh ghi doan du lieu mov ds,ax
lea dx,du_lieu ;nap du lieu vao dx
mov ah,9 ;ngat xuat du lieu lam trong ds ra man hinh( du lieu bat buoc
;ket thuc=$)
int 21h
lap:mov ah,1 ;ngat nhan ky tu tu ban phim
int 21h
cmp al,'E' ;so sanh ky tu nhap vao trong Al voi E de thoat
je thoat ;neu bang thi thoat
mov dl,al ;chuyen sang dl de hien thi ra man hinh
Trang 34+ Hiển thị kết quả ra màn hình
Bước 2: Viết chương trình
name "Cong hai so nguyen duong co mot chu so" ;ten chuong trinh
.model small ;khai bao quy mo su dung chuong trinh
.stack 100 ;khai bao doan ngan xep
.data ;khai bao doan du lieu
db "Ket qua a+b= $"
.code ;khai bao doan ma
Trang 35Main Proc ;bat dau chuong trinh chinh mov ax,@data
Trang 36main endp ;ket thuc chuong trinh chinh
end main ;ket thuc chuong trinh
Bài tập:
Bài tập 1: Viết chương trình để hiển thị tên của bạn trên màn hình
Bài tập 2: Cho vi xử lý thực hiện phép toán sau (15+255+75) *25 và in kết quả ra màn hình dạng số nhị phân
Bài tập 3: Viết chương trình cho vi xử lý thực hiện phép toán sau:
(15/5)+3*4 và in kết quả ra màn hình dưới dạng số hexa
Bài tập 4: Viết chương trình thực hiện nhân hai số tự nhiên từ 0-9 bất kỳ nhập vào từ bàn phím Hiển thị tích lên màn hình
Bài tập 5: Viết chương trình thực hiện cộng hai số tự nhiên từ 0-99 bất kỳ nhập vào từ bàn phím Hiển thị tổng lên màn hình
Trang 37Bài 2: Giao tiếp vi xử lý với các bộ chỉ thị
I.Mục tiêu bài học
- Sinh viên phân tích được sơ đồ phần cứng, kết nối phần cứng của mạch giao tiếp vi xử lý với các bộ thí nghiệm chỉ thị dùng led đơn, led 7 đoạn
- Lập trình cho vi xử lý xuất dữ liệu qua cổng song song của máy tính điều khiển các led đơn, led 7 đoạn
Yêu cầu vật tư, thiết bị
- Máy tính có cổng song song
- Phần mềm EMU8086
- Board mạch kết nối cổng song song
II.Nội dung bài học
1 Sơ đồ phần cứng
1.1 Cấu trúc cổng song song
1.1.1 Sơ đồ khối bộ giao tiếp điều khiển cổng song song
Hình 2.1 Sơ đồ giao tiếp điều khiển cổng song song
1.1.2 Nhóm các tín hiệu giao diện song song
Giao diện song song nối 8 bit thấp của bus dữ liệu với các thiết bị ngoại
vi Chín tín hiệu bus địa chỉ cùng với 2 tín hiệu /IOR, /IOW được dùng để xác
định các thanh ghi giao diện và chiều truyền giữ liệu Các tín hiệu giao diện
Trang 38song song được chia làm ba nhóm chính: dữ liệu (8 đường vào), trạng thái (5
đường vào) và điều khiển (4 đường ra)
Sơ đồ chân và mô tả các chân tín hiệu của cổng song song
Hình 2.2 Sơ đồ mô tả các chân của cổng song song
Các địa chỉ thanh ghi của cổng song song trên máy tính PC (Desktop PC)
Hình 2.3 Địa chỉ thanh ghi của cổng song song
Cổng song song bao gồm 8 đường dữ liệu, 4 đường điều khiển và 5 đường trạng thái Chúng được chia làm 3 thanh ghi cơ bản đó là : Thanh ghi dữ liệu (Data Registor), thanh ghi trạng thái (Status Registor) và thanh ghi điều khiển (Control Registor)
- Thanh ghi dữ liệu ( hai chiều ) :
1 14 2 15 3 16 4 17 5 18 6 19 7 20 8 21 9 22 10 23 11 24 12 25 13
Trang 39- Thanh ghi điều khiển :
- Thanh ghi trạng thái :
1.1.3 Các chế độ hoạt động của cổng song song
Các chế độ hoạt động của cổng song song được chia ra làm 5 chế độ hoạt động như sau:
- Chế độ tương thích (Compatibility) Chế độ tương thích truyền giữ liệu theo các giai đoạn sau :
- Máy chủ báo sẵn sàng nhận bằng cách đưa HostBusy về 0
- Thiết bị ngoại vi báo byte đầu tiên lên dây dữ liệu
- Thiết bị ngoại vi báo byte có giá trị bắng cách đặt PtrClk về 0
- Máy chủ đưa Hot Busy lên 1, báo đã nhận được byte và chưa sẵn sàng cho byte khác
- Thiết bị ngoại vi chứa PtrClklên 1 để báo cho máy chủ , máy chủ đưa HostClk lên 1 để trả lời
Bước 1 cho đến 5 được lặp lại cho các byte sau
- Chế độ Nibble
Chế độ nible là chế độ thường dùng nhất để nhận dữ liệu từ thiết bị ngoại vi về máy tính Chế độ này phối hợp với chế độ cơ bản thành một giao diện song song truyền dữ liệu hai chiều Giao diện cơ bản có 5 tín hiệu vào máy vi tính để báo trạng thái thiết bị ngoại vi Dùng các tín hiệu này, thiết bị ngoại vi có thể truyền một byte về máy vi tính qua hai chu kỳ, mỗi chu kỳ một nibble
- Chế độ Byte
Từ thế hệ máy PS/2 của IBM, bộ khuếch đại dữ liệu được ngắt mạch để dùng 8 tín hiệu dữ liệu theo chiều ngược lại (chiều vào) Chế độ này cho phép thiết bị
Trang 40ngoại vi truyền một lúc 8 bit về máy chủ , thay vì hai lần như chế độ nibble Chế
độ này có tốc độ gần bằng chế độ tương thích Chế độ byte còn được gọi là chế
độ cổng hai chiều cải tiến (enhanced bi-directional port )
- Chế độ EPP (Enhanced Parallel Port)
Phiên bản truyền cổng song song cải tiến EPP được các hãng Intel , Xircomva Zenith Data Systems thiết kế Phiên bản này được cài đặt trong các vi mạch Chipset của Intel trước khi chuẩn 1284 ra đời Chế độ EPP có bốn chu kỳ truyền dữ liệu:
- Chu kỳ dữ liệu
- Chu kỳ đọc dữ liệu
- Chu kỳ ghi địa chỉ
- Chu kỳ đọc địa chỉ
Chế độ EPP cần nhiều thanh ghi hơn và bổ sung thêm 3 thanh ghi (địa chỉ lệch
từ 3 đến 7) Địa chỉ các cổng này được tính bằng cách cộng địa chỉ lệch với địa chỉ cơ sở của cổng song song 378H (278H) Khi ghi dữ liệu ra cổng 37CH (27CH), phần cứng sẽ tự động quản lý các tín hiệu bắt tay của chu kỳ ghi Ghi lên các cổng cơ bản 378H - 37AH sẽ nhận được phản ứng của giao diện song song chuẩn SPP Chu kỳ đọc/ghi địa chỉ cũng được tiến hành khi ghi hoặc đọc cổng 37BH (27BH)
Các thanh ghi có địa chỉ lệch từ 5 đến 7 được các nhà sản xuất vi mạch SuperIO
sử dụng tuỳ ý Những thanh ghi này có thể được dùng làm cổng vào ra 16 hoặc
23 bit
Chế độ EPP ghi dữ liệu theo các giai đoạn sau :
- Chương trình thực hiện lệnh ghi ra thanh ghi dữ liệu EPP
- Tín hiệu WRITE xuống 0 và dữ liệu được chuyển ra đường dữ liệu
- Tín hiệu DATA STB xuống 0 trong khi WAIT cũng xuống 0
- Cổng EPP đợi tín hiệu nhận từ thiết bị ngoại vi (WAIT =1)
- Tín hiệu DATA STB lên 1 và chu kỳ kết thúc
- Chu kỳ đọc /ghi của bus ISA trong máy tính kết thúc
- Tín hiệu WAIT xuống 0 , báo chu kỳ tới có thể bắt đầu