Bài tập ôn thi học kỳ môn Vi xử lý AY1112-S2 - Hồ Trung Mỹ (Kèm đáp án)

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

pdf8 trang | Chuyên mục: Vi Xử Lý – Vi Điều Khiển | Chia sẻ: tuando | Lượt xem: 488 | Lượt tải: 0download
Tóm tắt nội dung Bài tập ôn thi học kỳ môn Vi xử lý AY1112-S2 - Hồ Trung Mỹ (Kèm đáp án), để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
o 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 = x2+ 2x + 5 với x (trong thanh ghi A) có giá trị từ 0 đến 9 
b) y = x2 – 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 
3FH. Giả sử cổng nối tiếp có tốc độ baud là 4800. Thực hiện công việc bằng các cách sau: 
a) Hỏi vòng với kiểm tra cờ RI. 
b) Ngắt cổng nối tiếp. 
25. Một mạch dùng 8051 để tạo hiệu ứng trên LED với các kết nối LED và công tắc/khóa như sau: 
Các LED đươc nối vào P1.0, P1.1 và P1.2, còn công tắc được nối vào P0.0. Giả sử điện trở kéo lên ở P0.0 
là 10K và các điện trở hạn dòng cho LED là 330. 
Viết chương trình hợp ngữ hoặc C để thực hiện công việc sau: 
 Nếu P0.0 = 1 thì các bit ở P1.2..1.0 có trị nhị phân thay đổi từ nhỏ nhất đến lớn nhất và lặp lại (mỗi 
trị được duy trì trong 0.25s). 
 Nếu P0.0 = 0 thì các bit ở P1.2..1.0 có trị nhị phân thay đổi từ lớn nhất đến nhỏ nhất và lặp lại (mỗi 
trị được duy trì trong 0.25s). 
26. Hãy thiết kế mạch nhấp nháy LED (3 LED với 3 R hạn dòng được gắn vào các chân P1.2..P1.0) với quy 
luật sau: 
 Nếu P1.3=0 thì P1.2..1.0=000, 001, 010, 011, 100, 101, 110, 111 và lặp lại (thời gian trễ giữa 2 số 
đếm là 200ms) 
 Nếu P1.3=1 thì P1.2..1.0=000, 001, 011, 010, 110, 111, 101, 100 và lặp lại (thời gian trễ giữa 2 số 
đếm là 200ms) 
Hãy viết chương trình bằng hợp ngữ hoặc C cho mạch này. 
27. a) Thiết kế mạch dùng 8051 mô phỏng bộ đếm lên/xuống BCD 2 ký số với hiển thị LED 7 đoạn có dồn 
kênh sau: 
 Kết nối với 8051 theo qui ước sau: 
 P1 được nối với các chân a đến g và dp của mạch hiển thị LED. 
 P2.0 và P2.1 được nối với các chân /DIGIT1 và /DIGIT2 của mạch hiển thị LED. 
 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) 
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. 
31. Cho trước chương trình con tạo sóng vuông có chu kỳ nhiệm vụ 50%: 
MOV TMOD, #01h 
SQWAV: MOV TL0, #00 
MOV TH0, #80h 
CPL P1.0 
ACALL TIMER0 
SJMP SQWAV 
TIMER0: SETB TR0 
JNB TF0,$ 
CLR TF0 
CLR TR0 
RET 
 Hãy tìm tần số và chu kỳ của dạng sóng này khi 8051 hoạt động với XTAL có trị số là: 
a) 11.0592 MHz b) 12 MHz c) 16 MHz 
32. Mạch sau dùng để đo tốc độ của trục quay theo số vòng trên phút (rpm) dựa trên công tắc hiệu ứng Hall. 
Trên trục người ta gắn 1 đĩa có gắn các nam châm cách đều nhau, khi nam châm trên đĩa đi ngang qua công 
tắc hiệu ứng Hall thì nó sẽ tạo 1 xung dương ở đầu ra. Như vậy nếu trên đĩa có gắn N nam châm cách đều 
nhau thì khi quay xong 1 vòng thì ngõ ra sẽ có N xung. Ngõ ra của công tắc hiệu ứng Hall này sẽ được gắn 
vào ngõ vào T0 của timer 0 của 8051. Viết chương trình tìm tốc độ theo rpm của trục quay này nếu N = 16. 
33. Viết chương trình hợp ngữ hoặc C để tạo sóng vuông (TON=TOFF) ở chân P2.0. Chu kỳ T của sóng vuông 
này phụ thuộc vào giá trị đọc được từ cổng P1, nếu trị số đọc từ P1 là N thì sóng vuông có chu kỳ là N ms 
(trường hợp N=0 thì không có sóng vuông ở đầu ra). 
34. a) Viết chương trình con có tên DELAY_3S dùng để tạo thời gian trễ 3 giây bằng các cách sau: không 
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 t1 ta có (40H) = 3 và tại thời điểm t2 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. 
36. a) Người ta dùng 1 nguồn xung vuông 1Hz nối với chân T0 của 8051. Viết chương trình sẽ cập nhât các 
biến SS(giây), MM(phút), HH(giờ) được đặt tương ứng trong các ô nhớ trong RAM nội tại các địa chỉ 30H, 
31H và 32H. Nội dung của các biến là HH, MM, và SS là các số BCD 2 ký số biểu diễn các giá trị giờ (tối đa 
23H), phút (tối đa 59H) và giây (tối đa 59H) tương ứng. Tín hiệu RESET được nối vào chân /INT0, khi có 
cạnh xuống tại /INT0 thì các biến HH, MM, và SS có trị đầu là 0. 
b) Hiển thị giờ, phút, và giây với bộ hiển thị LED 7 đoạn dồn kênh 6 ký số. 
c) Hiển thị giờ, phút, và giây với LCD 
37. Ở địa chỉ 200H trong ROM nội (bộ nhớ chương trình) có để chuỗi ký tự (TD: “This is a test!”) được kết 
thúc bằng ký tự NULL (=00H). Viết chương trình chép chuỗi ký tự này vào RAM ngoài từ địa chỉ 2000H và 
đồng thời gửi ra cổng nối tiếp. Giả sử 8051 dùng XTAL=11.0592 MHz và cổng nối tiếp có tốc độ baud là 
9600. Truyền dữ liệu ra cổng nối tiếp được viết bằng 2 cách: hỏi vòng TI và dùng ngắt nối tiếp với TI. 
38. a) Mạch sau cho thấy cách sử dụng cổng nối tiếp chế độ thanh ghi dịch để mở rộng cổng xuất của 8051: 
Viết chương trình xuất nội dung của R2 ra cổng xuất mở rộng này. Giả sử cổng nối tiếp có tốc độ baud là 2400 
và XTAL = 11.0592 MHz. 
b) Với mạch ở a), hãy ghép thêm các thanh ghi dịch 74LS164 để có thêm 2 cổng xuất. Hãy viết chương 
trình xuất 3 byte trong các ô nhớ ở RAM nội có địa chỉ là 30H, 31H và 32H. 
39. Xét 1 hệ thống gồm 2 vi xử lý 8051 M1 và M2: M1 có nhiệm vụ đọc liên tục cổng P1 và xuất nối tiếp đến 
M2, M2 có nhiệm vụ nhận liên tục dữ liệu nối tiếp và hiển thị nội dung của P1 ra 2 LED 7 đoạn được gắn vào 
các cổng P1 và P2. Thí dụ nếu P1 của M1 có trị là 27H thì ở M2 ta sẽ thấy 2 LED 7 đoạn hiển thị số 27. Cả 2 
VXL đều sử dụng cổng nối tiếp có tốc độ baud là 4800 và XTAL = 11.0592 MHz. 
40. a) Vẽ mạch kết nối 8051 với LCD (có 2 hàng, mỗi hàng 20 ký tự) dùng giao tiếp dữ liệu 8 bit 
b) Viết chương trình hiển thị chuỗi “Hello the world!” ở hàng thứ nhất của LCD. 
VXL _BTOTHK–8/8 
c) Tạo hiệu ứng dịch sang trái mỗi lần 1 ký tự của chuỗi ký tự ở b). Sau khi dịch hết thì hiện này chuỗi này 
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 
INC R0 
RR A 
JB ACC.7,LOOP 
Giả sử 2 phím số 4 và 2 được nhấn đồng thời. Hãy cho biết nội dung của các ô nhớ 30H đến 33H trong RAM 
nội là bao nhiêu? 

File đính kèm:

  • pdfbai_tap_on_thi_hoc_ky_mon_vi_xu_ly_ay1112_s2_ho_trung_my_kem.pdf
  • pdfVXL_Dap_an_cua_De_Thi_HK_AY1112-S2_Print.pdf