Bài tập vi xử lý part 2 - Pdf 12

VXL _BTOTHK–1/8
ĐHBK Tp HCM – Khoa ĐĐT
BMĐT
GVPT: Hồ Trung Mỹ

Bài tập ôn thi học kỳ môn Vi xử lý– AY1112-S2
Chú ý:
 Trong các bài tập sau giả sử dùng 8051 với thạch anh (XTAL) là 12 MHz
 Hệ số có dấu là hệ có số âm được biểu diễn bằng số bù 2.
 Khi đề bài chỉ nói viết chương trình thì ngầm hiểu là viết bằng hợp ngữ 8051.
1. Cho biết cách định địa chỉ của các toán hạng trong mỗi lệnh c
ủa chương trình sau:
MOV R0, #40H
INC SP
MOV A, @R0
MOV ACC.0, C
DJNZ R1, $
Viết mã máy cho đoạn chương trình trên.
2. Cho biết nội dung của thanh ghi A sau khi thực thi mỗi đoạn chương trình sau:
(a) (b) (c) (d) (e)
MOV 20h,#75h
MOV R1,#20H
MOV A,@R1
ANL a,#0FH

MOV R1,#2
MOV A,1
ORL A,#40H
XRL A,#0FH

MOV A

ất của 1 mảng các số 8 bit không dấu trong RAM dữ liệu
bên ngoài với số phần tử N (N 255) của mảng trong ô nhớ 7FFFH và phần tử đầu tiên của mảng có địa chỉ là
8000H. Giá trị của phần tử nhỏ nhất được đặt trong R6 và chỉ số của nó (bắt đầu từ chỉ số 0) được đặt trong
R7. Khi áp dụng cùng chương trình này cho mảng các số 8 bit có dấu thì ta phải chỉnh sửa hoặc thêm các l
ệnh
nào?
7. Viết chương trình con hợp ngữ hoặc C để so sánh 2 số 8 bit X và Y trong các thanh ghi R5 và R6 tương
ứng. Kết quả so sánh được đặt trong R7 theo quy ước sau:
 X < Y thì R7 = 01H
 X = Y thì R7 = 02H
 X > Y thì R7 = 04H
Cờ F0 (trong PSW) dùng để chọn so sánh số không dấu (khi F0=0) hay có dấu (khi F0=1).
Áp dụng chương trình con trên để so sánh 2 số 16 bit không dấu đặt trong RAM nội với byte thấp ở địa chỉ
thấp, số thứ nhất bắt đầu từ địa chỉ 30H và số th
ứ hai bắt đầu từ 40H.
8. Viết chương trình con thực hiện phép toán AND 8 bit ở thanh ghi A và cho kết quả trong cờ C với các cách
sau:
a) Áp dụng lệnh CJNE để tìm kết quả AND.
b) Áp dụng lệnh ANL cho biến Boole
Ứng dụng chương trình con trên để tìm:
i) AND 4 bit thấp của cổng P1 và kết quả xuất ra P1.4
ii) AND 16 bit của DPTR và kết quả để ở cờ C.
9. Viết chương trình con thực hiện phép toán OR 8 bit ở thanh ghi A và cho k
ết quả trong cờ C với các cách
sau:
a) Áp dụng lệnh JZ hoặc JNZ để tìm kết quả OR.
b) Áp dụng lệnh ORL cho biến Boole
Ứng dụng chương trình con trên để tìm:
i) OR 4 bit thấp của cổng P1 và kết quả xuất ra P1.4
ii) OR 16 bit của DPTR và kết quả để ở cờ C.

c) Viết chương trình con thực hiện trừ 2 số không dấu nhiều byte nhiều byte: N1 = N1 – N2.
13. Viết chương trình bằng hợp ngữ hoặc C để mô phỏng bộ đếm lên/xuống 8 bit với ngõ ra 8 bit ở cổng P2.
Bộ đếm này có các chân đi
ều khiển sau:
 P0.0 = RESET = khi có cạnh xuống ở chân này thì ngõ ra P2 là 0. (có ưu tiên cao nhất)
 P0.1 = UP = khi có cạnh xuống thì giá trị của P2 được tăng thêm 1 (có ưu tiên nhì)
 P0.3 = DOWN = khi có cạnh xuống thì giá trị của P2 được giảm đi 1 (có ưu tiên thấp nhất)
Sửa lại chương trình với chân RESET dùng ngắt ngoài 0 (/INT0).
14. Tận dụng chương trình (bằng hợp ngữ hoặc C) mô phỏng bộ đếm lên/xuống 8 bit ngõ ra nhị phân để mô
phỏng bộ
đếm lê/xuống 4 bit có cho phép nạp trị đầu và trị cuối của bộ đếm (giả sử giá trị đầu là 4 bit cao của
P1 và giá trị cuối là 4 bit thấp của P1, giá trị đầu luôn luôn nhỏ hơn giá trị cuối). Bộ đếm này có các chân điều
khiển sau:
 P0.0 = RESET = khi có cạnh xuống ở chân này thì nạp trị đầu và cuối vào counter để cho phép trị
bắt đầu đếm là giá trị đầu. (có ưu tiên cao nhất)
 P0.1 = UP = khi có c
ạnh xuống thì giá trị của P2 được tăng thêm 1 (có ưu tiên nhì)
 P0.3 = DOWN = khi có cạnh xuống thì giá trị của P2 được giảm đi 1 (có ưu tiên thấp nhất)
15. Viết chương trình tính trị trung bình (không dấu) cùa các số trong các thanh ghi từ R1 đến R4 và kết quả
được đặt trong thanh ghi A (thương số) và B (dư số). Chương trình này được viết theo các cách sau:
a) Dùng cách định địa chỉ thanh ghi cho các thanh ghi R1 R4.
b) Dùng cách định địa chỉ gián tiếp cho các thanh ghi R1 R4.
16. Viết chương trình con tính giai th
ừa cùa 1 số trong thanh ghi R0 ( 5) bằng các cách sau:
a) Đệ qui (chương trình con gọi chính nó)
b) Tra bảng bằng MOVC
17. Xét 1 mạch 8051 với các công tắc: SW1 được nối với P0.0, SW2 nối với P0.1; và các LED được nối:
LED 1 được nối với P0.2, LED 2 được nối với P0.3. Giả sừ LED có V
LED
=2V và I

P2.1.
20. Thiết kế
mạch 8051 có chức năng sau: (SV tự chọn bất cứ chân nào của cổng I/O cho ngõ vào điều khiển)
 Các ngõ ra sáng lần lượt liên tục theo qui luật sau khi ngõ vào điều khiển bằng 0
Đèn LED xanh sáng trong 5 s trong khi các đèn LED khác tắt.
Đèn LED vàng sáng trong 2 s trong khi các đèn LED khác tắt
Đèn LED đỏ sáng trong 8 s trong khi các đèn LED khác tắt
 Chỉ có đèn LED vàng sáng nhấp nháy với chu kỳ 2 s khi ngõ vào điều khiển bằng 1.
21. Chương trình con sau tạo trễ 1 giây với XTAL=12MHz.
DELAY: MOV R0, #0
MOV R1, #0
MOV R2, #8
LOOP: DJNZ R0, LOOP
DJNZ R1, LOOP
DJNZ R2, LOOP
RET
a) Nếu sử dụng XTAL = 6MHz thì phải sửa các tham số nào trong chương trình trên để vẫn có trễ 1 giây?
b) Chương trình con trên có sai số bao nhiêu? Hãy sửa lại chương trên để có độ chính xác cao nhất có thể
được.
22. Viết chương trình tìm giá trị của y (trong thanh ghi R7) bằng 2 cách: dùng các lệnh MUL và lệnh MOVC,
với giá trị y cần tính là
a) y = x
2
+ 2x + 5 với x (trong thanh ghi A) có giá trị từ 0 đến 9
b) y = x
2
– 2x + 3 với x (trong thanh ghi A) có giá trị từ 0 đến 9
23. Viết chương trình con đếm số bit 0 trong thanh ghi R2 với kết quả đặt trong thanh ghi R3. Áp dụng
chương trình con này đếm số bit 1 trong thanh ghi R2.
24. Viết chương trình đọc từ 32 byte từ cổng nối tiếp và cất vào 32 byte trong RAM nội từ địa chỉ 20H đến

 P0.3 = DOWN = khi có cạnh xuống thì giá trị của P2 được giảm đi 1 (có ưu tiên thấp nhất)
b) Sửa lại chương trình ở a) với chân RESET dùng chân ngắt ngoài 0 (/INT0).
28. Thiết kế mạch định thì đơn giản với hiển thị trên LED 7 đoạn (như mạch ở câu trên) cho thấy số đếm từ 0s
đến 60s. Mạch hoạt động theo nguyên t
ắc sau:
 Khi có cạnh xuống ở tín hiệu STOP/RUN (được nối vào chân ngắt ngoài /INT0) thì sẽ hiển thị thời
gian từ 0 đến 60s và lặp lại (chế độ RUN), và khi có cạnh xuống ở STOP/RUN lần nữa thì nó sẽ dừng
(chế độ STOP) với số hiển thị đứng yên không tăng nữa.
 Sau khi reset hệ thống thì mạch ở chế độ STOP và hiển thị 0s.
Hãy viết chương trình hợp ngữ cho m
ạch này với định thì 1s dùng ngắt timer 0 và chế độ STOP/RUN dùng
ngắt ngoài /INT0 kích cạnh xuống.
29. Cho trước mạch hiển thị sau:

Các kết nối ngoại vi với 8051 như sau:
VXL _BTOTHK–6/8
 các đoạn a đến g và dp (dấu “.” trong hình) được nối với P0 (bắt đầu từ a nối với P0.0) với điện trở
hạn dòng là 330, thí dụ khi ở cổng P0 có P0.1=0 và P1.1=0 còn các chân khác là 1 và ở cổng P1
có P1.0 =0 và các chân khác là 1 thì sẽ hiện số 1 ở LED số 4.
 các khóa điện tử PNP có số hiệu là 2N2907 với điện trở ở cực nền là 1K
 các chân P1.0 đến P1.3 được nối vớ
i các LED 7 đoạn số 4 đến 1, trong ứng dụng này ta dùng LED
7 đoạn số 4 cho hiện số hàng đơn vị, LED 7 đoạn số 3 cho hiện số hàng chục, và LED 7 đoạn số 2
cho hiện số hàng trăm.
Hãy viết chương trình hợp ngữ hoặc C để đổi 1 số nhị phân 8 bit trong thanh ghi A ra số BCD 3 ký số và
hiển thị kết quả với mạch trên.
30. Viết chương trình hợp ngữ (bằng 2 cách: l
ệnh logic với biến Boole và lệnh rẽ nhánh với biến Boole) hoặc
C để mô phỏng mạch tổ hợp sau khi chưa rút gọn hàm Boole và sau khi rút gọn hàm Boole.


dùng timer và dùng timer 0.
b) Một hệ thống có 2 công tắc S1 và S2 được nối lần lượt vào các chân P1.6 và P1.7. Khi có cạnh xuống ở
P1.6 thì hệ thống trễ ở a) hoạt động.
VXL _BTOTHK–7/8
Viết chương trình đếm số lần có cạnh xuống ở P1.7 khi hệ thống đang trễ 3 s. Số đếm được sẽ được đặt
trong RAM nội ở địa chỉ 40H. Việc đếm số lần có cạnh xuống của P1.7 được viết theo cách hỏi vòng trạng
thái của P1.7 khi có trễ 3 s.
Chú ý:
Với giản đồ định thì sau thì tại thời điểm t
1
ta có (40H) = 3 và tại thời điểm t
2
ta có (40H) = 2. Công tắc S1 (P1.6)
Hệ thống trễ Công tắc S2 (P1.7)
c) Viết lại b) khi S1 được nối vào ngát ngoài 0 /INT0 và S2 được nối vào T0 của timer 0
35. Viết chương trình tạo sóng vuông 125 Hz có chu kỳ nhiệm vụ là 25% theo các cách sau:
a) Không dùng timer
b) Dùng timer 0 chế độ 2 và không dùng ngắt timer 0.
c) Dùng timer 0 chế độ 1 và không dùng ngắt timer 0.
d) Dùng timer 0 chế độ 2 và dùng ngắt timer 0.
e) Dùng timer 0 chế độ 1 và dùng ngắt timer 0.

như cũ. Thời gian giữa 2 lần dịch là 200ms.
d) Xuất ra chuỗi “Test: ” ở hàng thứ 2 và xuất tiếp các con số ở cùng 1 vị trí trên hàng 2 các số từ 0 đến 9
và lặp lại, thời gian hiện cho 1 số là 1s.
41. Cho biết nội dung của SP và RAM nội sau khi thực thi đoạn ch
ương trình sau:

MOV SP, #49h
MOV 4AH,#5AH
MOV 48H,#0A5h
XRL 48H,#63h
POP 00h

Địa chỉ
RAM
Trước khi thực thi Sau khi thực thi
SP 07H
4AH 08H
49H 07H
48H 06H
00H 05H
42. Hãy tìm dải địa chỉ cho ROM0, ROM1 và RAM ở mạch sau và viết các lệnh đọc 1 byte từ RAM vào R2.

43. Cho trước mạch giao tiếp 8051 với bàn phím và chương trình sau:

MOV P2,#0FH
MOV A,#11110111B
MOV R0,#30H
LOOP:
MOV P1,A
MOV @R0,P2


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status