Tài liệu về Xây dựng phần mềm.
Trang 1Ch−¬ng III x©y dùng phÇn mÒm
Biªn so¹n : L©m t¨ng §øc – Lª TiÕn Dòng –Bé m«Bé m«nnn T§H T§H
Trang 2Biên soạn : Lâm tăng Đức – Lê Tiến Dũng – Bộ môn TĐH Trang 69
Chương III xây dựng phần mềm
3.1 Chương trình MONITOR cho KIT
Do chương trình MONITOR của hệ thống phức tạp và khá lớn nên ta sẽ tổ chức thành nhiều module nhỏ ghép lại với nhau Mỗi module thực hiện mỗi chức năng riêng, các module trong chương trình:
+ Module thực hiện việc hiển thị LCD
+ Module quản lý bàn phím
+ Module quản lý việc đọc/ghi dữ liệu trong EEPROM và RAM
+ Module tạo thời gian trễ
+ Chương trình chính (Main)
+ Module điều khiển truy cập các thanh ghi đặc biệt và các ô nhớ bên trong chip
vi điều khiển chính
+ Module truyền thông giao tiếp với máy tính PC
MO nguồn của chương trình hệ điều hành được giới thiệu ở phần phụ lục của đồ
án
Sau đây là lưu đồ thuật toán của chương trình MONITOR :
Trang 3Lưu đồ thuật toán của module Main: khởi tạo các thiết đặt ban đầu cho KIT và các thiết bị ngoại vi, hiển thị màn hình 1
Bắt đầu
Khởi tạo các biến, các thiết lập ban đầu cho 8255 Khởi động LCD
Hiển thị MAIN MENU
Cài đặt các ngắt Cho phép ngắt ngoài 0 Cho phép ngắt nối tiếp
Hiển thị
Màn hình 1 EEPROMtrống?
Hiển thị Màn hình 2
Kết thúc
Key=F1?
Key=F2?
Key=F2?
Call Step Mode
Hiển thị màn hình 4 Call DEMO Prog.
Hiển thị màn hình 4 Call DEMO Prog.
Trang 4Biên soạn : Lâm tăng Đức – Lê Tiến Dũng – Bộ môn TĐH Trang 71
Lưu đồ các chương trình DEMO (Màn hình 4)
Bắt đầu
Byte đệm BUF = 1
Chạy Led đơn DEMO
Hiển thị màn hình 1 Xóa byte đệm bàn phím
Byte đệm BUF = 2
Chạy Led 7
đoạn DEMO
Byte đệm BUF = 3
Chạy Led ma trận DEMO
Byte đệm BUF = 4
Chạy Bàn phím, LCD DEMO
Byte đệm BUF = 5
Chạy ADC, DAC DEMO
Byte đệm BUF = 6
Chạy STEPPER DEMO
Byte đệm BUF = 7
Chạy RS232 DEMO
Byte đệm BUF = 18 (BSP)
Hiển thị màn hình 1
Byte đệm BUF = 18
Byte đệm BUF = 18
Byte đệm BUF = 18
Byte đệm BUF = 18
Byte đệm BUF = 18
Byte đệm BUF = 18
Byte đệm BUF = 18
Kết thúc
Trang 5Lưu đồ chương trình MONITOR chạy ở chế độ gỡ rối STEP MODE (Màn hình 3)
Bắt đầu
Khởi tạo các biến
Lưu các thanh ghi cần thiết
Giả lập CPU như ở trạng thái
RESET
Hiển thị Màn hình 3
(Các thanh ghi đặc biệt
-SFR, R0 -R7 )
Hiển thị gợi ý cho
các lệnh F1, F2, BSP
BUF = 16 (F1)
Xóa byte đệm bàn phím
BUF
Chờ và xử lý nhập
1 byte vào bộ
đệm BYTE1
BUF = 19 (ENTER)
In ra giá trị BIT cần xem
Hỏi có sửa không? -ENTER = không sửa
Chờ và xử lý nhập 1 BIT
YES (F1)
BUF =19 (ENTER)
Cập nhật vùng nhớ
Y
N
NO (ENTER) N Y
Trang 6Biên soạn : Lâm tăng Đức – Lê Tiến Dũng – Bộ môn TĐH Trang 73
BUF = 17 (F2)
P1.2 = 0 (STEP)
Chờ và xử lý nhập
2 byte vào bộ
đệm BYTE1, 2
BUF = 19 (ENTER)
In ra giá trị BYTE cần xem
Hỏi có sửa không? - ENTER
= không sửa
Chờ và xử lý nhập 1 BYTE
YES (F1)
BUF =19 (ENTER) Cập nhật vùng nhớ
NO (ENTER)
P1.2 =1 (STEP)
Delay chống rung N
Y
N
N N
RETI Y
Kết thúc
Trang 7Lưu đồ chương trình ngắt ngoài 0 (INT0) của bàn phím
3.2 Chương trình quản lí thiết bị
3.2.1 Chương trình quét bàn phím
Như đO trình bày ở chương 2, bàn phím sử dụng trong bộ KIT này gồm có 20 phím, 16 phím đầu tiên được sắp xếp theo kiểu ma trận và 4 phím cuối cùng được xếp theo một cột nối đất chung Trên bàn phím của bộ KIT, 4 phím trên một cột nối đất chung là các phím chức năng : F1, F2, BACK SPACE và ENTER Các phím từ 0-9 và A-F dùng để nhập liệu, các phím chức năng có tác dụng khác nhau tùy theo ngữ cảnh của màn hình, gợi ý tác dụng của các phím bấm hiển thị trên màn hình, điều này giúp việc làm quen và thí nghiệm trên KIT rất thuận tiện và dễ dàng cho người học, nhất là khi thí nghiệm ở chế độ debug
Lưu đồ thuật toán của chương trình quét bàn phím như sau:
Bắt đầu
Nhận mã phím Lưu vào byte đệm bàn phím
Kết thúc
Chân ngắt ngoài 1 = 1?
N
Y
Trang 8Biên soạn : Lâm tăng Đức – Lê Tiến Dũng – Bộ môn TĐH Trang 75
Lưu đồ thuật toán của chương trình quét bàn phím:
Bắt đầu
Xuất 1 ra tất cả
hàng và cột
Tất cả
hàng = 1?
N
Y
Hàng
1 = 1 ?
Hàng
2 = 1 ?
Hàng
3 = 1 ?
Hàng
4 = 1 ?
Xuất phím
16 (F1)
Xuất phím
17 (F2)
Xuất phím
18 (BSP)
Xuất phím
19 (ENTER) Nối đất hàng 1
Tất cả
cột = 1?
Nối đất hàng 2
Tất cả
cột = 1?
Nối đất hàng 3
Tất cả
cột = 1?
Nối đất hàng 4
Tất cả
cột = 1?
Quay từng bit của byte chứa các cột lên cờ C Gán DPTR cho địa chỉ hàng 1
C=0?
C=0?
C=0?
C=0?
Tra bảng Xuất mã phím
Quay từng bit của byte chứa các cột lên cờ C Gán DPTR cho địa chỉ hàng 2
Quay từng bit của byte chứa các cột lên cờ C Gán DPTR cho địa chỉ hàng 3
Quay từng bit của byte chứa các cột lên cờ C Gán DPTR cho địa chỉ hàng 4
Tra bảng Xuất mã phím
Tra bảng Xuất mã phím
Tra bảng Xuất mã phím
Tăng DPTR
Tăng DPTR
Tăng DPTR N
N N
N Tăng DPTR Y
Y
Y Y
Y
Y
Y
Y
Y
Y
Y
Y
Kết thúc
Trang 93.2.2 Chương trình điều khiển hiển thị LCD
Để cho LCD có thể hoạt động, đầu tiên ta phải khởi tạo LCD, báo cho nó biết số hàng, số ký tự hiển thị trên một hàng Các dữ liệu điều khiển lần lượt được chuyển vào Data Bus của LCD là 38H, 0EH, và 06H Sau các lệnh khởi tạo LCD này ta mới có thể hiển thị ký tự lên trên màn hình LCD
Các lưu đồ làm việc với LCD như sau:
Bắt đầu
Gửi lệnh điều khiển 38H
Gửi lệnh điều khiển 08H
Gửi lệnh điều khiển 01H
Gửi lệnh điều khiển 06H
Gửi lệnh điều khiển 0EH
Kết thúc
Khởi tạo LCD
Bắt đầu
Truy cập thanh ghi lệnh
RS =0
Kết thúc
Chờ LCD sẵn sàng làm việc
Chuyển sang chế độ
đọc dữ liệu R/W =1
Đưa 1 xung từ thấp lên cao ở chân E của LCD
để đọc dữ liệu
Bit D7 = 1?
Trang 10Biên soạn : Lâm tăng Đức – Lê Tiến Dũng – Bộ môn TĐH Trang 77
Bắt đầu
Đợi LCD sẵn sàng làm việc
Kết thúc
In một kí tự ra LCD
Đ−a dữ liệu ra các chân dữ liệu của LCD
Chọn thanh ghi dữ liệu - RS = 1
Chuyển sang chế
độ ghi - R/W = 0
Gửi 1 xung từ cao xuống thấp đến chân E của LCD để ghi dữ liệu
Bắt đầu
Đợi LCD sẵn sàng
nhận lệnh
Kết thúc
Gửi lệnh điều khiển ra LCD
Xuất mã lệnh
Truy cập thanh ghi
lệnh - RS = 0
Cho phép ghi ra
LCD - R/W =0
Đ−a 1 xung từ cao
xuống thấp ở chân
E để chốt dữ liệu
Trang 113.3 Chương trình giao tiếp máy tính
Chương trình giao tiếp giữa bộ KIT với máy tính được viết bằng ngôn ngữ Delphi Giao diện của chương trình trên máy tính PC như hình vẽ
- Chương trình cho phép nạp chương trình của người sử dụng vào EEPROM, sau đó sẽ chạy trên KIT, có thể chạy độc lập, tức không có sự điều khiển của
MONITOR - chế độ STEP hoặc chạy từng lệnh để debug và theo dõi giá trị bộ nhớ, các thanh ghi đặc biệt SFR, R0-R7 trên màn hình LCD của KIT
- Trên giao diện của chương trình có thể download file dạng Hexa của chương trình xuống bộ KIT và có thể upload nội dung bộ nhớ EEPROM của KIT
- Các nút chức năng trên giao diện :
Trang 12Biên soạn : Lâm tăng Đức – Lê Tiến Dũng – Bộ môn TĐH Trang 79
+ OPEN and COMPILE: Mở một file mO lệnh dạng hợp ngữ (*.asm) và biên dịch (Compile) thành file HEX hoặc file đO compile dưới dạng HEXA (*.hex) để nạp trực tiếp xuống KIT Kết quả compile được hiển thị trong cửa sổ Compile Log
+ OPEN Hex file: Mở một file mO lệnh đO được biên dịch dạng hexa (*.hex) và dịch ngược (Disasemble) thành file mO lệnh ASM (*.d51) Kết quả dịch ngược hiển thị trong cửa sổ ASM code, mO máy của bộ nhớ hiển thị trong cửa sổ Opcode Kết quả compile được hiển thị trong cửa sổ Compile Log
+ DOWNLOAD : Cho phép download file Hex được mở hoặc Compile từ file mO lệnh ASM xuống bộ nhớ của KIT
+ UPLOAD : Cho phép đọc nội dung chương trình của người sử dụng đO
được nạp vào bộ nhớ của KIT từ lần nạp trước
+ Erase EEPROM: Cho phép xóa EEPROM
Chương trình MONITOR được viết dưới dạng hợp ngữ (Assembly), ban đầu khi tham khảo có thể gây khó khăn cho người đọc tuy nhiên hợp ngữ làm cho người học
có thể hiểu rõ và nắm vững về cấu trúc phần cứng của họ vi điều khiển 8051 hơn như cách tổ chức bộ nhớ, cách thực hiện một ngắt, vị trí của các vector ngắt, các hoạt động
định thời, hiểu rõ vị trí bản đồ bộ nhớ, các thanh ghi đặc biệt SFR Ngoài ra khi sử dụng hợp ngữ ta không phải phụ thuộc vào các trình biên dịch hỗ trợ bằng ngôn ngữ bậc cao như C, Basic
Sau đây ta đi xây dựng các nội dung thí nghiệm cần thiết cho người học để qua
đó người học từng bước nắm rõ cấu trúc và cách lập trình cho họ vi điều khiển 8051