4.2 Bài toán 1 : Điều khiển 8 bit đầu ra số
Điều khiển 8 bit đầu ra số là một bài toán đơn giản nhằm giúp người học làm quen
với việc điều khiển vi mạch 8255 để gửi ra cổng một tín hiệu số.
Bài toán thực hiện việc xuất ra một tín hiệu số 8 bit (1 byte) và kết quả này được
hiển thị trên 8 đèn LED nhỏ tương ứng với 8 bit đL được bố trí trên bộ KIT, nếu 1 bit
bằng 1 (High) thì đèn tương ứng sẽ tắt và ngược lại.
4.3 Bài toán 2 : Điều khiển nhận đầu vào 8 bit số và gửi đến 8 bit đầu ra
Bài toán thực hiện việc điều khiển vi mạch 8255 qui định một cổng của nó làm
đầu vào nhận tín hiệu số và gửi tín hiệu đó đến một cổng ra khác.
4.4 Bài toán 3 : Điều khiển hiển thị tĩnh ma trận LED 8x8
Điều khiển hiển thi tĩnh ma trận LED là một bài toán điều khiển đơn giản ma
trận LED hiển thị các điểm LED có màu sắc khác nhau theo từng cột xen kẻ nhau, bài
toán này giúp ng
ời học hiểu rõ hơn cấu tạo của ma trận LED và làm quen với việc
điều khiển nó.
                
              
                                            
                                
            
 
            
                
121 trang | 
Chia sẻ: hachi492 | Lượt xem: 837 | Lượt tải: 1
              
            Bạn đang xem trước 20 trang tài liệu Giáo trình Kỹ thuật vi điều khiển, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
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 : 
Giáo trình môn Kỹ thuật Vi Điều Khiển Ch−ơng 3 : Xây dựng phần mềm 
 Biê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. 
- 80 -Giáo trình môn Kỹ thuật Vi Điều Khiển Ch−ơng 3 : Các bài tập thực hiện 
 Biên soạn : Lâm tăng Đức – Lê Tiến Dũng – Bộ môn TĐH Trang 80 
Ch−ơng IV 
Các bài tập thực hiện trên Kit 
 Biên soạn : Lâm tăng Đức – Lê Tiến Dũng –Bộ môn TĐH 
- 81 -Giáo trình môn Kỹ thuật Vi Điều Khiển Ch−ơng 3 : Các bài tập thực hiện 
 Biên soạn : Lâm tăng Đức – Lê Tiến Dũng – Bộ môn TĐH Trang 81 
Ch−ơng IV 
Các bài tập thực hiện trên Kit 
Với mục đích là đào tạo nên tất cả ch−ơng trình DEMO của KIT đều đ−ợc viết 
bằng hợp ngữ (Assembly), điều này giúp 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. Ngoài ra còn làm quen đ−ợc với cách lập 
trình không cấu trúc, khác với lập trình có cấu trúc bằng các ngôn ngữ bậc cao nh− C 
hay Basic, qua các bài thực hành. Cuối cùng ng−ời học có thể tự mình tối −u đ−ợc mL 
lệnh để tiết kiệm bộ nhớ, điều này là cần thiết khi dung l−ợng của ROM và RAM tích 
hợp sẵn trên chip của các vi điều khiển là không lớn. 
4.1 Các ví dụ về điều khiển chip mở rộng I/O 8255 sử dụng trên KIT 
Nh− đL tìm hiểu ở ch−ơng 2 về cấu trúc, các chế độ hoạt động của chip 8255, trong 
KIT này ta sử dụng 8255 làm chip mở rộng I/O hoạt động ở chế độ 0 – chế độ vào ra 
cơ bản. Khi 8255 làm việc ở chế độ này, các cổng A, B, CL, CU có thể đ−ợc lập trình 
làm đầu vào hoặc đầu ra. Nên nhấn mạnh rằng, ở chế độ 0 thì tất cả các bit hoặc làm 
đầu vào, hoặc làm đầu ra mà không thể điều khiển riêng rẽ từng bit nh− các cổng P0- 
P3 của 8051. 
Cấu trúc từ điều khiển (CW) ở chế độ này có khuôn dạng nh− hình 2.15 
4.1.1. Ví dụ 1: Xác định từ điều khiển của 8255 cho các cấu hình sau: 
 a) Tất cả các cổng A,B và C đều là các cổng đầu ra (ở chế độ 0). 
 b) PA làm đầu vào, PB - đầu ra, PCL - đầu vào và PCH - đầu ra 
 Giải: Từ hình 2.15 ta xác định đ−ợc 
 a) 10000000B = 80H 
 b) 10010001B = 91H 
- 82 -Giáo trình môn Kỹ thuật Vi Điều Khiển Ch−ơng 3 : Các bài tập thực hiện 
 Biên soạn : Lâm tăng Đức – Lê Tiến Dũng – Bộ môn TĐH Trang 82 
D7 D6 D5 D4 D3 D2 D1 D0 
Hình 2.15 Khuôn dạng từ điều khiển của 8255 (chế độ vào ra cơ sở) 
4.1.2. Ví dụ 2: Giả sử nh− ta có một chip 8051 đ−ợc nối với chip 8255 sao cho địa 
chỉ của các PORT và từ điều khiển của 8255 nh− sau: 
 8004H –PortA; 8005H – Port B; 8006H –PortC; 8007H –CW 
a) Tìm byte điều khiển để PA là cổng vào, PB, PC là cổng ra 
b) Viết một ch−ơng trình để lấy dữ liệu ở PA và gửi đến cổng B và C 
Giải: 
a) Dựa vào hình 2.15 ta có đ−ợc từ điều khiển CW = 10010000B = 90H 
b) Ch−ơng trình: 
; ################################################ 
mov A, #90H ; PA là cổng vào, PB, PC là cổng ra 
mov DPTR, #8007H ; CW 
movx @DPTR, A ; Xuất từ điều khiển 
Again: 
Chọn mode 
00 = Mode 0 
01 = Mode 1 
1x = Mode 2 
1 = I/O Mode 
0 = BSR 
Mode 
Cổng A 
1= Input 
0 = Output 
Cổng C 
PC7 – PC4 
1= Input 
0 = Output 
Cổng B 
1= Input 
0 = Output 
Cổng C 
PC3– PC0 
1= Input 
0 = Output 
Chọn mode 
0 = Mode 0 
1 = Mode 1 
Nhóm A Nhóm B 
- 83 -Giáo trình môn Kỹ thuật Vi Điều Khiển Ch−ơng 3 : Các bài tập thực hiện 
 Biên soạn : Lâm tăng Đức – Lê Tiến Dũng – Bộ môn TĐH Trang 83 
 mov DPTR, #8004H ; Địa chỉ PA 
 movx A, @DPTR ; Nhận dữ liệu từ PA 
 inc DPTR ; Địa chỉ của cổng PB 
 movx @DPTR, A ; Đ−a dữ liệu ra cổng PB 
 inc DPTR ; Địa chỉ của cổng PC 
 movx @DPTR, A ; Đ−a dữ liệu ra PC 
; ################################################# 
Sau khi đL hiểu rõ các thao tác làm việc với 8255 để giao tiếp với các thiết bị ngoại 
vi của KIT ta có tiến hành các bài thí nghiệm sau. 
4.2 Bài toán 1 : Điều khiển 8 bit đầu ra số 
Điều khiển 8 bit đầu ra số là một bài toán đơn giản nhằm giúp ng−ời học làm quen 
với việc điều khiển vi mạch 8255 để gửi ra cổng một tín hiệu số. 
Bài toán thực hiện việc xuất ra một tín hiệu số 8 bit (1 byte) và kết quả này đ−ợc 
hiển thị trên 8 đèn LED nhỏ t−ơng ứng với 8 bit đL đ−ợc bố trí trên bộ KIT, nếu 1 bit 
bằng 1 (High) thì đèn t−ơng ứng sẽ tắt và ng−ợc lại. 
4.3 Bài toán 2 : Điều khiển nhận đầu vào 8 bit số và gửi đến 8 bit đầu ra 
 Bài toán thực hiện việc điều khiển vi mạch 8255 qui định một cổng của nó làm 
đầu vào nhận tín hiệu số và gửi tín hiệu đó đến một cổng ra khác. 
4.4 Bài toán 3 : Điều khiển hiển thị tĩnh ma trận LED 8x8 
Điều khiển hiển thi tĩnh ma trận LED là một bài toán điều khiển đơn giản ma 
trận LED hiển thị các điểm LED có màu sắc khác nhau theo từng cột xen kẻ nhau, bài 
toán này giúp ng−ời học hiểu rõ hơn cấu tạo của ma trận LED và làm quen với việc 
điều khiển nó. 
4.5 Bài toán 4 : Điều khiển hiển thị động ma trận LED 8x8 
- 84 -Giáo trình môn Kỹ thuật Vi Điều Khiển Ch−ơng 3 : Các bài tập thực hiện 
 Biên soạn : Lâm tăng Đức – Lê Tiến Dũng – Bộ môn TĐH Trang 84 
Điều khiển hiển thị động ma trận LED là một bài toán phức tạp hơn bài toán hiển 
thị tĩnh ở trên. Nội dung của bài toán là thực hiện việc quét liên lục theo từng dòng của 
ma trận LED để hiển thị các chữ số trong hệ Hexa từ 0-9.. đến A-F lên trên bảng LED. 
4.6 Bài toán 5 : Điều khiển ADC0809 và DAC0808 
Với ADC0809: bài toán thực hiện việc chuyển đổi tín hiệu Analog ở một trong 8 
kênh đầu vào thành tín hiệu số 8 bit ở đầu ra của ADC0809. Sau đó đọc tín hiệu số đL 
chuyển đổi này hiển thị lên LCD. ở phần này trên KIT còn trang bị sẵn một cảm biến 
nhiệt độ, bài toán thí nghiệm để đo nhiệt độ đ−ợc thực hiện khi ta bật nút thứ 4 của DIP 
SWITCH để nối tín hiệu đầu ra của LM35 đến kênh đầu vào 4 của ADC0809, nhiệt độ 
phòng cũng đ−ợc hiển thị trên LCD. 
Với DAC0808: bài toán thực hiện chuyển đổi tín hiệu số 8 bit thành tín hiệu 
t−ơng tự có dải 0 -10V ở đầu ra của DAC0808, tín hiệu này có thể đ−a vào máy hiện 
sóng (Oscilloscope) để xem kết quả đối với ch−ơng trình tạo sóng (sin) hoặc có thể đo 
bằng đồng hồ bình th−ờng nếu chỉ tạo ra ở đầu ra 1 giá trị điện áp không đổi. 
4.7 Bài toán 6 : Điều khiển động cơ b−ớc và động cơ 1 chiều 
Bài toán thực hiện việc điều khiển động cơ b−ớc quay, thay đổi tốc độ, đảo chiều, 
dừng động cơ. Ch−ơng trình sử dụng 4 đầu vào xung để làm các phím làm thay đổi các 
trạng thái trên của động cơ b−ớc. 
* Th−ờng các cuộn dây của độngcơ b−ớc đ−ợc xác định theo màu của các dây, 
tuy nhiên đối với một động cơ b−ớc bất kỳ ta có thể dùng đồng hồ để xác định các cuộn 
dây nh− hình vẽ, ở đây trình bày cách xác định cho các động cơ có 5, 6 dây 
1. Dùng đồng hồ để xác định đầu Common: dùng đồng hồ để ở thang đo trở, đo 
trở giữa các cặp dây, đầu Common là đầu có trở giữa nó các đầu khác bằng 1/2 
điện trở của các đầu khác với nhau. 
- 85 -Giáo trình môn Kỹ thuật Vi Điều Khiển Ch−ơng 3 : Các bài tập thực hiện 
 Biên soạn : Lâm tăng Đức – Lê Tiến Dũng – Bộ môn TĐH Trang 85 
2. Xác định thứ tự các cuộn dây bằng cách cấp nguồn vào đầu Common và nối 
đất 1 trong 4 dây còn lại, đồng thời nối đất 1 trong 3 dây còn lại xem phản ứng 
(chiều quay) của động cơ và đánh dấu thứ tự cho nó nh− trong bảng sau: 
Nối mass một đầu, đánh dấu nó là đầu 4 
Giữ nguyên nó, nối mass tiếp lần l−ợt một trong 3 dây còn lại 
Nếu động cơ quay theo chiều kim đồng hồ, đó là cuộn 3 
Nếu động cơ quay ng−ợc chiều kim đồng hồ, đó là cuộn 1 
Dây không có phản ứng gì cả là cuộn 2 
Khi biết đ−ợc thứ tự các cuộn dây, ta kích xung theo thứ tự đó động cơ sẽ chạy 
Ví dụ một đoạn ch−ơng trình nh− sau, giả sử 4 đầu của động cơ đ−ợc 4 bit P1.0 –
P1.3 của 8051 điều khiển: 
; ################################ 
ORG 0000H 
 MOV R3,#00000011B 
- 86 -Giáo trình môn Kỹ thuật Vi Điều Khiển Ch−ơng 3 : Các bài tập thực hiện 
 Biên soạn : Lâm tăng Đức – Lê Tiến Dũng – Bộ môn TĐH Trang 86 
 MOV A, R3 
BACK: MOV P1,A 
 RL A ; Quay thanh ghi A 
 ACALL DELAY 
 SJMP BACK 
; Tốc độ quay có thể thay dổi bằng thay đổi thời gian Delay 
DELAY: 
 MOV R1,#50 
H1: MOV R2 ,#255 
H2: DJNZ R2,H2 
 DJNZ R1,H1 
 RET 
 END 
 ;########################### 
4.8 Bài toán 7 : Giao tiếp với máy tính bằng giao thức RS232 sử dụng cổng nối 
tiếp. Ch−ơng trình DEMO chạy trên PC đ−ợc viết bằng Delphi 7, có sử dụng th− viện 
CPort 3.0 hỗ trợ giao tiếp. 
Các h−ớng dẫn sử dụng có thể xem trực tiếp phần trợ giúp của ch−ơng trình. 
Giáo trình môn Kỹ thuật Vi Điều Khiển Ch−ơng 5 : Lắp ráp, thử nghiệm Kit 
 Biên soạn : Lâm tăng Đức – Lê Tiến Dũng – Bộ môn TĐH Trang 87 
Ch−ơng V 
LắP RáP & THử NGHIệM KIT 
 Biên soạn : Lâm tăng Đức – Lê Tiến Dũng –Bộ môn TĐH 
Giáo trình môn Kỹ thuật Vi Điều Khiển Ch−ơng 5 : Lắp ráp, thử nghiệm Kit 
 Biên soạn : Lâm tăng Đức – Lê Tiến Dũng – Bộ môn TĐH Trang 88 
Ch−ơng V 
LắP RáP & THử NGHIệM KIT 
5.1 Sơ đồ bố trí thiết bị 
Các thiết bị bố trí trên mạch in theo từng khối rõ ràng và hợp lí, khối CPU nằm ở 
vị trí trung tâm của bộ KIT, khối hiển thị LCD nằm ở góc trái, ngay bên cạnh bàn phím 
để dễ quan sát. Các đầu vào/ra số, t−ơng tự đ−ợc bố trí ở phía trên của mạch in để dễ 
ghép nối với các thiết bị ngoại vi bên ngoài. Các công tắc, nút nhấn điều khiển, mô 
phỏng đầu vào đ−ợc bố trí ở phía d−ới gần với ng−ời sử dụng để dễ dàng thao tác. Phía 
bên trái của mạch in là các đầu cắm nguồn và các cổng ghép nối với máy tính. 
Với mục đích là đào tạo nên các khối đ−ợc tách ra thành các BOARD nhỏ đ−ợc 
bố trí xung quanh KIT gồm các khối nh−: 
. Khối làm việc với LED đơn, LED 7 đoạn, LED ma trận 
. Khối làm việc với động cơ b−ớc, động cơ 1 chiều, các đầu vào ra xung, số 
. Khối làm việc với các bộ chuyển đổi ADC, DAC, đo nhiệt độ môi tr−ờng bằng 
LM35. 
Các khối này giao tiếp với KIT qua 1 cáp dữ liệu dùng cho máy tính (loại DIP 40 
chân) có chuẩn các đ−ờng dữ liệu, các đ−ờng điều khiển và nguồn trên SOCKET này 
có dạng nh− hình 5.1 
 . 8 chân (1, 3, 5, 7 9, 11, 13, 15) làm các chân dữ liệu, đ−ợc nối dến các chân dữ 
liệu của 8255 
. 2 chân tiếp theo A0, A1 là chân chọn cổng của 8255 
. Các chân từ 31 – 40 các các chân nguồn +/-5V, +/-12V 
. Chân 25 đ−ợc dành cho các chân chọn chip 
Nhờ tổ chức BUS này nên ng−ời sử dụng có thể tự thiết kế các BOARD mở rộng 
cho các thiết bị ngoại vi khác với mục đích riêng của mình. 
Giáo trình môn Kỹ thuật Vi Điều Khiển Ch−ơng 5 : Lắp ráp, thử nghiệm Kit 
 Biên soạn : Lâm tăng Đức – Lê Tiến Dũng – Bộ môn TĐH Trang 89 
Cũng với mục đích tạo tính linh hoạt và tính có khả năng mở rộng của KIT, trên 
KIT còn chừa ra một SOCKET trống để có thể cắm thêm 1 module ngoại vi khác. 
Giới thiệu các nút ấn và công tắc: 
Công tắc SELECT ở ngay bên trên của bàn phím có chức năng cho phép ng−ời sử 
dụng lựa chọn thực thi ch−ơng trình ở bộ nhớ trong hoặc bộ nhớ ngoài của chip vi điều 
khiển. Công tắc này bố trí ở vị trí mà các động tác vô tình của ng−ời học ít chạm phải, 
không gây gián đoạn ch−ơng trình khi chạy ở chế độ debug , nó chỉ đ−ợc thiết đặt ở 
đầu các lần thí nghiệm. 
Công tắc ở khối mạch điều khiển động cơ b−ớc và dộng cơ 1 chiều của bộ KIT 
cho phép ng−ời sử dụng lựa chọn loại động cơ b−ớc để điều khiển là loại có điện áp 
nguồn cấp 12V hoặc loại có điện áp nguồn cấp 5V. Đây là công tắc tự duy trì, ấn 
xuống thì nguồn là 12V, nhả ra thì nguồn cấp là 5V. 
Các đ−ờng
chọn chip
-5V
VCC
GND
-12V
12V
BUS SOCKET- 8255
1 2
3 4
5 6
7 8
9 10
11 12
13 14
15 16
17 18
19 20
21 22
23 24
25 26
27 28
29 30
31 32
33 34
35 36
37 38
39 40
LED 7 DOAN, LED MATRIX 8X8
TO BOARD NGOAI VI 3
D2
D1
D0
D5
D4
D3
VCC
D6
GND
-5V
-12V
12V
/RD
A0
A1
/WR
/CS_8255_MATRIX_LED
D7
/CS_8255_7SEG_LED
BUS
Hình 5.1. Sơ đồ các chân của BUS chung 
Giáo trình môn Kỹ thuật Vi Điều Khiển Ch−ơng 5 : Lắp ráp, thử nghiệm Kit 
 Biên soạn : Lâm tăng Đức – Lê Tiến Dũng – Bộ môn TĐH Trang 90 
Nút RESET cho phép ta RESET lại bộ kit ở trạng thái nh− khi mới bật nguồn, 
cũng đ−ợc bố trí ở những nơi ít khi bị vô tình chạm phải. 
Sơ đồ bố trí các khối trên mạch in nh− hình 4.1 và sơ đồ bố trí linh kiện cụ thể 
đ−ợc thể hiện ở hình 4.2. 
5.2 Lắp ráp, thử nghiệm 
Sau khi lập sơ đồ bố trí các khối, các linh kiện cụ thể trên mạch in, ta tiến hành 
đi dây, chế tạo mạch in và tiến hành lắp đặt các linh kiện lên mạch in. Toàn thể mạch 
in sau khi đo lắp đặt linh kiện đ−ợc thể hiện nh− ở hình 4.3 (ảnh của bộ KIT). 
Sản phẩm sau khi đo thiết kế và lắp ráp thành công, ta tiến hành nạp ch−ơng trình 
Monitor để điều hành toàn bộ các hoạt động của bộ KIT. Sau đó chạy thử nghiệm các 
ch−ơng trình trên bộ KIT để kiểm tra hoạt động của bộ KIT. Các ch−ơng trình chạy thử 
nghiệm trên bộ KIT nh− sau: 
 + Lập trình từ bàn phím bằng mo máy để hiển thị trạng thái bằng các đèn LED, 
điều khiển vào/ra số - t−ơng tự, hiển thị ma trận LED. 
 + Lập ch−ơng trình từ máy tính, biên dịch thành file Hexa và nạp xuống bộ KIT 
để cho hiển thị trên ma trận LED các số chạy từ 0,1,2,... đến ..,E,F với các màu khác 
nhau. 
 + Lập trình điều khiển động cơ b−ớc sử dụng các đầu vào xung nh− các phím 
nhấn để thay đổi trạng thái hoạt động của động cơ b−ớc. 
Qua kết quả chạy thử các ch−ơng trình thử nghiệm trên cho thấy bộ KIT hoạt 
động chính xác đúng theo ch−ơng trình điều khiển và có tính ổn định, linh hoạt cao. 
5.3 ảnh bộ KIT 
ảnh bộ KIT sau khi đo lắp ráp nh− hình 4.3 
Giáo trình môn Kỹ thuật Vi Điều Khiển Ch−ơng 5 : Lắp ráp, thử nghiệm Kit 
 Biên soạn : Lâm tăng Đức – Lê Tiến Dũng – Bộ môn TĐH Trang 91 
Hình 5.3a ảnh bộ KIT 
Giáo trình môn Kỹ thuật Vi Điều Khiển Ch−ơng 5 : Lắp ráp, thử nghiệm Kit 
 Biên soạn : Lâm tăng Đức – Lê Tiến Dũng – Bộ môn TĐH Trang 92 
Hình 5.3b ảnh bộ KIT 
Giáo trình môn Kỹ thuật Vi Điều Khiển Ch−ơng 61 :Phần phụ lục 
 Biên soạn : Lâm tăng Đức – Lê Tiến Dũng –Bộ môn TĐH Trang 93 
Ch−ơng VI 
phụ lục 
6.1 H−ớng dẫn sử dụng KIT 
Ng−ời học phải nắm vững bản đồ bộ nhớ của KIT sau: 
Địa chỉ Thiết bị Ghi chú 
0000h - 1FFFh EEPROM Chứa ch−ơng trình Monitor 
4000h - 7FFFh RAM Chứa ch−ơng trình ứng dụng 
8000h - 8003h 8255 (1) 
8000h - PortA : Điều khiển LCD. 
8001h - PortB : Data bus của LCD. 
8002h - PortC : Nhận m/ của bàn phím. 
8003h - CW : Thanh ghi điều khiển. 
8004h - 8007h 8255 (5) 
8004h - PortA: Điều khiển cấp nguồn cho các Anot chung 
của LED matrix (các hàng). 
8005h - PortB: Điều khiển đèn màu xanh của LED matrix 
(các cột xanh). 
8006h - PortC: Điều khiển đèn màu đỏ của LED matrix 
(các cột đỏ). 
8007h - CW: Thanh ghi điều khiển. 
8008h - 800Bh 8255 (2) 
8008h - PortA : Đ−ờng Data của ADC0809. 
8009h - PortB : Đ−ờng Data của DAC0808. 
800Ah - PortC : Điều khiển ADC0809. 
800Bh - CW : Thanh ghi điều khiển. 
800Ch - 800Fh 8255 (3) 
800Ch - PortA : Đầu vào Digital. 
800Dh - PortB : Điều khiển động cơ b−ớc(PB0-PB3) và 
động cơ một chiều (PB4 - PB5). 
800Eh - PortC : 4 đầu vào xung dạng nút ấn (PC4-
PC7), 4 đầu vào cho các thiết bị ngoài nh− encoder (PC0 - 
PC3). 
800Fh - CW : Thanh ghi điều khiển. 
C000h - C003h 8255 (4) 
C000h - PortA : Hiển thị 8 LED đơn. 
C001h - PortB : Hiển thị 2 LED 7 thanh (trái). 
C002h - PortC : Hiển thị 2 LED 7 thanh (phải). 
C003h - CW : Thanh ghi điều khiển. 
C004h – C007h 8255-EX BUS mở rộng dự trữ, có thể gắn thêm 1 module khác 
Bảng 2.1 Sắp xếp bộ nhớ và cách phân địa chỉ cho các thiết bị ngoại vi của KIT 
Giáo trình môn Kỹ thuật Vi Điều Khiển Ch−ơng 61 :Phần phụ lục 
 Biên soạn : Lâm tăng Đức – Lê Tiến Dũng –Bộ môn TĐH Trang 94 
Sau khi đ/ nắm vững bản đồ bộ nhớ, một số l−u ý cần phải nhớ khi thí nghiệm với KIT 
nh− sau: 
- Nếu nạp ch−ơng trình vào KIT để chạy ở chế độ "Ch−ơng trình ng−ời sử dụng", tức 
chạy độc lập với ch−ơng trình MONITOR quản lý KIT thì ch−ơng trình của ng−ời 
học phải bắt đầu ở địa chỉ 00H, tức bắt đầu ch−ơng trình bằng lệnh ORG 0. Sau khi 
KIT báo nạp hoàn tất thì ấn công tắc MODE SELECT để ở trạng thái hở (nhô lên), 
tiếp đó bấm nút reset để bắt đầu chạy ch−ơng trình của mình. ở trạng thái này thì 
tất cả các tài nguyên phần cứng và các thiết bị ngoại vi của KIT đều đ−ợc phép sử 
dụng mà không có một giới hạn nào. 
- Nếu nạp vào để chạy ở chế độ DEBUG - gỡ rối, chạy và xem kết quả các vùng nhớ 
sau mỗi lệnh thì: 
o Ch−ơng trình phải bắt đầu ở vị trí 4000H (vị trí khởi đầu của bộ nhớ RAM). 
Thực hiện bằng lệnh ORG 4000H. 
o Các vector ngắt phải đ−ợc cộng thêm 4000H. Cụ thể nh− sau: 
Nguồn ngắt Cờ 
Địa chỉ vector ngắt ở 
chế độ bình th−ờng 
Địa chỉ vector ngắt ở 
chế độ DEBUG 
Reset hệ thống RST 0000H 4000H 
Ngắt ngoài 0 IE0 0003H 4003H 
Bộ định thời 0 TF0 000BH 400BH 
Ngắt ngoài 1 IE1 0013H 4013H 
Bộ định thời 1 TF1 001BH 401BH 
Port nối tiếp RI or TI 0023H 4023H 
Bộ định thời 2 TF2 or EXF2 002BH 402BH 
Giáo trình môn Kỹ thuật Vi Điều Khiển Ch−ơng 61 :Phần phụ lục 
 Biên soạn : Lâm tăng Đức – Lê Tiến Dũng –Bộ môn TĐH Trang 95 
o Ngoài ra ng−ời học còn không đ−ợc sử dụng ngắt ngoài 1 đ/ đ−ợc thiết kế để 
phục vụ chế độ DEBUG. Còn đối với ngắt ngoài 0 nh− ở ch−ơng 2 đ/ giới 
thiệu, phục vụ giao tiếp với bàn phím của KIT. 
o Vùng nhớ RAM nội 32 byte từ 7FH-5FH không sử dụng, tuy nhiên 128 byte 
RAM nội đ−ợc định địa chỉ gián tiếp còn lại và 32 K-Byte RAM ngoài đ−ợc 
sử dụng thoải mái. 
Các h−ớng dẫn cụ thể bằng hình ảnh của KIT sẽ đ−ợc trình bày ở phần trợ giúp của 
ch−ơng trình chạy trên môi tr−ờng Windows đi kèm theo KIT, ch−ơng trình hỗ trợ biên 
dịch và dịch ng−ợc các file ch−ơng trình dạng hợp ngữ, nạp và xóa bộ nhớ EEPROM của 
KIT và một số bài ví dụ của ch−ơng trình nh− bài 7, thí nghiệm về "Truyền thông nối 
tiếp"... 
Sau đây sẽ là các khai báo mẫu của các ch−ơng trình chạy đ−ợc trên KIT cũng nh− ch−ơng 
trình MONITOR và các ví dụ. 
6.2 Các khai báo về địa chỉ các hằng và biến số sử dụng trong ch−ơng trình 
MONITOR và trong các ví dụ DEMO của KIT 
; ################################################################## 
; CAC KHAI BAO 
; ################################################################## 
; Khai bao dia chi cua cac 8255 
; 8255-1 
LCD_CONTROL EQU 8000H ; PA: Cac tin hieu dieu khien cua LCD 2408 
 ; PA0 = LCD_RS; PA1 = RW; PA2=E1; PA3 = E2 
LCD_DATA EQU 8001H ; PB: BUS data cua LCD 2408 
KEYPAD EQU 8002H ; D0-D6 lam bus nhan ma phim 
CW1 EQU 8003H ; Tu dieu khien CW cua 8255-1 
; 8255-5 
MATRIX_LED_ANOD EQU 8004H ; Cac hang`, tuc cac anod chung cua led ma tran 
MATRIX_LED_G EQU 8005H ; Cac cot xanh cua LED ma tran 
MATRIX_LED_R EQU 8006H ; Cac cot do cua LED ma tran 
CW5 EQU 8007H ; Tu dieu khien CW cua 8255-5 
; 8255-2 
ADC_DB EQU 8008H ; Bus du lieu cua ADC0809 
Giáo trình môn Kỹ thuật Vi Điều Khiển Ch−ơng 61 :Phần phụ lục 
 Biên soạn : Lâm tăng Đức – Lê Tiến Dũng –Bộ môn TĐH Trang 96 
DAC_DB EQU 8009H ; Bus du lieu cua DAC0808 
ADC_CONTROL EQU 800AH ; Cac tin hieu dieu khien ADC0809 
CW2 EQU 800BH ; Tu dieu khien CW cua 8255-2 
; 8255-3 
DIGITAL_INPUT EQU 800CH ; Dau vao so 
DC_STEPPER EQU 800DH ; Dieu khien dong co buoc (PB0-PB3), 
 ; dong co 1 chieu (PB4-PB7) 
PULSE_INPUT EQU 800EH ; 4 dau vao xung = nut(PC4-PC7), 
 ; 4 tu cac nguon phat xung(PC0-PC3) 
CW3 EQU 800FH ; Tu dieu khien CW cua 8255-3 
;8255-4 
LED_DON EQU 0C000H ; Dieu khien hien thi 8 LED don 
LED_7_DOAN_12 EQU 0C001H ; Dieu khien hien thi 2 LED 7 doan 1, 2 (ben trai') 
LED_7_DOAN_34 EQU 0C002H ; Dieu khien hien thi 2 LED 7 doan 3, 4 (ben phai') 
CW4 EQU 0C003H ; Tu dieu khien CW cua 8255-4 
; Quy uoc cach dat ten hang` cua tu dieu khien nhu sau: CWx voi x la STT cua 8255 
; 011 thu tu cac so la: PA, PB, PC; 0: dau ra, 1: dau vao 
CW_011 EQU 10001011B 
CW_000 EQU 10000000B 
CW_100 EQU 10010000B 
CW_101 EQU 10011001B 
; ROM - RAM 
EEPROM_ADDR EQU 0000H ; Dia chi bat dau cua EEPROM - 8K - ket thuc o 1FFFH 
RAM_ADDR EQU 4000H ; Dia chi bat dau cua RAM - 32K - ket thuc o 7FFFH 
; Dia chi cac dong` cua LCD 2408 
DONG1 EQU 0080H 
DONG2 EQU 0098H 
DONG3 EQU 00B8H 
DONG4 EQU 00D8H 
; Chan ngat ngoai o che do debug 
CHAN_NGAT_INT0 EQU P3.2 
; Ma cac phim chuc nang 
KEY_F1 EQU 16 
KEY_F2 EQU 17 
KEY_BS EQU 18 
Giáo trình môn Kỹ thuật Vi Điều Khiển Ch−ơng 61 :Phần phụ lục 
 Biên soạn : Lâm tăng Đức – Lê Tiến Dũng –Bộ môn TĐH Trang 97 
KEY_ENTER EQU 19 
; RAM danh cho xy ly cua chuong trinh MONITOR 
ProgRamAddr EQU 7FH 
E EQU ProgRamAddr ; De chon lam viec voi nua man hinh 1 hay 2, 
 tuong ung E =1, 2 
KEY EQU ProgRamAddr - 1 ; Byte dem. cua ban phim, luu gia tri phim 
 nhan ve, cap nhat bang ngat 
So_Man_Hinh EQU ProgRamAddr - 2 
LED7Doan1 EQU ProgRamAddr - 3 
LED7Doan2 EQU ProgRamAddr - 4 
LED7Doan3 EQU ProgRamAddr - 5 
LED7Doan4 EQU ProgRamAddr - 6 
; RAM lam vung dem cho qua trinh nap EEPROM tu PC 
StartAddrH EQU ProgRamAddr - 8; Byte cao cua dia chi can ghi den' cua goi du lieu 
StartAddrL EQU ProgRamAddr - 9; Byte thap cua dia chi can ghi den' cua goi du lieu 
; ################################################################## 
; KET THUC CAC KHAI BAO 
; ################################################################## 
6.3 Ch−ơng trình quét bàn phím 
Ch−ơng trình này đ−ợc nạp cho 1 chip vi điều khiển loại 20 chân của ATMEL 
là AT89C2051 
; ########################################################## 
; Chuong trinh quet ban phim 4x4 
; Su dung P1 de giao tiep voi ban phim 
; P1.0 - P1.3 noi voi cac hang lan luot 1 2 3 4 
; P1.4 - P1.7 noi voi cac cot lan luot 1 2 3 4 
; ########################################################## 
ORG 0000H 
; Truoc het ta doc cac hang 1-4, cac phim chuc nang, da duoc noi dat san 
 mov P3, #0FFH 
 call Delay 
 mov P3, #00H 
 call Delay 
 mov P3, #0FFH 
Start: 
Giáo trình môn Kỹ thuật Vi Điều Khiển Ch−ơng 61 :Phần phụ lục 
 Biên soạn : Lâm tăng Đức – Lê Tiến Dũng –Bộ môn TĐH Trang 98 
 mov P1, #11111111B ; Dat tat ca len 1 
 mov A, P1 
 anl A, #00001111B ; Lay 4 bit thap cua P1, noi voi hang 
 cjne A, #00001111B, Doc_Cot_Chuc_Nang ; Kiem tra de chac rang tat ca cac 
 phim chuc nang duoc tha 
 sjmp Doc_Ban_Phim 
Doc_Cot_Chuc_Nang: 
 mov P1, #11111111B ; Dat tat ca len 1 
 mov A, P1 
 anl A, #00001111B ; Che cac bit cot di 
F1: 
 cjne A, #00001110B, F2 
 Wait: 
 mov A, P1 
 anl A, #00001111B 
 cjne A, #00001111B, Wait ; Doi tha nut 
 clr P3.7 
 nop 
 nop 
 nop 
 mov P3,#16 
 call Delay ; Chong rung 
 ljmp Tiep_tuc_quet ; Tiep tuc quet phim 
F2: 
 cjne A, #00001101B, BACK_SPACE 
 Wait1: 
 mov P1, #11111111B ; Dat tat ca len 1 
 mov A, P1 
 anl A, #00001111B 
 cjne A, #00001111B, Wait1 ; Doi tha nut 
 mov P3,#17 
 call Delay ; Chong rung 
 ljmp Tiep_tuc_quet 
BACK_SPACE: 
 cjne A, #00001011B, ENTER 
 Wait2: 
 mov P1, #11111111B ; Dat tat ca len 1 
 mov A, P1 
 anl A, #00000100B 
Giáo trình môn Kỹ thuật Vi Điều Khiển Ch−ơng 61 :Phần phụ lục 
 Biên soạn : Lâm tăng Đức – Lê Tiến Dũng –Bộ môn TĐH Trang 99 
 cjne A, #00000100B, Wait2 ; Doi tha nut 
 mov P3,#18 
 call Delay ; Chong rung 
 ljmp Tiep_tuc_quet 
ENTER: 
 cjne A, #00000111B, Start 
 Wait3: 
 mov P1, #11111111B ; Dat tat ca len 1 
 mov A, P1 
 anl A, #00001000B 
 cjne A, #00001000B, Wait3 ; Doi tha nut 
 clr P3.7 
 mov P3,#19 
 call Delay ; Chong rung 
Tiep_Tuc_Quet: 
 WAIT4: ; Doi phim duoc tha het 
 mov P1, #11111111B ; Dat tat ca len 1 
 mov A, P1 
 anl A, #00001111B 
 cjne A, #00001111B, Wait4 
 call Delay 
 mov P3, #0FFH; Tat ngat, khoa tin hieu o ngo ra tin hieu o ngo ra 
 ljmp Start ; Tiep tuc quet phim 
;;;;;;;;;;;;;;;;;;;;;;;; 
;Khong co phim chuc nang nao duoc an, tim phim thuong` 
Doc_Ban_Phim: 
 mov P1,#11110000B ; Noi dat tat ca cac hang 
 mov A, P1 
 anl A, #11110000B 
 cjne A, #11110000B, Co_Phim_Duoc_An ; Neu co phim duoc an 
 jmp Start ; Neu khong, tiep tuc giam sat 
Co_Phim_Duoc_An: 
 MOV P1,#11111110B ; Noi dat hang 1 
 MOV A, P1 
 anl A, #11110000B 
 cjne A, #11110000B, ROW1 
 MOV P1,#11111101B ; Noi dat hang 2 
 MOV A,P1 
Giáo trình môn Kỹ thuật Vi Điều Khiển Ch−ơng 61 :Phần phụ lục 
 Biên soạn : Lâm tăng Đức – Lê Tiến Dũng –Bộ môn TĐH Trang 100 
 ANL A,#11110000B 
 cjne A,#11110000B, ROW2 
 MOV P1,#11111011B ; Noi dat hang 3 
 MOV A,P1 
 ANL A,#11110000B 
 cjne A,#11110000B, ROW3 
 MOV P1,#11110111B ; Noi dat hang 4 
 MOV A,P1 
 ANL A,#11110000B 
 cjne A,#11110000B, ROW4 
ROW1: MOV DPTR,#KCODE1 
 call FIND 
 ljmp Start 
ROW2: MOV DPTR,#KCODE2 
 call FIND 
 ljmp Start 
ROW3: MOV DPTR,#KCODE3 
 call FIND 
 ljmp Start 
ROW4: MOV DPTR,#KCODE4 
 call FIND 
 ljmp Start 
; ############################################## 
; THU TUC TIM KIEM TRONG BANG 
; ############################################## 
FIND: 
 rlc A ; Quay lan luot cac cot len co nho' de ktra 
 jnc MATCH ; Neu = 0, dung la cot dang co phim duoc an 
 inc DPTR ; Neu = 1, tiep tuc tang con tro DL va quay de tim ra cot chua phim 
dc an 
 sjmp FIND 
MATCH: 
 CLR A 
 MOVC A,@A+DPTR ; Luc nay A se chua cac gia tri tu 0-15 
Giáo trình môn Kỹ thuật Vi Điều Khiển Ch−ơng 61 :Phần phụ lục 
 Biên soạn : Lâm tăng Đức – Lê Tiến Dũng –Bộ môn TĐH Trang 101 
 MOV P3,A ; xuat ra ngoai, do A < 16 nen bit D7 bao gio cung = 0, 
 ; ta tan dung de tao ra ngat ngoai cho CPU 
WAIT5: ; Doi phim duoc tha het 
 mov P1, #11110000B ; Noi dat tat ca cac hang 
 mov A, P1 
 anl A, #11110000B 
 cjne A, #11110000B, WAIT5 
 mov P3, #0FFH ; Tat ngat, khoa tin hieu o ngo ra 
 call Delay 
 ret 
; ############################################## 
; KET THUC THU TUC TIM KIEM 
; ############################################## 
DELAY: 
TT0: MOV R2,#180 
 MOV R1,#72 
TT1: DJNZ R1,TT1 
 DJNZ R2,TT1 
 RET 
;Giai ma 
KCODE1: DB 3, 2, 1, 0 
KCODE2: DB 7, 6, 5, 4 
KCODE3: DB 11, 10, 9, 8 
KCODE4: DB 15, 14, 13, 12 
END 
6.4 Ch−ơng trình điều khiển hiển thị LCD 
; ###################################################### 
; THU TUC XUAT LENH RA LCD 
; ###################################################### 
Command_To_LCD: 
 push DPH 
 push DPL 
 push 02H 
 mov R2, A ; Luu A 
 mov A,#CW_011 ; Dat A ra, B,C dau vao 
 mov DPTR, #CW1 
 movx @DPTR, A ; Xuat tu dieu khien 
 ; Doc thanh ghi lenh 
Giáo trình môn Kỹ thuật Vi Điều Khiển Ch−ơng 61 :Phần phụ lục 
 Biên soạn : Lâm tăng Đức – Lê Tiến Dũng –Bộ môn TĐH Trang 102 
 ; PA3 PA2 PA1 PA0 
 ; E2 E1 RW RS 
 mov A, E 
 cjne A, #2, Nua_MH1 
 mov A, #00001010B 
 jmp Xuat_Ra 
Nua_MH1: 
 mov A, #00000110B 
Xuat_Ra: 
 mov DPTR, #LCD_CONTROL 
 movx @DPTR, A ; Xuat th dk ra LCD 
 mov DPTR, #LCD_DATA 
Ready_CMD: 
 movx A, @DPTR ; Doc DB vao 
 jb ACC.7, Ready_CMD 
 ; Dat lai PA, PB lam cong ra 
 mov A,#CW_000 ; Dat A,B,C dau RA 
 mov PTR, #CW1 
 movx @DPTR, A 
 mov A, R2 
 mov DPTR, #LCD_DATA 
 movx @DPTR, A ; Xuat ra 
 ; Chot du lieu bang cach dua xung tu H to L o chan E1 
 mov DPTR, #LCD_CONTROL 
 mov A, E 
 cjne A, #2, Nua_MH1_C 
 mov A, #00001000B ; E2 = 1; E1 = 1, RW = 0; RS = 0 
 jmp Chot 
Nua_MH1_C: 
 mov A, #00000100B ; E2 = 0; E1 = 1, RW = 0; RS = 0 
Chot: 
 movx @DPTR, A ; E2 =1; E1 = 0, RW = 0; RS = 0 
 nop 
 nop 
 mov A, #00000000B 
 movx @DPTR, A ; Chot du lieu 
 pop 02H 
 pop DPL 
Giáo trình môn Kỹ thuật Vi Điều Khiển Ch−ơng 61 :Phần phụ lục 
 Biên soạn : Lâm tăng Đức – Lê Tiến Dũng –Bộ môn TĐH Trang 103 
 pop DPH 
 ret 
; ###################################################### 
; KET THUC THU TUC XUAT LENH RA LCD 
; ###################################################### 
; ###################################################### 
; THU TUC IN KI TU RA LCD 
; INPUT = A (ASCII) 
; ###################################################### 
In_Ki_Tu: 
 push DPH 
 push DPL 
 push 02H 
 mov R2, A ; Luu A 
 mov A,#CW_011 ; Dat A ra, B,C dau vao 
 mov DPTR, #CW1 
 movx @DPTR, A ; Xuat tu dieu khien 
; Doc thanh ghi lenh 
 ; PA3 PA2 PA1 PA0 
 ; E2 E1 RW RS 
 mov A, E 
 cjne A, #2, Nua_MH1_InKT 
 mov A, #00001010B 
 jmp Xuat_Ra_InKT 
Nua_MH1_InKT: 
 mov A, #00000110B 
Xuat_Ra_InKT: 
 mov DPTR, #LCD_CONTROL 
 movx @DPTR, A ; Xuat ra LCD 
 mov DPTR, #LCD_DATA 
Ready_Chr: 
 movx A, @DPTR ; Doc DB vao 
 jb ACC.7, Ready_Chr 
 ; Dat lai PA, PB lam cong ra 
 mov A,#CW_000 ; Dat A,B,C dau RA 
 mov DPTR, #CW1 
 movx @DPTR, A ; Xuat tu dieu khien 
 mov A, R2 ; Lay lai gia tri luu ban dau, lenh 
 mov DPTR, #LCD_DATA 
 movx @DPTR, A ; Xuat ra 
Giáo trình môn Kỹ thuật Vi Điều Khiển Ch−ơng 61 :Phần phụ lục 
 Biên soạn : Lâm tăng Đức – Lê Tiến Dũng –Bộ môn TĐH Trang 104 
 ; Chot du lieu bang cach dua xung tu H to L o chan E1 
 mov DPTR, #LCD_CONTROL 
 mov A, E 
 cjne A, #2, Nua_MH1_Chot 
 mov A, #00001001B 
 jmp Chot_InKT 
Nua_MH1_Chot: 
 mov A, #00000101B 
Chot_InKT: 
 movx @DPTR, A ; E2 =0; E1 = 1, RW = 0; RS = 1 
 nop 
 nop 
 mov A, #00000001B 
 movx @DPTR, A ; Chot du lieu 
 pop 02H 
 pop DPL 
 pop DPH 
 ret 
; ###################################################### 
; KET THUC CHUONG TRINH IN KI TU RA LCD 
; ###################################################### 
; ###################################################### 
; THU TUC IN CHUOI RA LCD 
; INPUT = DIA CHI CUA CON TRO DU LIEU DPTR 
; ###################################################### 
Str_To_LCD: 
push ACC 
Continue_To_Print: 
 clr A 
 movc A,@A+DPTR 
 jz Done 
 call In_Ki_Tu 
 inc DPTR 
 mov A, #06h ; Dich con tro sang phai 
 call Command_To_LCD 
 sjmp Continue_To_Print 
Done: 
 pop ACC 
 ret 
; ###################################################### 
; KET THUC THU TUC IN CHUOI RA LCD 
Giáo trình môn Kỹ thuật Vi Điều Khiển Ch−ơng 61 :Phần phụ lục 
 Biên soạn : Lâm tăng Đức – Lê Tiến Dũng –Bộ môn TĐH Trang 105 
; ###################################################### 
; ###################################################### 
; THU TUC XOA LCD 
; ###################################################### 
CLS: 
 mov E, #1 
 mov A, #01H 
 call Command_To_LCD 
 mov E, #2 
 mov A, #01H 
 call Command_To_LCD 
 mov E, #1 
 mov A, #0EH 
 call Command_To_LCD 
 mov A, #0CH ; Bat hien thi, tat con tro 
 call Command_To_LCD 
 ret 
; ###################################################### 
; KET THUC THU TUC XOA LCD 
; ###################################################### 
; ###################################################### 
; THU TUC IN SO HEXA 
; ###################################################### 
phex: 
phex8: ; In so hexa 8 bit, input = ACC 
 push 02 
 push acc 
 swap a 
 anl a, #0FH 
 add a, #246 
 jnc phex_b 
 add a, #7 
phex_b: 
 add a, #58 
 mov R2, A ;Luu 
 mov A, #0EH 
 call Command_To_LCD 
 mov A, R2 
 call In_Ki_Tu 
Giáo trình môn Kỹ thuật Vi Điều Khiển Ch−ơng 61 :Phần phụ lục 
 Biên soạn : Lâm tăng Đức – Lê Tiến Dũng –Bộ môn TĐH Trang 106 
 pop acc 
phex1: 
push acc 
 anl a, #0FH 
 add a, #246 
 jnc phex_c 
 add a, #7 
phex_c: 
add a, #58 
 mov R2, A ;Luu 
 mov A, #0EH 
 call Command_To_LCD 
 mov A, R2 
 call In_Ki_Tu 
 pop acc 
 pop 02 
 ret 
phex16: ; In so hexa 16 bit, input = DPTR 
 push acc 
 mov a, dph 
 acall phex 
 mov a, dpl 
 acall phex 
 pop acc 
 ret 
; ###################################################### 
; KET THUC THU TUC IN SO HEXA 
; ###################################################### 
6.5 Các ví dụ DEMO 
; ########################################### 
; CAC VI DU DEMO 
; ########################################### 
DEMO1: ; LED DON - 8255-4 
mov DPTR, #LED_DON 
DEMO1_1: ; Nhap nhay cac LED xen ke 
 mov R5, #48 
 mov R6, #10101010B 
Again_DM11: 
 mov A, R6 
 movx @DPTR, A 
 cpl A 
 call Delay_100ms 
 mov R6, A 
 mov A, KEY ; Neu co nut an tro ve 
 cjne A, #KEY_BSP, TiepDemo1_1 ; Tiep 
tuc chay cho het vong lap 
jmp Exit_DEMO1 ; Neu co lenh thoat 
thi tro ve luon 
TiepDemo1_1: 
 djnz R5, Again_DM11 
Giáo trình môn Kỹ thuật Vi Điều Khiển Ch−ơng 61 :Phần phụ lục 
 Biên soạn : Lâm tăng Đức – Lê Tiến Dũng –Bộ môn TĐH Trang 107 
DEMO1_2: ; Chay LED tu trai sang phai 
 ; Nghi mot chut 
 mov A, #00H 
 movx @DPTR, A 
 call Delay_500ms 
 mov R5, #48 
 mov R6, #10000000B 
Again_DM12: 
 mov A, R6 
 movx @DPTR, A 
 call Delay_100ms 
 rr A 
 mov R6, A 
 mov A, KEY ; Neu co nut an tro ve 
 cjne A, #KEY_BSP, TiepDemo1_2 
 ; Tiep tuc chay cho het vong lap 
 jmp Exit_DEMO1 
; Neu co lenh thoat thi tro ve luon 
TiepDemo1_2: 
 djnz R5, Again_DM12 
DEMO1_3: ; Chay LED tu phai sang trai 
 ; Nghi mot chut 
 mov A, #00H 
 movx @DPTR, A 
 call Delay_500ms 
 mov R5, #48 
 mov R6, #10000000B 
Again_DM13: 
 mov A, R6 
 movx @DPTR, A 
 call Delay_100ms 
 rl A 
 mov R6, A 
 mov A, KEY 
 ; Neu co nut an tro ve 
 cjne A, #KEY_BSP, TiepDemo1_3 
; Tiep tuc chay cho het vong lap 
 mp Exit_DEMO1 
; Neu co lenh thoat thi tro ve luon 
TiepDemo1_3: 
 djnz R5, Again_DM13 
Exit_DEMO1: 
 mov KEY, #0FFH 
 call Restore_SCR 
; Tra lai man hinh truoc' 
 ret 
 ; Tro ve man hinh 4, chon vd DEMO 
; ------------------------------------------ 
DEMO2: ; LED 7 DOAN 
 mov Led7Doan1, #0 
 mov Led7Doan2, #0 
 mov Led7Doan3, #0 
 mov Led7Doan4, #0 
DEMO2_1: 
; Dem len 
 mov A, #DONG2 
 call Command_To_LCD 
 mov DPTR, #MSG11 
 call Str_To_LCD 
 mov A, #DONG3 
 call Command_To_LCD 
 mov DPTR, #MSG12 
 call Str_To_LCD 
Dem_Len: 
 call Display_Four_7Seg_Led 
 call Delay_100ms 
 mov A, KEY 
 cjne A, #KEY_BSP, Sang_Dem_Xuong 
 mov KEY, #0FFH 
 jmp Exit_DEMO2 
Sang_Dem_Xuong: 
 cjne A, #1, TiepTucDemLen 
Giáo trình môn Kỹ thuật Vi Điều Khiển Ch−ơng 61 :Phần phụ lục 
 Biên soạn : Lâm tăng Đức – Lê Tiến Dũng –Bộ môn TĐH Trang 108 
 mov KEY, #0FFH 
 jmp Exit_DEMO2_1 
TiepTucDemLen: 
 mov A, Led7Doan4 
 inc A 
 mov Led7Doan4, A 
 cjne A, #0AH, Dem_Len 
 add A, #6 
 anl A, #00001111B 
 mov Led7Doan4, A 
 mov A, Led7Doan3 
 inc A 
 mov Led7Doan3, A 
 cjne A, #0AH, Dem_Len 
 add A, #6 
 anl A, #00001111B 
 mov Led7Doan3, A 
 mov A, Led7Doan2 
 inc A 
 mov Led7Doan2, A 
 cjne A, #0AH, Dem_Len 
 add A, #6 
 anl A, #00001111B 
 mov Led7Doan2, A 
 mov A, Led7Doan1 
 inc A 
 mov Led7Doan1, A 
 cjne A, #0AH, Dem_Len 
 add A, #6 
 anl A, #00001111B 
 mov Led7Doan1, A 
 jmp Dem_Len 
Exit_DEMO2_1: 
 ; Thoat dem len, chuyen sang dem xuong 
 mov KEY, #0FFH 
 mov A, #DONG2 
 call Command_To_LCD 
 mov DPTR, #MSG13 
 call Str_To_LCD 
 mov A, #DONG3 
 call Command_To_LCD 
 mov DPTR, #MSG14 
 call Str_To_LCD 
DEMO2_2: ; ---- Dem xuong' 
 call Display_Four_7Seg_Led 
 call Delay_100ms 
 mov A, KEY 
 cjne A, #KEY_BSP, Sang_Dem_Len 
 mov KEY, #0FFH 
 jmp Exit_DEMO2 
Sang_Dem_Len: 
 cjne A, #0, TiepTucDemXuong 
 mov KEY, #0FFH 
 jmp DEMO2_1 
TiepTucDemXuong: 
 mov A, Led7Doan4 
 dec A 
 mov Led7Doan4, A 
 cjne A, #0FFH, DEMO2_2 
 mov Led7Doan4, #9 
 mov A, Led7Doan3 
 dec A 
 mov Led7Doan3, A 
 cjne A, #0FFH, DEMO2_2 
 mov Led7Doan3, #9 
 mov A, Led7Doan2 
 dec A 
 mov Led7Doan2, A 
 cjne A, #0FFH, DEMO2_2 
 mov Led7Doan2, #9 
Giáo trình môn Kỹ thuật Vi Điều Khiển Ch−ơng 61 :Phần phụ lục 
 Biên soạn : Lâm tăng Đức – Lê Tiến Dũng –Bộ môn TĐH Trang 109 
 mov A, Led7Doan1 
 dec A 
 mov Led7Doan1, A 
 cjne A, #0FFH, DEMO2_2 
 mov Led7Doan1, #9 
 jmp DEMO2_2 
Exit_DEMO2: 
 ret 
; ------------------------------------------- 
DEMO3: ; LED MA TRAN 
DEMO3_1: 
 mov DPTR, #MATRIX_LED_ANOD 
 mov A, #0FFH 
 movx @DPTR, A 
 mov A, #11001100B 
 mov DPTR, #MATRIX_LED_R 
 mov R7, #32 
Again_DM3_1: ; Nhay LED cua cac cot, xen ke 
 movx @DPTR, A 
 cpl A 
 call Delay_100ms 
 djnz R7, Again_DM3_1 
DEMO3_2: 
 mov DPTR, #MATRIX_LED_ANOD 
 mov A, #0FFH 
 movx @DPTR, A 
 mov A, #11001100B 
 mov DPTR, #MATRIX_LED_R 
 mov R7, #32 
Again_DM3_2: ; Chay LED 
 movx @DPTR, A 
 rr A 
 call Delay_100ms 
 djnz R7, Again_DM3_2 
DEMO3_3: 
 mov DPTR, #MATRIX_LED_ANOD 
 mov A, #0FFH 
 movx @DPTR, A 
 mov A, #11001100B 
 mov DPTR, #MATRIX_LED_R 
 mov R7, #32 
Again_DM3_3: ; Chay LED 
 movx @DPTR, A 
 rl A 
 call Delay_100ms 
 djnz R7, Again_DM3_3 
DEMO3_4: ; Thi nghiem voi cac cot 
 mov A, #0FFH 
 mov DPTR, #MATRIX_LED_R 
 movx @DPTR, A 
 mov A, #0FFH 
 mov DPTR, #MATRIX_LED_G 
 movx @DPTR, A 
 mov DPTR, #MATRIX_LED_ANOD 
 mov A, #01H 
 movx @DPTR, A 
 mov R7, #64 
Again_DM3_4: ; Chay LED 
 movx @DPTR, A 
 rl A 
 call Delay_100ms 
 djnz R7, Again_DM3_4 
 ret 
DEMO4: ; BAN PHIM, LCD 
 ret 
Giáo trình môn Kỹ thuật Vi Điều Khiển Ch−ơng 61 :Phần phụ lục 
 Biên soạn : Lâm tăng Đức – Lê Tiến Dũng –Bộ môn TĐH Trang 110 
DEMO5: ;ADC, DAC 
; 8255-2 
; ADC_DB EQU 8008H ; Bus du lieu cua ADC0809 
; DAC_DB EQU 8009H ; Bus du lieu cua DAC0808 
; ADC_CONTROL EQU 800AH ; Cac tin hieu dieu khien ADC0809 
; CW2 EQU 800BH ; Tu dieu khien CW cua 8255-2 
; Cac bit cua ADC_CONTROL nhu sau 
; 7 6 | 5 | 4 | 3 | 2 | 1 | 0 | 
; ----|-----|----|--------|------|------|------| 
; X X | EOC | OE | ALE+SC | ADDC | ADDB | ADDA | 
ADC: 
 mov DPTR, #CW2 
 mov A, #CW_100 ; A vao, B, C ra 
 movx @DPTR, A 
 mov DPTR, #ADC_CONTROL ; Chon 
kenh analog 0 
 mov A, #00001000B 
 movx @DPTR, A 
 nop 
 nop 
 nop 
 mov A, #00100000B ; Chot 
dia chi va bat dau chuyen doi 
 movx @DPTR, A 
 mov DPTR, #CW2 ; Chuyen PC - 
ADC_CONTROL lam dau vao 
 mov A, #CW_101 ; A, C vao, B ra 
 movx @DPTR, A 
Wait_EOC: ; Cho` cho 
qua trinh convert ket thuc 
 mov DPTR, #ADC_CONTROL 
 movx A, @DPTR 
 anl A, #00100000B 
 cjne A, #00100000B, Wait_EOC 
 ; Ket thuc qua trinh chuyen doi 
 mov DPTR, #CW2 ; Dat lai PC lam dau 
ra 
 mov A, #CW_100 ; A vao, B, C ra 
 movx @DPTR, A 
 mov DPTR, #ADC_CONTROL 
 mov A, #00110000B ; Cho phep dau ra OE 
= 1 
 movx @DPTR, A 
 mov DPTR, #ADC_DB ; Doc du lieu tra ve 
 movx A, @DPTR 
 mov Nhiet_Do, A 
 mov E, #2 
 mov A, #DONG1 
 call Command_To_LCD 
 mov DPTR, #MSG34 
 call Str_To_LCD 
 mov A, #DONG2 
 call Command_To_LCD 
 mov DPTR, #MSG35 
 call Str_To_LCD 
 mov A, #DONG3 
 call Command_To_LCD 
 mov DPTR, #MSG33 
 call Str_To_LCD 
 mov A, Nhiet_Do 
 clr CY 
Giáo trình môn Kỹ thuật Vi Điều Khiển Ch−ơng 61 :Phần phụ lục 
 Biên soạn : Lâm tăng Đức – Lê Tiến Dũng –Bộ môn TĐH Trang 111 
 subb A, #100 
 jc Nhiet_Do_Nho_Hon_100 
Nhiet_Do_Lon_Hon_100: 
 mov A, Nhiet_Do 
 dec A ; Tru 1 
 rl A 
 rl A ; Nhan 4 de nhay cho dung 
vi tri chuoi can tra trong bang 
 mov R6, #4 
 mov R0, A 
 mov DPTR, #LON_HON_100_DO 
In_Nhiet_Do_1: 
 movc A, @A + DPTR 
 call In_Ki_Tu 
 inc R0 
 mov A, R0 
 djnz R6, In_Nhiet_Do_1 
 jmp In_Do_C 
Nhiet_Do_Nho_Hon_100: 
 mov A, Nhiet_Do 
 dec A ; Tru 1 
 rl A ; Nhan 2 de nhay cho dung 
vi tri chuoi can tra trong bang 
 mov R6, #2 
 mov R0, A 
 mov DPTR, #NHO_HON_100_DO 
In_Nhiet_Do_2: 
 movc A, @A + DPTR 
 call In_Ki_Tu 
 inc R0 
 mov A, R0 
 djnz R6, In_Nhiet_Do_2 
In_Do_C: 
 mov A, #' ' 
 call In_Ki_Tu 
 mov A, #'d' 
 call In_Ki_Tu 
 mov A, #'o' 
 call In_Ki_Tu 
 mov A, #' ' 
 call In_Ki_Tu 
 mov A, #'C' 
 call In_Ki_Tu 
 mov A, #' ' 
 call In_Ki_Tu 
 call Delay_500ms 
 call Delay_500ms 
 mov A, KEY 
 cjne A, #KEY_ENTER, KT_Thoat_ADC 
 mov KEY, #0FFH 
 jmp DAC 
KT_Thoat_ADC: 
 cjne A, #KEY_BSP, Tiep_Tuc_ADC 
 mov KEY, #0FFH 
 call Restore_SCR 
 ret 
Tiep_Tuc_ADC: 
 jmp ADC 
; -------------------------------------------
---- 
DAC: 
 mov E, #2 
 mov A, #01 
 call Command_To_LCD 
 mov A, #DONG2 
 call Command_To_LCD 
 mov DPTR, #MSG38 ; 'Thi nghiem voi 
DAC' 
 call Str_To_LCD 
 ; DAC_DB EQU 8009H 
 ; Bus du lieu cua DAC0808 
 mov A, #DONG3 
 call Command_To_LCD 
 mov DPTR, #MSG36 
 call Str_To_LCD 
Giáo trình môn Kỹ thuật Vi Điều Khiển Ch−ơng 61 :Phần phụ lục 
 Biên soạn : Lâm tăng Đức – Lê Tiến Dũng –Bộ môn TĐH Trang 112 
 mov Ap_Ra, #10 
Tang_Ap_DAC: 
 mov A, Ap_Ra 
Dao_Gia_Tri: 
 rrc A 
 mov 07H, C 
 rrc A 
 mov 06H, C 
 rrc A 
 mov 05H, C 
 rrc A 
 mov 04H, C 
 rrc A 
 mov 03H, C 
 rrc A 
 mov 02H, C 
 rrc A 
 mov 01H, C 
 rrc A 
 mov 00H, C 
 mov A, 20H 
 mov DPTR, #DAC_DB 
 movx @DPTR, A 
 mov A, Ap_Ra 
 add A, #2 
 mov Ap_Ra, A 
 call Delay_500ms 
 call Delay_500ms 
 call Delay_500ms 
 call Delay_500ms 
 call Delay_500ms 
 call Delay_500ms 
 mov A, Ap_Ra 
 cjne A, #254, KT_Thoat_Tang_Ap_DAC 
 jmp Exit_DEMO5 
KT_Thoat_Tang_Ap_DAC: 
 mov A, KEY 
 cjne A, #KEY_BSP, Tang_Ap_DAC 
 mov KEY, #0FFH 
Exit_DEMO5: 
 call Restore_SCR 
 ret 
DEMO6: ; STEPPER, DC MOTOR 
;DIGITAL_INPUT EQU 800CH ; Dau vao so 
;DC_STEPPER EQU 800DH ; Dieu khien dong co 
buoc (PB0-PB3), dong co 1 chieu(PB4-PB7
; PULSE_INPUT EQU 800EH ; 4 dau vao xung = 
nut(PC4-PC7), 4 tu cac nguon phat 
xung(PC0-PC3) 
; CW3 EQU 800FH ; Tu dieu khien CW cua 
8255-3 
 mov DPTR, #DC_STEPPER 
 mov R4, #00110011B 
 mov R7, #255 
 mov R6, #5 
 mov Nut1, #0 
 mov Nut2, #0 
 mov Nut3, #0 
 mov Nut4, #0 
Quay_Thuan: 
 mov A, R4 
 movx @DPTR, A 
 rl A 
 mov R4, A 
 call Delay_7ms 
 call Delay_7ms 
 call Delay_7ms 
 mov A, KEY 
 cjne A, #KEY_BSP, Case_Enter_QT 
 mov KEY, #0FFH 
 call Restore_SCR 
 ret 
 ; MSG29: db 'ENTER=Test pulse input', 0 
 ; MSG30: db 'ENTER=Test digital 
input',0 
Case_Enter_QT: 
 mov A, KEY 
Giáo trình môn Kỹ thuật Vi Điều Khiển Ch−ơng 61 :Phần phụ lục 
 Biên soạn : Lâm tăng Đức – Lê Tiến Dũng –Bộ môn TĐH Trang 113 
 cjne A, #KEY_ENTER, Du_So_Buoc1 
 mov KEY, #0FFH 
 ;Hien thi thong bao bam enter de quay 
nguoc 
 mov E, #2 
 mov A, #DONG1 
 call Command_To_LCD 
 mov DPTR, #MSG29 
 call Str_To_LCD 
 mov R7, #255 
 mov R6, #5 
 mov R4, #00110011B 
 mov DPTR, #DC_STEPPER 
 jmp Quay_Nguoc 
Du_So_Buoc1: 
 djnz R7, Quay_Thuan 
 mov R7, #255 
 djnz R6, Quay_Thuan 
Quay_Nguoc: 
 mov A, R4 
 movx @DPTR, A 
 rr A 
 mov R4, A 
 call Delay_7ms 
 call Delay_7ms 
 call Delay_7ms 
 mov A, KEY 
 cjne A, #KEY_BSP, Case_Enter_QN 
 mov KEY, #0FFH 
 call Restore_SCR 
 ret 
Case_Enter_QN: 
 mov A, KEY 
 cjne A, #KEY_ENTER, Du_So_Buoc2 
 mov KEY, #0FFH 
 ;Hien thi thong bao bam enter de quay 
TEST pulse input 
 mov E, #2 
 mov A, #DONG1 
 call Command_To_LCD 
 mov DPTR, #MSG30 
 call Str_To_LCD 
 mov DPTR, #DC_STEPPER 
 mov A, #0 
 movx @DPTR, A 
 jmp Pulse_Digital_Input_Test 
Du_So_Buoc2: 
 djnz R7, Quay_Nguoc 
 mov R7, #255 
 djnz R6, Quay_Nguoc 
Pulse_Digital_Input_Test: 
; MSG32: db 'Digital input value: ',0 
 mov E, #2 
 mov A, #DONG2 
 call Command_To_LCD 
 mov DPTR, #MSG31 
 call Str_To_LCD 
 mov A, #DONG3 
 call Command_To_LCD 
 mov DPTR, #MSG32 
 call Str_To_LCD 
 ; DIGITAL_INPUT EQU 800CH ; 
Dau vao so 
 ; DC_STEPPER EQU 800DH ; 
Dieu khien dong co buoc (PB0-PB3), dong co 1 
chieu(PB4-PB7) 
 ; PULSE_INPUT EQU 800EH ; 
4 dau vao xung = nut(PC4-PC7), 4 tu cac nguon 
phat xung(PC0-PC3) 
 ; CW3 EQU 800FH
 ; Tu dieu khien CW cua 8255-3 
Quet_phim: 
 mov DPTR, #PULSE_INPUT 
 movx A, @DPTR 
Giáo trình môn Kỹ thuật Vi Điều Khiển Ch−ơng 61 :Phần phụ lục 
 Biên soạn : Lâm tăng Đức – Lê Tiến Dũng –Bộ môn TĐH Trang 114 
 cjne A, #0FFH, Phim1 
 jmp Cap_nhat_gia_tri 
Phim1: 
 movx A, @DPTR 
 anl A, #11110000B ; Neu phim 
thu 1 dc an 
 cjne A, #01110000B, Phim2 
Cho_Phim1_tha: 
 mov DPTR, #PULSE_INPUT 
 movx A, @DPTR 
 anl A, #11110000B 
 cjne A, #11110000B, Cho_Phim1_tha 
 call Delay_7ms 
 call Delay_7ms 
 call Delay_7ms 
 inc Nut1 ; Duoc tha roi thi tang 
Nut1 - chua tong so lan bam len 
 jmp Cap_nhat_gia_tri 
Phim2: 
 movx A, @DPTR 
 anl A, #11110000B ; Neu phim 
thu 2 duoc an 
 cjne A, #10110000B, Phim3 
Cho_Phim2_tha: 
 movx A, @DPTR 
 anl A, #11110000B 
 cjne A, #11110000B, Cho_Phim2_tha 
 call Delay_7ms 
 call Delay_7ms 
 call Delay_7ms 
 inc Nut2 ; Duoc tha roi thi tang 
Nut1 - chua tong so lan bam len 
 jmp Cap_nhat_gia_tri 
Phim3: 
 movx A, @DPTR 
 anl A, #11110000B ; Neu phim 
thu 3 duoc an 
 cjne A, #11010000B, Phim4 
Cho_Phim3_tha: 
 movx A, @DPTR 
 anl A, #11110000B 
 cjne A, #11110000B, Cho_Phim3_tha 
 call Delay_7ms 
 call Delay_7ms 
 call Delay_7ms 
 inc Nut3 ; Duoc tha roi thi tang 
Nut1 - chua tong so lan bam len 
 jmp Cap_nhat_gia_tri 
Phim4: 
 movx A, @DPTR 
 anl A, #11110000B ; Neu phim 
thu 4 duoc an 
 cjne A, #11100000B, Cap_nhat_gia_tri 
Cho_Phim4_tha: 
 movx A, @DPTR 
 anl A, #11110000B 
 cjne A, #11110000B, Cho_Phim4_tha 
 call Delay_7ms 
 call Delay_7ms 
 call Delay_7ms 
 inc Nut4 ; Duoc tha roi thi tang 
Nut1 - chua tong so lan bam len 
Cap_nhat_gia_tri: 
Cap_nhat_gia_tri_digital_input: 
 mov A, #DONG3 + 28 
 call Command_To_LCD 
 mov DPTR, #DIGITAL_INPUT 
 movx A, @DPTR 
 call phex8 ; in ra gia tri cua 
digital input 
; MSG31: db 'B1: |B2: |B3: |B4: ',0 
Cap_nhat_so_lan_bam_cac_nut: 
 mov A, #DONG2 + 3 
 call Command_To_LCD 
 mov A, Nut1 
 call phex8 
Giáo trình môn Kỹ thuật Vi Điều Khiển Ch−ơng 61 :Phần phụ lục 
 Biên soạn : Lâm tăng Đức – Lê Tiến Dũng –Bộ môn TĐH Trang 115 
 mov A, #DONG2 + 9 
 call Command_To_LCD 
 mov A, Nut2 
 call phex8 
 mov A, #DONG2 + 15 
 call Command_To_LCD 
 mov A, Nut3 
 call phex8 
 mov A, #DONG2 + 21 
 call Command_To_LCD 
 mov A, Nut4 
 call phex8 
 mov A, KEY 
 cjne A, #KEY_BSP, Tiep_tuc 
 mov KEY, #0FFH 
 call Restore_SCR 
 ret 
Tiep_tuc: 
 jmp Quet_Phim 
 ret 
DEMO7: ; RS232 
 call Disable_SERIAL_INT 
; Lam viec voi nua man hinh 2 
 mov E, #2 
 mov A, #01 
 call Command_To_LCD ; Xoa LCD 
 mov A, #DONG1 
 call Command_TO_LCD 
 ; Select receive mode, bam nut 0 
 mov DPTR, #MSG24 
 call Str_TO_LCD 
 mov A, #DONG2 
 call Command_TO_LCD 
 ; Select receive mode, bam nut 1 
 mov DPTR, #MSG25 
call Str_TO_LCD 
 mov A, #0CH ; Giau con tro 
 call Command_To_LCD 
Cho_Phim_0_DM7: 
 mov A, KEY 
 cjne A, #0, Cho_Phim_1_DM7 
 mov KEY, #0FFH 
 jmp Receive_Mode 
Cho_Phim_1_DM7: 
 mov A, KEY 
 cjne A, #1, Cho_Phim_BSP_DM7 
 mov KEY, #0FFH 
 jmp Send_Mode 
Cho_Phim_BSP_DM7: 
 mov A, KEY 
 cjne A, #KEY_BSP, Cho_Phim_0_DM7 
 mov KEY, #0FFH 
 call Enable_SERIAL_INT 
 ret 
Receive_Mode: 
 mov A, #DONG3 
 call Command_To_LCD 
 mov DPTR, #MSG26 
 call Str_To_LCD 
 mov A, #DONG4 
 call Command_To_LCD 
 mov A, #0FH ; Nhap nhay con tro 
 call Command_To_LCD 
 clr RI 
 mov R7, #23 
Doi_Nhan_Du_Lieu: 
 mov A, KEY 
 cjne A, #KEY_BSP, Co_Du_Lieu_Den 
Giáo trình môn Kỹ thuật Vi Điều Khiển Ch−ơng 61 :Phần phụ lục 
 Biên soạn : Lâm tăng Đức – Lê Tiến Dũng –Bộ môn TĐH Trang 116 
 mov KEY, #0FFH 
 jmp DEMO7 
Co_Du_Lieu_Den: 
 jnb RI, Doi_Nhan_Du_Lieu 
 mov A, SBUF 
 call In_Ki_Tu 
 djnz R7, Chua_Het_Hang 
 mov R7, #24 
 mov A, #DONG4 ; Tro ve dau dong 
 call Command_To_LCD 
Chua_Het_Hang: 
 clr RI 
 jmp Doi_Nhan_Du_Lieu 
; ------------------------------------ 
Send_Mode: 
 mov A, #DONG3 
 call Command_To_LCD 
 mov DPTR, #MSG27 
 call Str_To_LCD 
Continue_Transfer: 
 mov DPTR, #MSG22 
 call Send_String 
 mov A, #13 
 call Send_Char 
 mov A, #10 
 call Send_Char 
 mov DPTR, #MSG23 
 call Send_String 
 mov A, #13 
 call Send_Char 
 mov A, #10 
 call Send_Char 
 call Delay_500ms 
 call Delay_500ms 
 call Delay_500ms 
 call Delay_500ms 
 mov A, KEY 
 cjne A, #KEY_BSP, Continue_Transfer 
 mov KEY, #0FFH 
 jmp DEMO7 
Giáo trình môn Kỹ thuật Vi Điều Khiển Ch−ơng 61 :Phần phụ lục 
 Biên soạn : Lâm tăng Đức – Lê Tiến Dũng –Bộ môn TĐH Trang 117 
6.5 Sơ đồ mạch in của các board
Sơ đồ mạch in của BOARD CPU - mặt trên 
Giáo trình môn Kỹ thuật Vi Điều Khiển Ch−ơng 61 :Phần phụ lục 
 Biên soạn : Lâm tăng Đức – Lê Tiến Dũng –Bộ môn TĐH Trang 118 
Sơ đồ mạch in của BOARD CPU - mặt d−ới 
Giáo trình môn Kỹ thuật Vi Điều Khiển Ch−ơng 61 :Phần phụ lục 
 Biên soạn : Lâm tăng Đức – Lê Tiến Dũng –Bộ môn TĐH Trang 119 
Sơ đồ mạch in của BOARD ADC - mặt trên 
Sơ đồ mạch in của BOARD xung số, động cơ b−ớc- mặt d−ới 
Giáo trình môn Kỹ thuật Vi Điều Khiển Ch−ơng 61 :Phần phụ lục 
 Biên soạn : Lâm tăng Đức – Lê Tiến Dũng –Bộ môn TĐH Trang 120 
Sơ đồ mạch in của BOARD LED 
đơn, LED 7 đoạn và LED ma trận 
(mặt trên) 
(mặt d−ới) 
Giáo trình môn Kỹ thuật Vi Điều Khiển Ch−ơng 61 :Phần phụ lục 
 Biên soạn : Lâm tăng Đức – Lê Tiến Dũng –Bộ môn TĐH Trang 121 
Tài liệu tham khảo 
1. Cấu trúc và lập trình họ vi điều khiển 8051 – Nguyễn Tăng C−ờng – Nhà 
xuất bản khoa học kỹ thuật – 2004 
2. Họ vi điều khiển 8051 – Tống Văn On, Hoàng Đức Hải – Nhà xuất bản 
Lao động –X/ hội – 2001 
3. Các tài liệu tham khảo khác d−ới dạng html và dạng pdf đi kèm theo CD 
ở th− mục “Tai lieu tham khao” 
            Các file đính kèm theo tài liệu này:
giao_trinh_ky_thuat_vi_dieu_khien.pdf