Câu 16: Chương trình khởi động động cơ qua 3 cấp điện trở phụMain:SETB P1.0 ; khởi động từ chínhACALL Delay ; trễ 10sSETB P1.1 ; khởi động từ loại Rf1ACALL Delay ; trễ 10sSETB P1.2 ; khởi động từ loại Rf2ACALL Delay ; trễ 10sSETB P1.3 ; khởi động từ loại Rf3ACALL DelayDelay:PUSH 07hPUSH 06hPUSH 05HMOV R6,200 Delay1: MOV R7,250Delay2:MOV R5, 200 DJNZ R5, DJNZ R7, Delay1DJNZ R6, Delay1 POP 05h
Trang 1BÀI TẬP VI ĐIỀU KHIỂN
Câu 1: Trình bày hoạt động của vi điều khiển
• 1 Khi không có nguồn điện cung cấp, vi điều khiển chỉ
là một con chip có chương trình nạp sẵn vào trong đó và không
có hoạt động gì xảy ra
• 2 Khi có nguồn điện, mọi hoạt động bắt đầu được xảy
ra với tốc độ cao Đơn vị điều khiển logic có nhiệm vụ điều
khiển tất cả mọi hoạt động Nó khóa tất cả các mạch khác, trừ mạch dao động thạch anh Sau mini giây đầu tiên tất cả đã sẵn sàng hoạt động
Trang 2Chương 3 Lập trình hợp ngữ cho 8051
3 Điện áp nguồn nuôi đạt đến giá trị tối đa của nó và tần
số dao động trở nên ổn định Các bit của các thanh ghi SFR cho biết trạng thái của tất cả các mạch trong vi điều khiển Toàn bộ vi điều khiển hoạt động theo chu kỳ của chuỗi xung chính
4 Thanh ghi bộ đếm chương trình (Program Counter) được xóa về 0 Câu lệnh từ địa chỉ này được gửi tới bộ giải mã lệnh sau đó được thực thi ngay lập tức
5 Giá trị trong thanh ghi PC được tăng lên 1 và toàn bộ quá trình được lặp lại vài triệu lần trong một giây
BÀI TẬP VI ĐIỀU KHIỂN
Trang 3Câu 2: Nêu cấu trúc chung của vi điều khiển Trình bày về ROM, RAM của vi điều khiển
Bộ nhớ (Memory)
- Read Only Memory (ROM)
- Random Access Memory (RAM)
-Electrically Erasable Programmable ROM (EEPROM)
Các thanh ghi chức năng đặc biệt (SFR)
Bộ đếm chương trình (PC: Program Counter)
Central Processor Unit (CPU)
Các cổng vào/ra (I/O Ports)
Bộ dao động (Oscillator)
Bộ định thời/đếm (Timers/Counters)
Truyền thông nối tiếp
Chương trình
Trang 4BÀI TẬP VI ĐIỀU KHIỂN
Câu 3: Chuyển từ hệ cơ số 10 các số: 34, 225,
143 sang hệ cơ số 2 và cơ số 16
* Nguyên tắc:
Để chuyển từ hệ cơ số bất kỳ sang thập phân, nguyên tắc là cứ chia số đó lấy phần dư rồi tiếp tục chia phần nguyên lấy phần dư tiếp sau đó xếp thứ tự ngược từ dưới lên
Trang 5BÀI TẬP VI ĐIỀU KHIỂN
2
34
217
2
10
2
201
* Chuyển 34 sang hệ nhị phân:
Sắp xếp các số dư từ dưới lên trên ta được: 34 (demical) = 100010 (binary) Hoặc viết: 34 = 100010b
Trang 6BÀI TẬP VI ĐIỀU KHIỂN
* Chuyển 225 sang hệ nhị phân: 225 = 11100001b
* Chuyển 143 sang hệ nhị phân: 143 = 10001111b
Trang 7BÀI TẬP VI ĐIỀU KHIỂN
Câu 3: Chuyển các số sau sang hệ 10: 23h, 110101b,
Trang 8BÀI TẬP VI ĐIỀU KHIỂN
Câu 4: Thực hiện phép toán sau bằng thanh ghi 8 bít.
Trang 9BÀI TẬP VI ĐIỀU KHIỂN
Câu 6: Trình bày chuẩn 8051
AT89C51 là vi điều khiển do Atmel sản xuất, chế tạo theo công nghệ CMOS có các đặc tính như sau:
+ 4 KB PEROM (Flash Programmable and Erasable Read Only Memory), có khả năng tới 1000 chu kỳ ghi xoá
+ Tần số hoạt động từ: 0Hz đến 24 MHz
+ 3 mức khóa bộ nhớ lập trình
+ 128 Byte RAM nội
+ 4 Port xuất /nhập I/O 8 bit
+ 2 bộ Timer/counter 16 Bit
+ 6 nguồn ngắt
Trang 10BÀI TẬP VI ĐIỀU KHIỂN
+ Giao tiếp nối tiếp điều khiển bằng phần cứng.+ 64 KB vùng nhớ mã ngoài
Trang 11BÀI TẬP VI ĐIỀU KHIỂN
Câu 7: Vẽ sơ đồ chân của vi điều khiển 8051 Nêu ý
nghĩa các chân
Sơ đồ chân của vi điều khiển 8051
Trang 13Chương 3 Lập trình hợp ngữ cho 8051
Ngõ tín hiệu /EA (External Acces):
Thường đặt lên mức cao ( +5V) hoặc mức thấp (GND)
- Nếu ở mức cao, 8951 thi hành chương trình từ ROM nội trong khoảng địa chỉ thấp (4K hoặc tối đa 8k đối với 89C52)
- Nếu ở mức thấp, chương trình được thi hành từ bộ nhớ mở rộng (tối đa đến 64 Kbyte)
BÀI TẬP VI ĐIỀU KHIỂN
Trang 14Chương 3 Lập trình hợp ngữ cho 8051
/PSEN (Program Store Enable):
/PSEN (chân 29) cho phép đọc bộ nhớ chương trình mở rộng đối với các ứng dụng sử dụng ROM ngoài Mã lệnh của chương trình được đọc từ ROM thông qua bus dữ liệu (Port0) và bus địa chỉ (Port0 + Port2)
Khi 8051 thi hành chương trình trong ROM nội, PSEN sẽ
ở mức logic 1
BÀI TẬP VI ĐIỀU KHIỂN
Trang 15BÀI TẬP VI ĐIỀU KHIỂN
Trang 16Chương 3 Lập trình hợp ngữ cho 8051
* Ngõ tín hiệu điều khiển ALE (Address Latch Enable):
• Khi 89C51 truy xuất bộ nhớ bên ngoài, port 0 có chức năng là bus địa chỉ và bus dữ liệu do đó phải tách các đường dữ liệu và địa chỉ Tín hiệu ra ALE ở chân thứ 30 dùng làm tín hiệu điều khiển để giải đa hợp các đường địa chỉ và dữ liệu khi kết nói chúng với IC chốt
• Tín hiệu ra ở chân ALE là một xung trong khoảng thời gian port 0 đóng vai trò là địa chỉ thấp nên chốt địa chỉ hoàn toàn
tự động
BÀI TẬP VI ĐIỀU KHIỂN
Trang 18Câu 8: Trình bày các chế độ dịa chỉ của 8051 Lấy ví
dụ minh họa (2.5)
1 Địa chỉ tức thời: Trong chế độ đánh địa chỉ này toán hạng
nguồn là một hằng số, toán hạng đích là một thanh ghi Ví dụ: MOV A, #52;
2 Địa chỉ thanh ghi: cả toán hạng đích và toán hạng nguồn là các thanh ghi Ví dụ: MOV A, R2
3 Địa chỉ trực tiếp: Một toán hạng là thanh ghi, toán hạng còn lại
là địa chỉ của ô nhớ Ví dụ: MOV R4, 30H;
4 Địa chỉ gián tiếp: Một toán hạng là thanh ghi, toán hạng còn lại
là thanh ghi R0 hoặc R1 chứa địa chỉ của ô nhớ
Ví dụ: MOV A, @R6
5 Địa chỉ theo chỉ số: Một toán hạng là thanh ghi tích lũy A, toán hạng còn lại là ô nhớ của bộ nhớ ROM Ví dụ: MOVC A, @A +
DPTR
Trang 19BÀI TẬP VI ĐIỀU KHIỂN
Trang 27Câu 9: Trình bày cấu trúc chung của một lệnh hợp ngữ Cho ví dụ.(2.5)
Cấu trúc chung của một lệnh hợp ngữ:
nhãn: từ gợi nhớ các toán hạng ; chú giải
Ví dụ:
KIEMTRA: JNB P3.2, BAT ; BAT DEN
JNB P3.3, TAT ; TAT DEN
Nhãn: là tên chương trình con Kết thúc bằng dấu hai chấm (:)
Từ gợi nhớ: là các câu lệnh của hợp ngữ.
Các toán hạng: là các thanh ghi, giá trị, địa chỉ, …
Chú giải: là phần giải thích ý nghĩa của câu lệnh Bắt đầu bằng dấu chấm phẩy (;)
Trang 28BÀI TẬP VI ĐIỀU KHIỂN
Câu 10: Viết chương trình ghi 40H vào ô nhớ 30H của RAM nội sử dụng 2 chế độ đánh địa chỉ trực tiếp và gián tiếp (3.0)
1 Chế độ đánh địa chỉ trực tiếp
MOV A, #40H ; chuyển 40H vào thanh ghi A
MOV 30H, A ; chuyển nội dung thanh ghi A vào ô nhớ có địa chỉ 30H
2 Chế độ địa chỉ gián tiếp
MOV R0, #30H ; Dùng thanh ghi R0 chứa địa chỉ của ô nhớ RAM là 30H
MOV A, #40H ; Chuyển 40H vào thanh ghi A
MOV @R, A ; chuyển nội dung thanh ghi A vào ô nhớ có địa chỉ chứa trong thanh ghi R0
Trang 29BÀI TẬP VI ĐIỀU KHIỂN
Câu 11: Viết chương trình chuyển một chuỗi dữ liệu gồm 10 byte trong RAM nội có địa chỉ đầu là 30H đến vùng RAM nội có địa chỉ đầu là 40H (3.0)
MOV R0, #30H ; dùng thanh ghi R0 chứa địa chỉ đầu 30H
MOV R1, #40H ; dùng thanh ghi R1 chứa địa chỉ đầu 40H
MOV R2, #10 ; dùng thanh ghi R2 làm bộ đếm 10 lần
Trang 30BÀI TẬP VI ĐIỀU KHIỂN
Câu 12: Viết chương trình tính tổng sau: (3.0)
S = 1 + 2 + 3 + … + 10;
MOV A, #0 ; Xóa thanh ghi A MOV R1, #1 ;
MOV R2, 10 ; chứa số đếm là 10 lần Lap:
ADD A, R1 ; INC R1 ; DJNZ R2, Lap
Trang 31BÀI TẬP VI ĐIỀU KHIỂN
Bài 13: Chương trình con tạo trễ 0.5ms dùng timer
LAP:
JNB TF0, LAP ;
CLR TF0 ;
CLR TR0 ;
Trang 32Bài 14: Viết chương trình con tạo sóng vuông 1k HZ trên chân p1.0 (Xtal = 11.0592MHZ)
Trang 33Bài 15 Chương trình hiển thị led 7 thanh số từ 00 đến 99 Dùng Led 7 thanh Cathode chung
Trang 35Câu 16: Chương trình khởi động động cơ qua 3 cấp điện trở phụ
MOV R5, # 200 DJNZ R5, $
DJNZ R7, Delay1 DJNZ R6, Delay1 POP 05h
POP 06h POP 07h RET
END
Trang 36Bài 17: Viết chương trình điều khiển động cơ 1 chiều quay thuận, quay nghịch
a Vẽ sơ đồ b Viết chương trình
; -chương trình quay ngược NGUOC:
SETB P0.1 RET
; -chương trình dừng STOP: ;
CLR P0.0 CLR P0.1 RET
; END
Trang 37Câu 18: Thiết kế mạch, viết chương trình điều khiển
động cơ bước quay thuận nghịch Giải thích ý nghĩa các câu lệnh.
a Thiết kế mạch
Trang 38BÀI TẬP VI ĐIỀU KHIỂN
MOV P1, #00000010B ACALL DELAY
MOV P1, #00000100B ACALL DELAY
MOV P1, #00001000B ACALL DELAY
RET DELAY:
MOV R1, #20 H1: MOV R2,#255
H2: MOV R3,#255 H3: DJNZ R3,H3
DJNZ R2,H2 DJNZ R1,H1 RET
END
Trang 39Câu 19 Thiết kế mạch, viết chương trình điều khiển dãy 8 led đơn sáng dần từ trái qua phải, nhấp nháy, sau đó sáng lần lượt
từ phải qua trái Giải thích ý nghĩa các câu lệnh.
Trang 40BÀI TẬP VI ĐIỀU KHIỂN
a Thiết kế mạch:
Trang 41BÀI TẬP VI ĐIỀU KHIỂN
Trang 42Câu20 Viết chương trình điều khiển mạch đếm sản phẩm sử dụng Timer 1 chế độ 2 hiển thị trên một Led 7 thanh Giải thích ý nghĩa các câu lệnh (5.0)
MOV TMOD, #01100000B; Chọn bộ đếm 1, chế độ 2, bít C/T = 1 xung ngoài.
BACK: MOV A, TL1 ; Lấy bản sao số đếm TL1
Trang 43BÀI TẬP VI ĐIỀU KHIỂN
Trang 44Câu 21: Thiết kế mạch, Viết chương trình hiển thị trên Led 7 thanh từ 0 đến 9 khi ấn nút tăng INC hay nút giảm DEC
a Thiết kế mạch
Trang 45BÀI TẬP VI ĐIỀU KHIỂN
Trang 46BÀI TẬP VI ĐIỀU KHIỂN
CJNE A,#255,Hienthi ; Nếu giá trị giảm = -1 (255) MOV 30H,#9