Liên quan đến ngắt chủ yếu có hai thanh ghi là thanh ghi IE và thanh ghi IP.Thanh ghi IE là thanh ghi đánh địa chỉ bit, do đó có thể dùng các lệnh tác động bit để tác động riêng rẽ lên t
Trang 1Nhóm thảo luận:44R2
TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP
KHOA: ĐIỆN TỬ-BỘ MÔN: TIN HỌC CÔNG NGHIỆP
- -BÀI THẢO LUẬN
VI XỬ LÍ-VI ĐIỀU KHIỂN
ĐỀ TÀI: 11
Viết chương trình điều khiển dãy LED đơn nối vào cổng P2 sáng liên tục đuổi nhau từ P3.7 đến P3.0 Mỗi lần thay đổi thì duy trì trạng thái
trong vòng 1,5 giây
LED sáng khi bit điều khiển bằng 1
GV hướng dẫn: Nguyễn Tuấn Anh
Nhóm sinh viên(số 10): Thái Trung Kiên
Trần Văn Thành
Đỗ Thị Thuỳ Ngân Nguyễn Tiến Thành Trần Tuấn Nam
Trang 2BÀI THẢO LUẬN
VI XỬ LÝ- VI ĐIỀU KHIỂN
ĐỀ TÀI SỐ 11:
Viết chương trình điều khiển dãy LED đơn nối vào cổng P2 sáng liên tục đuổi nhau từ P3.7 đến P3.0 Mỗi lần thay đổi thì duy trì trạng thái
trong vòng 1,5 giây.LED sáng khi bit điều khiển bằng 1
NHÓM SINH VIÊN (Nhóm 10 ):
1 Thái Trung Kiên MSSV : DTK0851030321
Công việc : Nghiên cứu lý thuyết, cách sử dụng các câu lệnh phục vụ bài toán
2 Đỗ Thị Thùy Ngân MSSV : DTK0851030328
Công việc : Nghiên cứu sơ đồ khối, viết sơ đồ khối, viết chương
trình
3 Trần Tuấn Nam MSSV : DTK0851030260
Công việc : Nghiên cứu lý thuyết, cách sử dụng các câu lệnh phục vụ bài toán
4 Nguyễn Tiến Thành MSSV : DTK0851030343
Công việc : Nghiên cứu lý thuyết, cách sử dụng các câu lệnh phục vụ bài toán
5 Trần Văn Thành MSSV : DTK0851030345
Công việc : Ngiên cứu sơ đồ khối, viết chương trình, hoàn tất bài thảo luận
Trang 3NHẬN XÉT CỦA GIÁO VIÊN
Trang 4
MỤC LỤC
2 Phần cứng của họ Vi Điều Khiển 8051 5
Trang 5NỘI DUNG
I MỤC ĐÍCH, YÊU CẦU BÀI TẬP:
- M ụ c đich :
- Hiểu được cấu trúc phần cứng, sơ đồ chân và các mạch phụ trợ của họ điều khiển 8051
- Nắm được các loại thanh ghi,các chế độ địa chỉ,các tập lệnh của họ 8051
- Biết cách lập trình cho họ vi điều khiển 8051
- Có thể nhận ra được sự giống và khác nhau giữa 8086 và
8051
- Yêu c u ầ : Viết chương trình điều khiển dãy LED đơn nối vào cổng P2 sáng liên tục đuổi nhau từ P3.7 đến P3.0 Mỗi lần thay đổi thì duy trì trạng thái trong vòng 1,5 giây LED sáng khi bit điều khiển
bằng 1
II CÁCH TIẾP CẬN VẤN ĐỀ.
1.Các kiến thức cần biết :
Phần cứng của họ Vi Điều Khiển 8051
Các thanh ghi đa năng của họ Vi Điều Khiển 8051
Các chế độ địa chỉ trong họ Vi Điều Khiển 8051
Các tập lệnh sử dụng trong họ Vi Điều Khiển 8051
2 Phần cứng của họ Vi Điều Khiển 8051.
-Tốc độ: 0-24 MHz
-Bộ nhớ:
Bộ nhớ ngoài: 64KB
Bộ nhớ RAM: 128B
Bộ nhớ FLASH ROM: 4KB, hay còn gọi là EPROM
Trang 6-Cổng vào ra I/O Pin: Tất cả các vi điều khiển đều có 4 cổng vào/ra 8 bit có thể thiết lập như cổng vào hoặc ra Như vậy có tất cả 32 chân I/O cho phép vi điều khiển có thể kết nối với các thiết bị ngoại vi
-Truyền thông nối tiếp: Kết nối song song giữa vi điều khiển và thiết
bị ngoại vi được thực hiện qua các cổng vào/ra là giải pháp lý tưởng với khoảng cách ngắn trong vài mét Tuy nhiên khi cần truyền thông giưa các thiết bị ở khoảng cách xa thì không thể dùng kết nối song song, vì vậy truyền thông nối tiếp là giải pháp tốt nhất
-Ngắt vi điều khiển 8051:
8051 hỗ trợ 5 loại ngắt, mỗi ngắt có một vector ngắt riêng, đó là một địa chỉ cố định nằm trong bộ nhớ chương trình Khi xảy ra ngắt CPU
sẽ tựđộng nhảy đếnthực hiện lệnh thuộc địa chỉ này
Liên quan đến ngắt chủ yếu có hai thanh ghi là thanh ghi IE và thanh ghi IP.Thanh ghi IE là thanh ghi đánh địa chỉ bit, do đó có thể dùng các lệnh tác động bit để tác động riêng rẽ lên từng bit mà không làm ảnh hưởng đến giá trị các bit khác Để cho phép một ngắt, bit tương ứng với ngắt đó và bit EA phải được đặt bằng 1
-Bộ định thời/đếm (Timers/Counters): Hầu hết các chương trình sử dụng bộ định thời trong hoạt động của mình Chúng thường là các thanh ghi SFR 8 hoặc 16 bit, sau mỗi xung dao dộng clock, giá trị của chúng được tăng lên Ngay khi thanh ghi tràn, một ngắt sẽ được phát sinh
3 Các thanh ghi đa năng của họ Vi Điều Khiển 8051.
- Thanh ghi tích luỹ (Accumulator): được kí hiệu là A Thanh ghi tích
luỹ có thể truy xuất trực tiếp thông qua địa chỉ E0h (byte)
- Thanh ghi B: dùng cho các phép toán nhân, chia Thanh ghi B cóđịa
chỉ byte F0h vàđịa chỉ bit từ F0h – F7h
-Thanh ghi từ trạng thái chương trình (PSW - Program Status Word):
nằm tại địa chỉ D0h và có các địa chỉ bit từ D0h – D7h
Trang 7Bit 7 6 5 4 3 2 1 0
-Thanh ghi con trỏ stack (SP – Stack Pointer): Con trỏ stack SP nằm
tại địa chỉ 81h và không cho phép định địa chỉ bit SP dùng để chỉ đến đỉnh của stack
- Con trỏ dữ liệu DPTR (Data Pointer): Con trỏ dữ liệu DPTR là
thanh ghi 16 bit bao gồm 2 thanh ghi 8 bit: DPH (High) nằm tại địa chỉ 83h và DPL (Low) nằm tại địa chỉ 82h
- Các thanh ghi port: Các thanh ghi P0 tại địa chỉ 80h, P1 tại địa chỉ
90h, P2, tại địa chỉ A0h, P3 tại địa chỉ B0h là các thanh ghi chốt cho 4 port xuất / nhập (Port 0, 1, 2, 3)
-Thanh ghi port nối tiếp (SBUF - Serial Data Buffer): Thanh ghi port
nối tiếp tại địa chỉ 99h thực chất bao gồm 2 thanh ghi: thanh ghi nhận
và thanh ghi truyền
- Các thanh ghi định thời (Timer Register): Các cặp thanh ghi (TH0,
TL0), (TH1, TL1) và (TH2, TL2) là các thanh ghi dùng cho các bộ định thời 0, 1 và 2 trong đó bộ định thời 2 chỉ có trong 8032/8052
- Các thanh ghi điều khiển: Bao gồm các thanh ghi IP (Interrupt
Priority), IE (Interrupt Enable), TMOD (Timer Mode), TCON (Timer Control), T2CON (Timer 2 Control), SCON (Serial port control) và PCON (Power control)
- Thanh ghi IP tại địa chỉ B8h
- Thanh ghi IE tại địa chỉ A8h
- Thanh ghi TMOD tại địa chỉ 89h
- Thanh ghi TCON tại địa chỉ 88h
- Thanh ghi T2CON tại địa chỉ C8h
- Thanh ghi SCON tại địa chỉ 98h
- Thanh ghi điều khiển nguồn PCON: Thanh ghi PCON tại địa chỉ
87h không cho phép định địa chỉ bit bao gồm các bit như sau:
Trang 83 Các chế độ địa chỉ trong họ Vi Điều Khiển 8051.
- Đị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ố Và như tên gọi của nó thì khi một lệnh được hợp dịch toán hạng đi tức thi ngay sau mã lệnh Lưu ý rằng trước dữ liệu tức thời phải được đặt dấu (#) chế độ đánh địa chỉ này có thể được dùng
để nạp thông tin vào bất kỳ thanh ghi nào kể cả thanh ghi con trỏ dữ liệu DPTR
Ví dụ: MOV A, # 25H ; Nạp giá trị 25H
vào thanh ghi A
MOV R4, #62 ; Nạp giá trị62 thập
phân vào R4
- Địa chỉ theo thanh ghi: Chế độ đánh địa chỉ theo thanh ghi liên quan
đến việc sử dụng các thanh ghi để lưu dữ liệu cần được thao tác và các các toán hạng là 1 trong các thanh ghi Ri của các bank được chọn
Ví dụ: MOV A,R1 ; Sao n i dung thanh ghiộ R1 vào thanh ghi A
MOV R2,A ; Sao n i dung thanh ộ ghi A vào thanh ghi R2
- Địa chỉ trực tiếp:
Ví dụ: MOV R0, 40H ; L u n i dung c a ng n ư ộ ủ ă
nh 40H c a RAM vào R0ớ ủ
MOV 56H, A ;L u n i dung thanh ư ộ ghi A vào ng n nh 56H c a RAMă ớ ủ
MOV A, R4 ; Sao nội dung thanh ghi R4 vào A
-Địa chỉ gián tiếp: Trong chế độ này, một thanh ghi được sử dụng
như một con trỏ đến dữ liệu Đặc điểm nhận ra chế độ này là luôn có
Trang 9ký tự @ đứng trước toán hạng.
Ví dụ: MOV A, @ R0 ; Chuy n n i dung c a ể ộ ủ
ng n nh RAM có ă ớ địa ch trongỉ
;R0 vào A
-Địa chỉ số:
Ví dụ: MovC A, @ A + DPTR
MovX A, @ A + DPTR
4 Các tập lệnh sử dụng trong họ Vi Điều Khiển 8051.
Tùy thuộc vào cách và chức năng của mỗi lệnh, có thể chia ra thành 5 nhóm lệnh như sau:
- Các lệnh toán học
- Các lệnh điều khiển chương trình
- Các lệnh vận chuyển dữ liệu
- Các lệnh logic
- Các lệnh thao tác bit
Cấu trúc chung của mỗi lệnh:
Mã_l nh Toán_h ng1, Toán_h ng2, ệ ạ ạ Toán_h ng3ạ
Trong đó:
- Mã_lệnh: Tên gợi nhớ cho chức năng của lệnh (VD như add
cho addition)
- Toán_hạng1, Toán_hạng2, Toán_hạng3: Là các toán hạnh của
lệnh, tùy thuộc
vào mỗi lệnh số toán hạng có thể không có, có 1, 2 hoặc 3
Trang 10III TRÌNH BÀY THUẬT TOÁN
Chương trình chính:
Trang 11Chương trình con tạo trễ 1,5 giây:
IV CÁC CÂU LỆNH CHÍNH LIÊN QUAN ĐẾN BÀI TẬP
1 MOV : Chuyển dữ liệu giữa thanh ghi với thanh ghi, thanh ghi
với ô nhớ, một hằng số đến thanh ghi, một hằng số đến ô nhớ, và
ngược lại
Ví dụ: MOV R0, 40H ; L u n i dung c a ư ộ ủ
ng n nh 40H c a RAM vào R0ă ớ ủ
MOV A,R0 ; Sao n i dung thanh ộ ghi R0 vào thanh ghi A
2 LCALL : Dùng để gọi chương trình con.
Cấu trúc câu lệnh: LCALL addr16
Ý nghĩa: Khi lệnh này được thực hiện thì VĐK sẽ thực hiện chương trình con tại địa chỉ addr16 Lệnh này có thể gọi chương trình con ở đâu cũng được trong vùng 64 kbyte Addr16 của chương trình con có thể thay bằng nhãn
VD: LCALL Delay ;goi nhan Delay
3 SJMP : Lệnh nhảy tương đối
Cấu trúc câu lệnh: SJMP rel
Trang 12Lệnh này chỉ nhảy trong tầm vực 256 byte: có thể nhảy tới 128 byte và có thể nhảy lùi 128 byte Khi tầm vực này nhảy xa hơn ta dùng lệnh AJMP hay LJMP
Ý nghĩa: Vi điều khiển này sẽ nhảy đến lệnh có địa chỉ tương đối (rel) để thực hiện tiếp Có thể thay rel bằng nhãn
VD: SJMP Start ;nhay toi nhan Start
4 RR : Lệnh xoay phải nội dung thanh ghi A
Cấu trúc câu lệnh: RR A
Ý nghĩa: Nội dung thanh ghi A được xoay phải 1 bit
5 CLR : Lệnh xóa bit
Cấu trúc câu lệnh: CLR bit
Ý nghĩa: Xóa bit về 0
gia tri 0
6 SETB : Lệnh đặt bit
Cấu trúc câu lệnh: SETB bit
Ý nghĩa: Đặt bit lên 1
7 JNB : Lệnh nhảy nếu bit =0
Cấu trúc câu lệnh: JNB bit,rel
Ý nghĩa: Nếu nội dung của bit có địa chỉ bit được xác định bằng
0 thì vi điều khiển sẽ nhảy đến thực hiện chương trình tại địa chỉ bằng rel
Trang 13VD : JNB A,Start ;nhay ve Start neu A=0
8 DJNZ : Lệnh giảm thanh ghi và nhảy
Cấu trúc câu lệnh: DJNZ Rn,rel
Ý nghĩa : Nội dung của thanh ghi Rn giảm đi 1 và nếu kết quả trong thanh ghi Rn sau khi giảm khác 0 thì vi điều khiển sẽ thực hiện chương trình tại địa chỉ rel, nếu kết quả bằng 0 thì vi điều khiển sẽ tiếp tục thưc hiện lệnh kế
1,sau khi ;giam neu R1 khac 0 thi nhay ve Start
V TRÌNH BÀY CÁC CHƯƠNG TRÌNH CON:
;chuong trinh con lam tre 1.5s
Delay:
CLR TF1
MOV TMOD,#10H
MOV R3,#38
AGAIN:
MOV TL1,#0FEH
MOV TH1,#6FH
SET TR1
BACK:
JNB TF1,BACK
CLR TR1
CLR TF1
Trang 14DJNZ R3,AGAIN
RET
VI TRÌNH BÀY MÃ NGUỒN CỤ THỂ :
;nhóm 10-44R2
ORG 0h
A
Start:
P3
Delay:
MOV TMOD,#10H ;su dung timer 1 che do 1
MOV R3,#38 ;tao tre 1.5s
AGAIN:
MOV TL1,#0FEH ;TL1=FEh, byte thap
MOV TH1,#6FH ;TH1=6Fh, byte cao SET TR1 ;khoi dong timer 1 BACK:
Trang 15JNB TF1,BACK ;kiem tra co bo dinh thoi
CLR TR1 ;tat timer 1
CLR TF1 ;xóa co timer 1
DJNZ R3,AGAIN ;neu R3 khac khong thi nap lai
RET
END
Trang 16TÀI LIỆU THAM KHẢO:
[1] Họ vi điều khiển 8051-Tống Văn On, Hoàng Đức Hải- NXB Lao động xã hội, năm 2001
[2] Bài Giảng Vi Xử Lý- Vi Điều Khiển - Nguyễn Tuấn Anh, Phát hành tháng 7 năm 2011
[3] Website: picat.dieukhien.net
[4] Cấu trúc và lập trình họ vi điều khiển 8051- Nguyễn Tăng Cường, - NXB
Khoa học và kỹ thuật, năm 2004
[5] Giáo trình hệ vi điều khiển-Võ Quang Vinh, Nguyễn Quốc Hưng,– NXB
Khoa học và kỹ thuật, năm 2010