Professional Documents
Culture Documents
Bai Tap Ktvxlud SV
Bai Tap Ktvxlud SV
2. Chuyển các số nhị phân sau sang hệ thập phân và hệ thập lục phân ? Và cho
biết số bù 1 và bù 2 của chúng ? Cho biết số bù 1 và bù 2 của chúng ?
1111 1111 1111 1010 1010 1010 1100 1001 1010 1011 1110 1000
1011 1110 1111 1111 0001 0110 1000 0001 0101 1100 1110 0101
3. Chuyển các số thập lục phân sau sang hệ nhị phân và hệ thập phân ? Cho biết
số bù 1 và bù 2 của chúng ?
1508H 2711H 1988H 1991H
FAFBH FAFCH FA0FH DEB2H
4. Thực hiện các phép toán cộng, trừ, nhân, chia giữa các số đã cho trong 3 bài
1, 2, 3 với nhau ?
2. Xác định địa chỉ logic có thể có của địa chỉ vật lý: 64143H?
3. Một ô nhớ trong hệ vi xử lý 8086 có địa chỉ vật lý là FAFBDH khi CPU thực
hiện nạp lệnh tại địa chỉ này thì CS = ? : IP = ? Nếu biết địa chỉ của thanh ghi
đoạn là:
F1F2H 1234H 1508H 711AH
3686H 6414H 4143H 1307H
4. Vẫn câu hỏi trên nhưng trong trường hợp các địa chỉ đã là cho là địa chỉ của
thanh ghi lệch?
5. Cho biết kết quả khi thực hiện các lệnh: NOT, OR, NOR, XOR, AND,
NAND cho 1100 0101 1111 1010?
6. Viết chương trình bằng ngôn ngữ ASM nạp dữ liệu vào các thanh ghi đa
năng và thực hiện các phép toán cộng, trừ, nhân, chia, di chuyển dữ liệu,
NOT, OR, NOR, XOR, AND, NAND các bit?
3.1. Chủ đề
- Hệ thống hỗ trợ BUS: Đệm BUS: Ghép nối giữa các IC 74LS244, 74LS245,
74LS373 với vi xử lý.
- Biểu đồ thời gian của các lệnh đọc ghi.
- Phối ghép vi xử lý với bộ nhớ: Giải mã địa chỉ bộ nhớ: Sử dụng các cổng
logic cơ bản, Dùng IC 74LS138, Dùng PROM. Cách ghép nối các bộ nhớ...
- Thâm nhập bộ nhớ trực tiếp DMA.
- Phối ghép vi xử lý với thiết bị ngoại vi.
3.2. Câu hỏi lý thuyết:
1. Chức năng, bảng sự thật, nguyên tắc hoạt động, sơ đồ chân, sơ đồ kết nối của
chúng với vi xử lý của các IC 74LS373, 74LS244, 74LS245, 74LS138?
2. Chức năng của các chân của vi xử lý: READY, INTR, INTA, NMI, ALE,
DEN, DT/R, IO/M, RD, WR?
3. Vẽ biểu đồ thời gian của các lệnh đọc ghi? Quán trình làm việc của CPU
trong các chu kì đồng hồ? Chu kì bus là gì? Cách xác định?
4. Vẽ mạch tạo từ 0 đến 7 chu kì đợi của vi xử lý?
5. Các bộ nhớ bán dẫn?
6. Cấu tạo, các tín hiệu chức năng, cách xác định dung lượng và từ nhớ của một
vi mạch nhớ?
7. Cách ghép nối các vi mạch nhớ với nhau? Lấy ví dụ?
8. Trình bày 3 phương pháp giải mã địa chỉ cho bộ nhớ: Sử dụng các cổng logic
cơ bản, Dùng IC 74LS138, Dùng PROM?
9. Trình bày về quá trình thâm nhập bộ nhớ trực tiếp DMA?
10. Các kiểu ghép nối vào ra? Đặc điểm của nó?
11. Vẽ sơ đồ ghép nối giữa 8086/8088 với bàn phím 16 số dạng tiếp điểm? Trình
bày nguyên lý hoạt động của hệ thống?
12. Vẽ mạch hiển thị số sử dụng vi mạch 7447 và LED bảy đoạn với vi xử lý?
Trình bày nguyên lý hoạt động của hệ thống?
13. Sơ đồ khối mạch ghép nối song song lập trình được 8255A? Chức năng các
chân? Các chế độ làm việc và cách cấu hình cho 8255A? Lấy ví dụ?
14. Trình bày về cơ sở truyền thông nối tiếp trong vi xử lý?
15. Vẽ sơ đồ khối, chức năng các chân, các thanh ghi và cách cấu hình để lập
trình cho mạch USART 8251A? lấy ví dụ?
16. Chức năng, cách cấu hình cho các chế độ làm việc của các vi mạch sau:
8284, 8288, 8253, 8259, 8237? Lấy ví dụ?
3.3. Bài tập vận dụng
1. Tần số 1000MHz đưa tới chân CLK của các bộ đếm của 8253. Muốn tạo ra
một tín hiệu xung vuông có tần số bằng 2KHz thì ta phải nạp trước giá trị
bao nhiêu vào bộ đếm?
2. Xác định chu kì BUS (chu kì đọc ghi) và chu kì đồng hồ của CPU khi CPU
làm việc với xung nhịp:
5 MHz 10 Hz 15 KHz 20 Ghz
8 Mhz 88 Hz 368 Khz 135 Ghz
3. Thiết kế bộ nhớ có dung lượng 2K x 8bit dùng các IC nhớ 2K x 4bit? Thiết
kế bộ nhớ có dung lượng 4K x 4bit dùng các IC nhớ 2K x 4bit? Thiết kế bộ
nhớ 16K x 8bit dùng các IC nhớ 16K x 1 bit? Thiết kế bộ nhớ ROM 8Kx8
bit từ các IC 1Kx 8bit?
4. Xác định địa chỉ đầu và cuối của mỗi vùng dữ liệu sau:
5. Phân tích, xác định vùng địa chỉ của các đầu ra 74LS138, IC 2764, IC 2716,
địa chỉ các cổng PA, PB, PC và thanh ghi từ điều khiển CWR của 8255A?
Gợi ý:
Thứ tự ghi và điều kiện để ghi các điều khiển ICW vào 8259A.
2. Câu hỏi tổng quát: Các địa chỉ cần gán cho thanh ghi các thanh ghi từ điều
khiển ICW khi muốn lập trình cho 8259 làm việc với CPU 8088 ở chế độ
chủ ( hoặc thợ - tớ) (đơn lẻ), trong có đệm ( hoặc không đệm) bus, chế độ ưu
tiên cố định (hoặc không ưu tiên) và với EOI thường (hoặc EOI tự động) IR
kích theo mức (hoặc kích theo sườn), tín hiệu IR0 (hoặc IR bất kì từ IR0 đến
IR7) được gán với số hiệu ngắt là 80h? (hoặc gán giá trị bất kì từ 00h-F1h)
3. Các địa chỉ cần gán cho thanh ghi thanh ghi từ điều khiển ICW3 khi muốn
lập trình cho 8259A chủ và 8 mạch 8259A thợ nối vào chân IR0 IR7 của
mạch chủ?
Gợi ý: Cấu hình cho thanh ghi từ điều khiển ICW3
4. Câu hỏi tổng quát: Các địa chỉ cần gán cho thanh ghi thanh ghi từ điều khiển
ICW3 khi muốn lập trình cho 8259A chủ và 8 (Hoặc từ 1 đến 8) mạch
8259A thợ nối vào chân IR0 IR7 (Hoặc 1 trong các chân IRi ) của mạch
chủ?
5. Tìm địa chỉ gán vào các từ điều khiển hoạt động OCW của 8255A?
- Các ngắt IR0-IR7 bị che
- EOI thường, Mức ưu tiên ngắt thấp nhất là IR2.
- Thiết lập chế độ mặt nạ đặc biệt, thăm dò yêu cầu ngắt, chọn thanh ghi
IRR để đọc?
Gợi ý:
Cấu hình cho thanh ghi từ điều khiển OCW1
6. Câu hỏi tổng quát: Tìm địa chỉ gán vào các từ điều khiển hoạt động OCW
của 8255A?
- Các ngắt IR0IR7 (Hoặc bất kì IR nào) bị che (Hoặc không che)
- EOI thường (Hoặc EOI bất kì) , Mức ưu tiên ngắt thấp nhất là IR1 (Hoặc
1 trong những IR từ IR0 đến IR7).
- Thiết lập chế độ mặt nạ đặc biệt (Hoặc xóa mặt nạ đặc biệt), thăm dò yêu
cầu ngắt (Hoặc không thăm dò), chọn thanh ghi IRR (Hoặc ISR) để đọc?
5.3. Bài tập vận dụng: Trong các bài về lập trình đều sử dụng KeilC để soạn thảo,
gỡ lỗi, biên dịch và dùng Proteus để mô phỏng cho vi điều khiển 8051.
1. Xác định tần số và chu kì đồng hồ của bộ định thời/bộ đếm nếu các tần số
thạch anh mắc với 8051 là:
11,0592MHz 16 MHz 32 MHz 12Mhz
2. Ghép nối LED đơn với chân P1.0 của vi điều khiển, viết chương trình điều
khiển LED nhấp nháy với các yêu cầu:
- Khai báo đầy đủ 4 phần trong 1 chương trình C?
- Khai báo 2 phần chính: Tiền xử lý, chương trình chính.
- Tạo một khoảng thời gian trễ đặt trước?
3. Điều khiển LED đơn nối với 1 PORT (PORT 1) sáng theo hiệu ứng? Với 3
yêu cầu như bài 1.
4. Đọc trạng thái phím bấm và hiện thị lên LED? Dùng 2 phương pháp: Ngắt và
hỏi vòng:
- 1 nút bấm nối với 1 chân, 1 led nối với 1 chân của 8051.
- 2 nút bấm, 1 nút ấn thì led sáng, 1 nút ấn thì led tắt.
- 8 led nối với PORT 1, 3 nút ấn nối với 3 chân của 8051, 1 nút ấn thì led
sáng từ trái sang phải, 1 nút ấn thì led sáng từ phải qua trái, 1 nút ấn thì
tất cả led tắt?
5. Lập trình điều khiển hiện thị LED 7 thanh Anode chung theo các yêu cầu:
- 1 led 7 thanh nối với 1 PORT, điều khiển hiện thị các số đếm trong hệ
16?
- 2 led 7 thanh nối với 2 PORT hiện thị các số đếm tiến từ 00 đến 99?
- 2 led 7 thanh nối với 2 PORT hiện thị các số đếm lùi từ 99 về 00?
- 2 led 7 thanh nối với 2 PORT hiện thị các số đếm tiến từ 00 đến 99 và khi
đến 99 thì đếm lùi về 00?
- 3 led 7 thanh nối với 3 PORT hiện thị các số đếm tiến từ 000 đến 999?
- 3 led 7 thanh nối với 3 PORT hiện thị các số đếm lùi từ 999 về 000?
- 3 led 7 thanh nối với 3 PORT hiện thị các số đếm tiến từ 000 đến 999 và
khi đến 999 thì lùi về 000.
- 4 led 7 thanh nối với 4 PORT hiện thị các số đếm tiến từ 0000 đến 9999?
- 4 led 7 thanh nối với 4 PORT hiện thị các số đếm lùi từ 9999 về 0000?
- 4 led 7 thanh nối với 4 PORT hiện thị các số đếm tiến từ 000 đến 999 và
khi đến 9999 thì lùi về 0000?
6. Cùng các câu hỏi trên nhưng LED 7 thanh được sử dụng là loại mắc Cathode
chung?
7. Có 1 led 7 thanh (Anode chung hoặc Cathode chung) mắc vào 1 PORT, 2
phím bấm được nối vào 2 chân của 8051 yêu cầu: Dùng 2 phương pháp:
Ngắt và hỏi vòng:
- Nếu ấn 1 phím bấm số hiện thị sẽ tăng.
- Nếu ấn phím còn lại số hiện thị sẽ giảm.
8. Ghép nối ma trận bàn phím 4x4 với vi điều khiển, lập trình cho 8051 hiện thị
các số từ 1 đến 16 khi có 1 phím được tác động?
9. Thiết kế mạch đồng hồ hiện thị giờ, phút, giây với các phím bấm điều chỉnh
các thông số về thời gian tương ứngx?
10. Lập trình hiện thị kí tự bất kì lên LED matrix 8x8?
11. Tạo ra một sóng vuông với độ đầy xung 50% (cùng tỷ lệ giữa phần cao và
phần thấp) trên chân P1.5. Bộ định thời Timer0 (Hoặc Timer1) được dùng
để tạo độ trễ thời gian?
12. Viết chương trình sử dụng bộ đếm 1, đếm các xung ở chân P3.5 và hiển thị
số đếm được (trong thanh ghi TL1) lên cổng P2?
13. Hãy lập trình cho 8051 để nhận các byte dữ liệu nối tiếp tốc độ 9600 baud và
bật các Led trên Port 2 tương ứng: Máy tính gửi xuống số 1: 1 Led sáng, số
2: 2 Led sáng, … , số 8: 8 Led sáng, nếu các ký tự khác thì tắt tất cả các Led?
14. Chương trình trễ 10s cho 8051 với tần số thạnh anh 24MHz sử dụng timer 0?
15. Cấu hình cho bộ định thời của 8051 khi nó làm việc với Timer0 ở :
- Bộ định thời 13 bit:8 bit, 5 bit đặt trước.
- Bộ định thời 16 bit: không có đặt trước.
- Bộ định thời 8 bit: tự nạp lại.
- Chế độ bộ định thời chia tách.
16. Câu hỏi tương tự câu 15 nhưng khi sử dụng Timer1?
17. Câu hỏi tương tự câu 15 nhưng khi sử dụng Counter?
18. Lấy ví dụ với hiện thị led đơn, led 7 thanh, led matrix 8x8, lập trình ứng
dụng với các ngắt ngoài (0 và 1), ngắt do bộ định thời (Timer0 và Timer1),
ngắt truyền thông nối tiếp?
23. Con trỏ ngăn xếp của 8051 sẽ có giá trị là bao nhiêu sau khi thực hiện
chương trình sau?
MOV R6,#15H
MOV R1,#08H
MOV R4,#88H
PUSH 6
PUSH 1
PUSH 4
24. Xác định nội dung ngăn nhớ 11H trong RAM của 8051 sau khi thực hiện
đoạn chương trình sau?
SETB PSW.4
MOV 0,#15H
MOV 1,#08H
MOV 2,#19H
MOV 7,#88H
MOV 5,#91H
25. Viết chương trình xác định xem R1 có chứa giá trị 8 không? Nếu bằng 8 thì
nạp vào R1 giá trị 15H?
26. Viết chương trình để xóa ACC và sau đó cộng 8 vào ACC 15 lần?
27. Viết chương trình nạp thanh ghi ACC với giá trị 15H và lấy bù ACC 88 lần ?
28. Viết đoạn chương trình tính tổng 15H và 88H ghi kết quả vào R1?
29. Viết đoạn chương trình tính tổng 15+88, kết quả đặt vào thanh ghi A?
30. Tính tổng 15H, 08H và 88H. Ghi byte thấp của tổng vào R0 và byte cao vào
R5?
31. Các cờ CY, PF, AC sẽ ảnh hưởng như thế nào sau khi thực hiện lệnh:
MOV A,#FAH
ADD A,#0FH
32. Viết đoạn chương trình để lưu thanh ghi tích lũy vào R5 của băng 2?
33. Viết đoạn chương trình kiểm tra bit P1.0 cho đến khi bit này lên cao sau đó
ghi giá trị 69H ra cổng P2?
34. Viết đoạn chương trình kiểm tra bit P1.0 cho đến khi bit này lên cao sau đó
ghi giá trị 96H ra cổng P2 và gửi một xung Cao Xuống Thấp tới P0.1?
35. Viết đoạn chương trình xác lập cổng P1 là cổng vào và liên tục đọc cổng P1
và xuất giá trị đọc được ra cổng P3?
36. Hãy tính độ trễ thời gian tính, bỏ qua thời gian thực hiện các lệnh trong vòng
lập?(Tần số thạch anh sử dụng là 16Mhz)
TMOD = 0x10 ;
TL1=0 ;
TH1=0 ;
TR1=1 ;
while ( !TF1) ;
TR1=0 ;
TF1=0 ;
37. Hãy viết chương trình cho bộ đếm 0 ở chế độ 1 để đếm các xung và hiển thị
trạng thái của số đếm TL1 trên cổng P2?
38. Lập trình cho 8051 để nhận các byte dữ liệu nối tiếp và đặt chúng vào cổng
P1. Đặt tốc độ baud là 9600, 8 bit dữ liệu và 1 bit stop ?
39. Cho tần số thạch anh XTAL = 16Mhz, hãy tìm giá trị TH1 để đặt tốc độ baud
là 9600 và 4800 với SMOD=1 ?
40. Hãy tính tốc độ baud với TH1= -2 và XTAL=16Mhz ?
41. Hãy lập trình cho 8051 để nhận các byte dữ liệu nối tiếp và đặt chúng vào
cổng P2. Đặt tốc độc baud là 9600, 8 bit dữ liệu và một bit stop ?
42. Viết chương trình thực hiện truyền ra cổng nối tiếp liên tục một ký tự ‘K’ với
tốc độ baud 9600?
43. Trong đoạn chương trình 8051 sau lệnh MOV DPTR,#KB thì DPTR sẽ có
giá trị bằng bao nhiêu?
ORG 0
MOV DPTR, #TAB1
MOV A,#0FFH
MOV P1,A
TG:
MOV A,P1
MOVC A,@A+DPTR
MOV P2,
SJMP TG,
ORG 300H
KB: DB 80, 1, 4, 9, 16, 25, 36, 49, 64, 81
END
Chương 6. LẬP TRÌNH ỨNG DỤNG VỚI VI ĐIỀU KHIỂN TIÊN TIẾN
28. Lập trình cho vi điều khiển giao tiếp với một chiều?
29. Lập trình cho vi điều khiển giao tiếp với máy phát một chiều?
30. Lập trình cho vi điều khiển giao tiếp với IC thời gian thực?
31. Lập trình cho vi điều khiển giao tiếp với module wifi?
32. Lập trình cho vi điều khiển giao tiếp với module bluetooth?
33. Lập trình cho vi điều khiển giao tiếp với module camera?
34. Lập trình cho vi điều khiển giao tiếp với module nhận dạng giọng nói VR?
35. Lập trình cho vi điều khiển giao tiếp với module Joystick?
36. Lập trình cho vi điều khiển giao tiếp với ma trận bàn phím?
37. Lập trình cho vi điều khiển giao tiếp với module RFID?
38. Lập trình cho vi điều khiển giao tiếp với module GPS?
39. Lập trình cho vi điều khiển giao tiếp với module Sim?
40. Lập trình cho vi điều khiển giao tiếp truyền thông với máy tính?
41. Lập trình cho vi điều khiển giao tiếp với LCD?