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
-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.
14 trang |
Chia sẻ: ngtr9097 | Lượt xem: 2692 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Bài thảo luận 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ừ P37 đến P30 Mỗi lần thay đổi thì duy trì trạng thái trong vòng 1,5, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Nhóm thảo luận:44R2
Th¸i Nguyªn 2011
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
BÀ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 ):
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
Đỗ 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.
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 .
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.
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.
NHẬN XÉT CỦA GIÁO VIÊN
MỤC LỤC
NỘ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
-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.
-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:
Bit
7
6
5
4
3
2
1
0
Chức
năng
SMOD1
SMOD0
-
POF
GF1
GF0
PD
IDL
3. 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ó ký 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.III. TRÌNH BÀY THUẬT TOÁN
Chương trình chính:
Chươ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
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
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
SJMP : Lệnh nhảy tương đối
Cấu trúc câu lệnh: SJMP rel
Lệ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
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.
CLR : Lệnh xóa bit
Cấu trúc câu lệnh: CLR bit
Ý nghĩa: Xóa bit về 0
VD : CLR P3.0 ;xoa cong P3.0 ve gia tri 0
SETB : Lệnh đặt bit
Cấu trúc câu lệnh: SETB bit
Ý nghĩa: Đặt bit lên 1
VD : SETB P3.0 ;dat P3.0=1
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.
VD : JNB A,Start ;nhay ve Start neu A=0
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ế.
VD : DJNZ R1,Start ;giam Rn di 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
DJNZ R3,AGAIN
RET
VI. TRÌNH BÀY MÃ NGUỒN CỤ THỂ :
;nhóm 10-44R2
ORG 0h
MOV A,#10000000b ; gan gia tri cho A
Start:
MOV P3,A ; xuat gia tri A ra cong P3
LCALL Delay ; goi ham tre delay
RR A ; quay A sang phai
SJMP Start ; nhay ve Start
Delay:
CLR TF1 ;xoa co timer 1
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:
JNB 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
ENDTÀ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.