Ktl-icon-tai-lieu

Kỹ thuật vi xử lý căn bản và vi điều khiển 8051

Được đăng lên bởi tri-tri
Số trang: 5 trang   |   Lượt xem: 1105 lần   |   Lượt tải: 2 lần
Bài tập 1: Cho sáng lần lượt từng LED, mỗi LED sáng 1 giây.
Begin

Tắt tất cả các LED
Sáng LED 1
Trễ 1 giây
Tắt LED 1, sáng LED 2
Trễ 1 giây
Tắt LED 2, sáng LED 3

Tắt LED 7, sáng LED 8
Trễ 1 giây

Trên đây là lưu đồ, việc thể hiện bằng lệnh lưu đồ trên có thể bằng cách chân phương (làm
lần lượt) hoặc có thể dùng lệnh quay để đưa bit = 0 ra lần lượt các chân cổng làm LED sáng
theo lần lượt. Từ bài tập này trở đi, mặc định chương trình đã có khai báo:
#include <sfr51.inc>
Cách chân phương:
org
00h
ljmp main
org
40h
main:
mov SP,#5fh
;Việc tắt tất cả các LED được tự động làm do khi reset lên, các chân cổng đều = 1
mov p1,#11111110b
;sáng LED 1
lcall tre_1s
mov p1,#11111101b
;tắt LED 1, sáng LED 2
lcall tre_1s
mov p1,#11111011b
;tắt LED 2, sáng LED 3

Written by Kieennx, MicroStudy group

Kỹ thuật vi xử lý căn bản và vi điều khiển 8051
lcall
;…
mov
lcall
sjmp

tre_1s
p1,#01111111b
tre_1s
main

mov

r1,#10

mov

r2,#100

mov

r3,#100

tre_1s:
loop1:
loop2:
loop3:
nop
;…<tất cả 8 lệnh Nop>
nop
djnz r3,loop3
djnz r2,loop2
djnz r1,loop1
ret
end
Nếu sử dụng lệnh quay thì chương trình sẽ gọn hơn:
;…
main:
mov SP,#5fh
mov a,#11111110b
main_loop:
mov P1,a
lcall tre_1s
rl
a
sjmp main_loop
tre_1s:
;…như ở trên….
end
Lưu ý là trong các đoạn chương trình trên, ngăn xếp được khởi tạo với giá trị ban đầu của
thanh ghi con trỏ ngăn xếp SP là 5fh, tức là các địa chỉ hay dữ liệu cất vào ngăn xếp sẽ bắt
đầu từ ô nhớ 60h trở đi. Việc khởi tạo ngăn xếp là một thao tác không thể thiếu khi trong
chương trình có sử dụng lệnh gọi chương trình con hoặc các ngắt.

Written by Kieennx, MicroStudy group

Kỹ thuật vi xử lý căn bản và vi điều khiển 8051
Bài tập 2: kiểm tra phím bấm nối với P3.2, khi phím được bấm thì sáng cả 8 LED, khi không
bấm phím thì tắt cả 8 LED.
Begin

Đặt P3.2 là cổng vào

Có phím bấm?

Sáng cả 8 LED

Tắt cả 8 LED

Với lưu đồ thuật toán như trên ta viết được chương trình sau:
…
org
00h
ljmp main
org
40h
main:
;việc đặt cổng P3.2 làm cổng vào được tự động thực hiện khi 8051 reset xong.
;các LED cũng tự động được tắt vì khi 8051 reset xong, các cổng đều = 1
jnb
P3.2,phim_bam
mov P1,#0ffh
;tắt tất cả các LED nếu không có phím bấm
sjmp main
phim_bam:
mov P1,#0
;sáng tất cả các LED nếu có phím bấm
sjmp main
end
Với cùng mạch phần cứng như trên, ta có thể thực hành về ngắt của vi điều khiển. Bài toán
thực hành đặt ra có thể là nếu có phím bấm thì đảo trạng thái của 8 LED (đang sáng thì thành
tắt và ngược lại). Như vậy nếu ...
K thut vi x lý căn bn và vi điu khin 8051
Written by Kieennx, MicroStudy group
Bài tp 1: Cho sáng ln lượt tng LED, mi LED sáng 1 giây.
Trên đây là lưu đồ, vic th hin bng lnh lưu đồ trên có th bng cách chân phương (làm
ln lượt) hoc có th dùng lnh quay để đưa bit = 0 ra ln lượt các chân cng làm LED sáng
theo ln lượt. T bài tp này tr đi, mc định ch
ương trình đã có khai báo:
#include <sfr51.inc>
Cách chân phương:
org 00h
ljmp main
org 40h
main:
mov SP,#5fh
;Vic tt tt c các LED được t động làm do khi reset lên, các chân cng đều = 1
mov p1,#11111110b ;sáng LED 1
lcall tre_1s
mov p1,#11111101b ;tt LED 1, sáng LED 2
lcall tre_1s
mov p1,#11111011b ;tt LED 2, sáng LED 3
Begin
Sán
g
LED 1
Tt tt c các LED
Tr 1
g
y
Tt LED 1, sán
g
LED 2
T
r
1
g
y
Tt LED 2, sán
g
LED 3
Tt LED 7, sán
g
LED 8
T
r
1
g
y
Kỹ thuật vi xử lý căn bản và vi điều khiển 8051 - Trang 2
Kỹ thuật vi xử lý căn bản và vi điều khiển 8051 - Người đăng: tri-tri
5 Tài liệu rất hay! Được đăng lên bởi - 1 giờ trước Đúng là cái mình đang tìm. Rất hay và bổ ích. Cảm ơn bạn!
5 Vietnamese
Kỹ thuật vi xử lý căn bản và vi điều khiển 8051 9 10 256