Chương 2: Trang bị cho sinh viên có được các kiến thức về: - Cầu tạo tổng quan về vi điều khiển 8051 - Các thanh ghi chức năng đặc biệt, hoạt động ngắt và hoạt động định thời Chương 3: T
Trang 1Công Nghệ thông tin có khả năng xóa bỏ hàng rào ngăn cách giữa người học và người dạy trên toàn thế giới Sức mạnh của môn học này đang thay đổi cơ hội tiếp cận tri thức của chúng ta Các phương pháp dạy và học sáng tạo giúp học sinh xác định những kinh nghiệm trong lớp học và có nhiều kỳ vọng mới Ngoài những kỹ năng cơ bản họ cần phải thành thạo trong quan hệ hợp tác, giao tiếp và quản lý thông tin tất cả các kỹ năng của thế kỷ 21 và những cơ hội tiếp cận với các công cụ phục vụ học tập sẽ giúp chúng ta dễ dàng đạt được kỹ năng này Môn học Ngôn ngữ lập trình dành cho hệ Cao đẳng được đưa vào chương trình và được thiết kế như sau:
PHẦN 1
ĐỀ CƯƠNG CHI TIẾT HỌC PHẦN NGÔN NGỮ LẬP TRÌNH ASSEMBLY
1 Tên học phần: NGÔN NGỮ LẬP TRÌNH ASSEMBLY
2 Số đơn vị học trình: 3 (45 tiết).
3 Trình độ: Sinh viên năm thứ 2 hệ cao đẳng, ngành Tin học
4 Phân bổ thời gian:
- Lý thuyết: 30 tiết
- Thực hành: 15 tiết
5 Điều kiện tiên quyết: Tin học đại cương, Kiến trúc máy tính
6 Mô tả vắn tắt nội dung học phần:
Chương 1: Trang bị cho sinh viên có được các kiến thức về:
- Cú pháp của hợp ngữ
- Một vài lệnh cơ bản
Chương 2: Trang bị cho sinh viên có được các kiến thức về:
- Cầu tạo tổng quan về vi điều khiển 8051
- Các thanh ghi chức năng đặc biệt, hoạt động ngắt và hoạt động định thời
Chương 3: Trang bị cho sinh viên có được các kiến thức về:
- Các kiểu định địa chỉ
Chương 4: Trang bị cho sinh viên có được các kiến thức về:
- Tập lệnh lập trình hợp ngữ
Trang 27 Nhiệm vụ của sinh viên:
- Dự lớp: Lên lớp nghe giảng và thảo luận
- Bài tập & thực hành: Hoàn thành các bài tập và bài thực hành được giao
- Thi, kiểm tra: Đạt kết quả các kỳ thi điều kiện và bài thi cuối kỳ
8 Tài liệu học tập:
[1] Giáo trình “Ngôn ngữ lập trình Assembly” của trường Đại học Điện lực
9 Sách tham khảo:
[1] Quách Tuấn Ngọc, Đỗ Tiến Dũng, Nguyễn Quang Khải, lập trình hợp ngữ, NXB Giáo Dục, 1998
[2] Tống Văn On, Hoàng Đức Hải, Họ vi điều khiển 8051 NXB Lao Động, 2001 [3] MCS® 51 Microcontroller Family User’S Manual, Intel,1994
10.Tiêu chuẩn đánh giá sinh viên:
- Thi cuối kỳ
11.Thang điểm: thang điểm 10.
12.Mục tiêu của học phần:
Trang bị cho sinh viên có được các kiến thức về các vấn đề:
- Cấu trúc của một chương trình hợp ngữ
- Cầu tạo của vi điều khiển 8051
- Khái niêm về thanh ghi, các kiểu định địa chỉ
- Tập lệnh lập trình hợp ngữ cho 8051
- Viết hoàn thiện chương trình hợp ngữ
13 Nội dung môn học
CHƯƠNG 1 GIỚI THIỆU TỔNG QUÁT
Trang 32.1 Cấu tạo phần cứng 3
2.2 Tổ chức bộ nhớ và các thanh ghi chức năng đặc biệt 3
3.1 Định địa chỉ thanh ghi
3.2 Định địa chỉ trực tiếp
3.3 Định địa chỉ gián tiếp
3.4 Định địa chỉ tức thời
3.5 Định địa chỉ tương đối
Trang 4PHẦN 2 VIẾT KẾ HOACH MỘT BÀI DẠY MẪU
GIÁO ÁN SỐ : 10 Số tiết : 01 Tổng số tiết đã giảng: 27
Ngày thực hiện : 28 Tháng 10 Năm 2006
Tên bài học : Lệnh rẽ nhánh
Mục đích : Trang bị cho sinh viên kiến thức về các lệnh rẽ nhánh
Yêu cầu : - Sinh viên phải nắm được cú pháp, hoạt động, cách sử dụng
lệnh rẽ nhánh ận dụng vào các bài toán lập trình cụ thể
I-ỔN ĐỊNH LỚP (1 phút)
Số học sinh vắng: Tên:
………
Nội dung nhắc nhở:
II-KIỂM TRA BÀI CŨ: Th i gian 3 phút, d ki n h c sinh ki m tra:ời gian 3 phút, dự kiến học sinh kiểm tra: ự kiến học sinh kiểm tra: ến học sinh kiểm tra: ọc sinh kiểm tra: ểm tra:
Họ và tên
Điểm
Nội dung kiểm tra: Nhắc lại bài cũ
III-GIẢNG BÀI MỚI
Đồ dung dạy học: Phấn, bảng, giáo án, giáo trình, máy chiếu, máy tính
Nội dung, phương pháp:
(Phút)
Phương pháp thực hiện
1 CHƯƠNG 4: TẬP LỆNH
4.5 Lệnh rẽ nhánh
4.5.1 Lệnh nhảy
a Lệnh SJMP
Cú pháp SJMP Label
Chức năng Nhảy ngắn
4
Diễn giảng và phát vấn
Trang 5Chú ý Lệnh SJMP sử dụng kiểu định địa
chỉ tương đối
Ví dụ
2 b Lệnh LTMP
Cú pháp LJMP Label
Chức năng Nhảy dài
Chú ý Lệnh SJMP sử dụng kiểu định địa
chỉ dài
Ví dụ
4 Diễn giảng và
phát vấn
3 4.5.2 Lệnh nhảy có điều kiện
a JNB
Cú pháp
Chức năng Nhảy nếu bít bằng không
Chú ý Lệnh JMP sử dụng kiểu định địa
chỉ tương đối
Ví dụ
4 Diễn giảng và
phát vấn
4 b DJNZ
Cú pháp DJNZ byte, Label
Chức năng Nhảy nếu bít bằng không
Chú ý Lệnh DJNZ sử dụng kiểu định địa
chỉ tương đối
Ví dụ
4 Diễn giảng và
phát vấn
5 c Ví dụ tổng hợp
Viết chương trình tạo xung 1kHz trên
chân p1.2 sử dụng timer 1
20 Diễn giảng và
phát vấn
Trang 6IV-TỔNG KẾT BÀI: Thời gian 3 phút
Nhắc lại cú pháp, hoạt động của các lệnh rẽ nhánh
V-CÂU HỎI VÀ BÀI TẬP: Thời gian 2 phút
1 Đọc hiểu, giáo trình và các tài liệu có liên quan đến bài học
2 Viết chương trình tạo sóng vuông 400 Hz trên chân P1.2 và 100Hz trên chân P0.3 sử dụng bộ định thời 1
3 Đọc trước tài liệu về ……
VI-RÚT KINH NGHIỆM (Về nội dung, phương pháp, thời gian thực hiện bài giảng)
BÀI GIẢNG
CHƯƠNG 4: TẬP LỆNH
4.1 Lệnh số học
4.2 Lệnh logic
4.3 Lệnh di chuyển dữ liệu
4.4 Lệnh xử lý bít
4.5 Lệnh rẽ nhánh
Nhắc lại bài cũ:
Trong bài trước, chúng ta đã học về Các lệnh xử lý bít của 8051 như SETB, CLR,… vời
các lệnh xử lý bit này làm cho việc đặt chế độ hoạt động và điều khiển các thành phần trên chíp như Timer, Port, thông qua các thanh ghi chức năng đặc biệt có định địa chỉ bit trở nên thuận tiện và không gây ảnh hưởng đến các bít khác
Ví dụ:
Thanh ghi TCON
Trang 7TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
Để xóa cở tràn và không cho phép timer hoạt động ta có thể sử dụng lệnh di chuyển dữ liệu như
MOV TCON, #00000000B
Tuy nhiên nếu không xác định trước được các giá trị của các bit trên thanh ghi TCON thì lệnh di chuyển dữ liệu sẽ làm ảnh hưởng đến các bit này
Nếu dùng các lệnh xử lý bit như:
CLR TR1
CLR TF1
Sẽ tối ưu hơn
Hôm nay chúng ta tiếp tục nghiên cứu về tập lệnh của 8051, các lệnh rẽ nhánh
Vào bài mới
4.5 Lệnh rẽ nhánh
Lệnh rẽ nhánh, thực hiệnh việc điều khiển luồng chương trình theo các định hướng lập trình Lệnh rẽ nhánh trong tập lệnh của 8051 được chia thành 3 nhóm cơ bản sau:
- Lệnh nhảy
- Lệnh nhảy có điều kiện
- Lệnh gọi một thủ tục và trở về từ một thủ tục
4.5.1 Lệnh nhảy
Bao gồm các lệnh sau: SJMP, LJMP, ẠMP
a Lệnh SJMP
Cú pháp SJMP Label
Trong đó: - SJMP là mã gợi nhớ viết tắt của Short Jump
- Label là nhãn đặt trước lệnh dự định sẽ nhảy tới
Chức năng Nhảy ngắn, điểu khiển chương trình rẽ nhánh không điều kiện đến địa chỉ
được chỉ ra thông qua nhãn
Chú ý Lệnh SJMP sử dụng kiểu định địa chỉ tương đối, do đó tầm nhẩy được giới hạn
là -128 byte đến 127 byte
Trang 8MOV TL1,#23H SETB P1.0
……
SJMP LOOP
b Lệnh LJMP
Cú pháp LJMP Label
Trong đó: - LJMP là mã gợi nhớ viết tắt của Long Jump
- Label là nhãn đặt trước lệnh dự định sẽ nhảy tới
Chức năng Nhảy dài, điểu khiển chương trình rẽ nhánh không điều kiện đến địa chỉ
được chỉ ra thông qua nhãn
Chú ý Lệnh SJMP sử dụng kiểu định địa chỉ dài, do đó tầm nhẩy được giới hạn là toàn
bộ không gian nhớ chương trình 64 Kbyte
MOV TL1,#23H SETB P1.0
……
LJMP LOOP
4.5.2 Lệnh nhảy có điều kiện
Bao gồm các lệnh sau: JNB, DJNZ, JC, JNC, JB, JBC, CJNE, JZ
a JNB
Cú pháp JNB bit, Label
Trong đó: - JNB là mã gợi nhớ
- Label là nhãn đặt trước lệnh dự định sẽ nhảy tới
- bit là một bit trong thanh ghi hoặc vùng nhớ định địa chỉ bít
Chức năng Nhảy nếu bít bằng không
Chú ý Lệnh JNB sử dụng kiểu định địa chỉ tương đối, do đó tầm nhẩy được giới hạn là
-128 byte đến 127 byte
Trang 9MOV TL1,#2AH SETB TR1
b DJNZ
Cú pháp DJNZ byte, Label
Trong đó: - DJNZ là mã gợi nhớ
- Label là nhãn đặt trước lệnh dự định sẽ nhảy tới
- byte là một thanh ghi hoặc định địa chỉ trực tiếp
Chức năng Nhảy nếu byte bằng không
Chú ý Lệnh DJNZ sử dụng kiểu định địa chỉ tương đối, do đó tầm nhẩy được giới hạn là
-128 byte đến 127 byte
Ví dụ
MOV SOLAN_LAP,#12H SETB P1.0
……
DJNZ SOLAN_LAP,LOOP
c Ví dụ tổng hợp
Viết chương trình tạo xung vuông 1kHz trên chân p1.2 sử dụng timer 1
Phân tích bài toán:
Các thành phần liên quan
- Timer1
- Port 1
Các thanh ghi liên quan
- Thanh ghi cổng p1 là thanh ghi địa chỉ bít, ta quan tâm đến bít p1.2
- Thanh ghi TMOD
Trang 107 6 5 4 3 2 1 0
Đây là thanh ghi không định địa chỉ bit, trong phạm vi bài tập, ta chỉ quan tâm đến bít số
4 và 5 nhằm xác định chế độ định thời cho bộ timer1, ở đây ta chọn chế độ định thời 1 (16 bit) do đó ta có M0 =1, M1=0, các bít khác chọn bằng 0
Vậy ta có giá trị cần nạp vào thanh ghi TMOD là 10H
- Thanh ghi TCON
Thanh ghi TCON
Đây là thanh ghi định địa chỉ bit, ta cần sử dụng 2 bít TF1 kiểm tra tràn thanh ghi đinh thời, TR1 điều khiển timer1 chay/dừng
- Thanh ghi định thời T1, được xác định như sau:
Ta tạo xung 1kHz, ta có chu kỳ xung T= 1/f = 0.001 S = 1000 µS, thời gian xung cao là
500 µS và thời gian xung thấp là 500 µS
Chọn tần số thạnh anh la 12MHz ta có số cần nạp vào T1 là -500 đổi ra Hexa là FE0CH (nạp FE vào TH1, 0C vào TL1)
Viết chương trình
ORG 00H LJMP START ORG 03H ; INT0 RETY
ORG 0BH ; T0 RETY
ORG 13H ; INT1 RETY
ORG 1BH ; T1
Trang 11RETY ORG 23H ; SERIAL PORT RETY
ORG 100H
SETB P1.2
MOV TL1,#0CH
SETB TR1
CLR TR1 CLR TF1 CPL P1.2 SJMP LOOP END
Tổng kết bài
Bài hôm nay các em cần nắm được các nội dung sau:
1 Lệnh nhảy bao gồm các lệnh,… Trong đó lệnh…
2 Lệnh nhảy có điều kiện,…
Bài tập về nhà:
1 Đọc thêm tài liệu liên quan đến môn học
2 Viết chương trình tạo sóng vuông 400 Hz trên chân P1.2 và 100 Hz trên chân P0.3 sử dụng bộ định thời 1
3 Đọc trước bài ……
Trang 12PHẦN 3 VIẾT MỘT BÀI DẠY KIỂM TRA 15 PHÚT
Tìm số m lớn nhất thoả mãn bất đẳng thức: m2+m+1< 2006
Phân tích bài toán
- Đây là bài toán có sử dụng lặp mà số lần lặp không biết trước, chon câu lệnh lặp While Do thực hiện
- Biểu thức điều kiện m2+m+1< 2006
- Công việc: Thay đổi giá trị m sau mỗi vòng lặp theo công thức m:=m+1, do đó giá trị
của biểu thức Điều kiện được có xu hướng thay đổi khi thay đổi giá trị m
Viết chương trình
Program Tim_m;
Var m : integer;
Begin
m:=1;
While (m*m+m+1<2006) do
m:=m+1;
writeln(‘ so m lon nhat thoa man dieu kien la:’, m-1);
readln;
End