1. Trang chủ
  2. » Luận Văn - Báo Cáo

Vi xử lý và đo lường

39 565 1
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 39
Dung lượng 1,1 MB

Nội dung

Vi xử lý và đo lường

Trang 1

+ Tín hiệu cho phép chạy và dừng chơng trình ( tín hiệu dừng khẩn).

+ Đọc tín hiệu từ n kênh đo, lu trữ trong vùng Ram

+ Sau mỗi lần đọc đánh giá, giá trị trung bình của nhiệt độ và gửi kết quả ra cổng hiển thị Led

+ So sánh nhiệt độ trung bình với từng kênh, nếu cao hơn hoặc thấp hơn gửi kết quả báo ra từng kênh (giá trị cho phép này đặt tại ô nhớ của Ram)

+ Chơng trình dừng lại báo động bằng còi nếu xảy ra các điều kiện sau:

- Giá trị trung bình hoặc giá trị min hoặc max tơng ứng cho trớc Các giá trị min hoặc max này đặt trong hai ô nhớ của Ram Có i kênh đo vợt quá hoặc nhỏ hơn giá trị giới hạn cho phép so với giá trị trung bình

Chơng 1 Tổng quan về vi điều khiển

Giới thiệu về các họ vi xử lí và các họ vi điều khiển thông dụng Lịch sử phát triển của bộ vi xử lí và bộ vi điều khiển

Sự ra đời là phát triển nhanh chóng của kỹ thuật vi điện tử là đặc tr ng là kỹ thuật vi xử−

lí đã tạo ra một b ớc ngoặt quan trọng trong sự phát triển của khoa học tính toán, điều khiển vi−

xử lí thông tin Kỹ thuật vi xử lí đóng một vai trò rất quan trọng trong tất cả các lĩnh vực của cuộc sống và khoa học kỹ thuật, đặc biệt là lĩnh vực Tin học và Tự động hóa

Năm 1971, hãng Intel đã cho ra đời bộ vi xử lí (microprocessor) đầu tiên trên thế giới tên gọi là Intel-4004/4bit , nhằm đáp ứng nhu cầu cấp thiết của một công ty kinh doanh là hãng truyền thông BUSICOM Intel-4004 là kết quả của một ý t ởng quan trọng trong kỹ thuật vi −

xử lí số Đó là một kết cấu logic mà có thể thay đổi đ ợc chức năng của nó bằng ch ơng trình− −ngoài chứ không phát triển theo h ớng tạo ra một cấu trúc cứng chỉ thực hiện một số chức −năng nhất định nh tr ớc đây Sau đó, các bộ vi xử lí mới liên tục đ ợc đ a ra thị tr ờng − − − − −ngày càng đ ợc phát triển, hoàn thiện hơn trong các thế hệ sau :−

Vào năm 1972, hãng Intel đ a ra bộ vi xử lí 8-bit đầu tiên với tên Intel-8008/8bit Từ −

1974 đến 1975 , Intel chế tạo các bộ vi xử lí 8-bit 8080 và 8085A Cũng vào khoảng thời gian này, một loạt các hãng khác trên thế giới cũng đã cho ra đời các bộ vi xử lí t ơng tự nh : − −

6800 của Motorola với 5000 tranzitor, Signetics 6520, 1801 của RCA, kế đến là 6502 của hãng MOS Technology và Z80 của hãng Zilog

Trang 2

Trong mục n y chúng ta b n về nhu cầu đối với các bộ vi điều khiển (VĐK) v soμ μ μsánh chúng với các bộ vi xử lý cùng dạng chung nh Pentium v các bộ vi xử lý − μ ì 86 khác Chúng ta cùng xem xét vai trò của các bộ vi điều khiển trong thị tr ờng các sản phẩm nhúng.−Ngo i ra, chúng ta cung cấp một số tiêu chuẩn về cách lựa chọn một bộ vi điều khiển nh thếμ −

n o.μ

2.2 Bộ vi điều khiển so với bộ vi xử lý cùng dùng chung

Sự khác nhau giữa một bộ vi điều khiển v một bộ vi xử lý l gì? Bộ vi xử lý ở đây lμ μ μcác bộ vi xử lý công dung chung nh họ Intell − là 86 (8086, 80286, 80386, 80486 v Pentium)μhoặc họ Motorola 680 là 0(68000, 68010, 68020, 68030, 68040 v.v ) Những bộ VXL n yμkhông có RAM, ROM v không có các cổng v o ra trên chíp Với lý do đó m chúng đ ợcμ μ μ −gọi chung l các bộ vi xử lý công dụng chung.μ

Hình 2.1: Hệ thống vi xử lý đ ợc so sánh với hệ thống vi điều khiển.

a) Hệ thống vi xử lý công dụng chung

b) Hệ thống vi điều khiển

Một nh thiết kế hệ thống sử dụng một bộ vi xử lý công dụng chung chẳng hạn nhμ −

Pentium hay 68040 phải bổ xung thêm RAM , ROM, các cổng v o ra v các bộ định thờiμ μngo i để l m cho chúng hoạt động đ ợc Mặc dù việc bổ xung RAM, ROM v các cổng v oμ μ − μ μ

ra bên ngo i l m cho hệ thống cồng cềnh v đắt hơn, nh ng chúng có u điểm l linh hoạtμ μ μ − − μchẳng hạn nh ng ời thiết kế có thể quyết định về số l ợng RAM, ROM v các cổng v o ra− − − μ μcần thiết phù hợp với b i toán trong tầm tay của mình.μ

Điều n y không thể có đ ợc đối với các bộ vi điều khiển Một bộ vi điều khiển có mộtμ −CPU (một bộ vi xử lý) cùng với một l ợng cố định RAM, ROM, các cổng v o ra v một bộ− μ μ

định thời tất cả trên cùng một chíp Hay nói cách khác l bộ xử lý, RAM, ROM các cổng v oμ μ

ra v bộ định thời đều đ ợc nhúng với nhau trên một chíp; do vậy ng ời thiết kế không thể bổμ − −xung thêm bộ nhớ ngo i, cổng v o ra hoặc bộ định thời cho nó Số l ợng cố định của RAM,μ μ −ROM trên chíp v số các cổng v o - ra trong các bộ vi điều khiển l m cho chúng trở nên lýμ μ μ

t ởng đối với nhiều ứng dụng m trong đó giá th nh v không gian lại hạn chế Trong nhiều− μ μ μ

Trang 3

bộ chuyển đổi ADC v các ngoại vi khác v o trong bộ vi điều khiển.μ μ

Chơng 3 Sơ lợc về các bộ định thời, bản đồ Ram, Rom

3.1 Bộ đếm ch ơng trình trong 8051 −

Một thanh ghi quan trọng khác trong 8051 l bộ đếm ch ơng trình Bộ đếm ch ơng μ − −trình chỉ đếm địa chỉ của lệnh kế tiếp cần đ ợc thực hiện Khi CPU nạp mã lệnh từ bộ nhớ −ROM ch ơng trình thì bộ đếm ch ơng trình tăng lên chỉ đếm lệnh kết tiếp Bộ đếm ch ơng − − −trình trong 8051 có thể truy cập các địa chỉ ch ơng trình trong 8051 rộng 16 bit Điều n y có − μnghĩa l 8051 có thể truy cập các địa chỉa ch ơng trình từ 0000 đến FFFFH tổng cộng l 64k μ − μbyte mã lệnh Tuy nhiên, không phải tất cả mọi th nh viên của 8051 đều có tất cả 64k byte μROM trên chíp đ ợc c i đặt Vậy khi 8051 đ ợc bật nguồn thì nó đánh thức ở địa chỉa n o?− μ − μ

3.2 Địa chỉ bắt đầu khi 8051 đ ợc cấp nguồn −

Một câu hỏi m ta phải hỏi về bộ vi điều khiển bất kỳ l thì nó đ ợc cấp nguồn thì nó μ μ −bắt đầu từ địa chỉ n o? Mỗi bộ vi điều khiển đều khác nhau Trong tr ờng hợp họ 8051 thì μ −mọi th nh viên kể từ nh sản xuất n o hay phiên bản n o thì bộ vi điều khiển đều bắt đầu từ μ μ μ μ

địa chỉ 0000 khi nó đ ợc bật nguồn Bật nguồn ở đây có nghĩa l ta cấp điện áp Vcc đến chân − μRESET nh sẽ trình b y ở ch ơng 4 Hay nói cách khác, khi 8051 đ ợc cấp nguồn thì bộ − μ − −

đếm ch ơng−

trình có giá trị 0000 Điều n y có nghĩa l nó chờ mã lệnh đầu tiên đ ợc l u ở địa chỉa ROMμ μ − −0000H Vì lý do n y m trong vị trí nhớ 0000H của bộ nhở ROM ch ơng trình vì đây l nơiμ μ − μ

m nó tìm lệnh đầu tiên khi bật nguồn Chúng ta đạt đ ợc điều n y bằng câu lệnh ORG trongμ − μ

ch ơng trình nguồn nh đã trình b y tr ớc đây D ới đây l hoạt động từng b ớc của bộ − − μ − − μ −

đếm

ch ơng trình trong qúa trình nạp v thực thi một ch ơng trình mẫu.− μ −

3.3 Đặt mã v o ROM ch ơng trình μ −

Để hiểu tốt hơn vai trò của bộ đếm ch ơng trình trong quá trình nạp v thực thi một − μ

ch ơng trình, ta khảo sát một hoạt động của bộ đếm ch ơng trình khi mỗi lệnh đ ợc nạp v − − − μthực thi Tr ớc hết ta khảo sát một lần nữa tệp liệt kê của ch ơng trình mẫu v cách đặt mã − − μ

v o ROM ch ơng trình 8051 nh thế n o? Nh ta có thể thấy, mã lệnh v toán hạng đối vớiμ − − μ − μmỗi lệnh đ ợc liệt kê ở bên trái của lệnh liệt kê.−

Đây l một chuỗi các câu lệnh hoặc các dòng lệnh đ ợc viết hoặc bằng các μ −lệnh hợp ngữ nh ADD v MOV hoặc bằng các câu lệnh đ ợc gọi l các chỉ dẫn.− μ − μ

Trong khi các lệnh hợp ngữ thì nói CPU phải l m gì thì các chỉ lệnh (hay còn gọi l giả lệnh)μ μthì đ a ra các chỉ lệnh cho hợp ngữ Ví dụ, trong ch ơng trình 2.1 thì các lệnh ADD v MOV− − μ

l các lệnh đến CPU, còn ORG v END l các chỉ lệnh đối với hợp ngữ ORG nói hợp ngữ đặtμ μ μmã lệnh tại ngăn nhớ 0 v END thì báo cho hợp ngữ biết kết thúc mã nguồn Hay nói cáchμkhác một chỉ lệnh để bắt đầu v chỉ lệnh thứ hai để kết thúc ch ơng trình.μ −

Cấu trúc của một lệnh hợp ngữ có 4 tr ờng nh sau:− −

[nhãn:] [từ gợi nhớ] [các toán hạng] [; chú giải]

Các tr ờng trong dấu ngoặc vuông l tuỳ chọn v không phải dòng lệnh n o cũng có − μ μ μchúng Các dấu ngoặc vuông không đ ợc viết v o Với dạng thức trên đây cần l u ý các điểm− μ −sau: Tr ờng nhãn cho phép ch ơng trình tham chiếu đến một dòng lệnh bằng tên Nó không − −

đ ợc viết quá một số ký tự nhất định Hãy kiểm tra quy định n y của hợp ngữ m ta sử dụng.− μ μ

Từ gợi nhớ (lệnh) v các toán hạng l các tr ờng kết hợp với nhau thực thi công việc thực tếμ μ −của ch ơng trình v ho n thiện các nhiệm vụ m ch ơng trình đ ợc viết cho chúng Trong − μ μ μ − −hợp

Trang 4

dạng ORG v END) Hãy đọc quy định cụ thể của hợp ngữ ta sử dụng Tr ơng chú giải luôn μ −phải bắt đầu bằng dấu chấm phẩy (;) Các chú giải có thể bắt đầu ở đầu dòng hoặc giữa dòng Hợp ngữ bỏ qua (l m ngơ) các chú giải nh ng chúng lại rất cần thiết đối với lập trình viên μ −Mặc dù các chú giải l tuỳ chọn, không bắt buộc nh ng ta nên dùng chúng để mô tả ch ơng μ − −trình để giúp cho ng ời khác đọc v hiểu ch ơng trình dễ d ng hơn.− μ − μ

L u ý đến nhãn HERE trong tr ờng nhãn của ch ơng trình 2.1 Một nhãn bất kỳ − − −tham

chiếu đến một lệnh phải có dấu hai chấm (:) đứng ở sau Trong câu lệnh nhảy ngắn SJMP thì

8051 đ ợc ra lệnh ở lại trong vòng lặp n y vô hạn Nếu hệ thống của chúng ta có một ch ơng− μ −trình giám sát thì takhông cần dòng lệnh n y v nó có thể đ ợc xoá đi ra khỏi ch ơng trình.μ μ − −

địa chỉ 0000 nh bảng liệt kê d ới đây.− −

Bảng nội dung ROM

Bảng liệt kê chỉ ra địa chỉ 0000 chứa mã 7D l mã lệnh để chuyển một giá trị v o thanhμ μghi R5 v địa chỉ 0001 chứa toán hạng (ở đây l giá trị 254) cần đ ợc chuyển v o R5 Do μ μ − μvậy,

lệnh “MOV R5, #25H” có mã l “7D25” trong đó 7D l mã lệnh, còn 25 l toán hạng T ơngμ μ μ −

tự nh vậy, mã máy “7F34” đ ợc đặt trong các ngăn nhớ 0002 v 0003 v biểu diễn mã lệnh− − μ μ

v toán hạng đối với lệnh “MOV R7, #34H” Theo cách nh vậy, mã máy “7400” đ ợc đặt μ − −tại

địa chỉ 0004 v 0005 v biểu diễn mã lệnh v toán hạng đối với lệnh “MOV A, #0” Ngăn nhớμ μ μ

0006 có mã 2D l mã đối với lệnh “ADD A, R5” v ngăn nhớ 0007 có nội dung 2F l mã lệnhμ μ μcho “ADD A, R7” Mã lệnh đối với lệnh “ADD A, #12H” đ ợc đặt ở ngăn nhớ 0008 v toán− μhạng 12H đ ợc đặt ở ngăn nhớ 0009 Ngăn nhớ 000A có mã lệnh của lệnh SJMP v địa chỉ− μ

đích của nó đ ợc đặt ở ngăn nhớ 000B Lý do vì sao địa chỉ đích l FE đ ợc giải thích ở− μ −

3.5 Bản đồ nhớ ROM trong họ 8051.

Nh ta đã thấy ở ch ơng tr ớc, một số th nh viên họ 8051 chỉ có 4k byte bộ nhớ − − − μROM trên chíp (ví dụ 8751, AT 8951) v một số khác nh AT 8951 có 8k byte ROM, DS μ −5000-32 của Dallas Semiconductor có 32k byte ROM trên chíp Dallas Semiconductor cũng có motọ 8051 với ROM trên chíp l 64k byte Điểm cần nhớ l không có th nh viên n o của họ μ μ μ μ

8051 có thể truy cập đ ợc hơn 64k byte mã lệnh vì bộ đếm ch ơng trình của 8051 l 16 bit − − μ(dải địa chỉ từ 0000 đến FFFFH) Cần phải ghi nhớ l lệnh đầu tiên của ROM ch ơng trình μ −

Trang 5

a) Với 4k byte của không gian nhớ ROM trên chíp ta có 4096 byte bằng 1000H ở dạng

Hex (4 ì 1024 = 4096 hay 1000 ở dạng Hex) Bộ nhớ n y đ ợc xắp xếp trong các ngănμ −

nhớ từ 0000 đến 0FFFFH L u ý 0 luôn l ngăn nhớ đầu tiên.− μ

b) Với 32k byte nhớ ta có 32.768 byte (32 ì 1024) Chuyển đổi 32.768 về số Hex ta nhận

đ ợc giá trị 8000H Do vậy, không gian nhớ l dải từ 0000 đến 7FFFH.− μ

Dải địa chỉ của ROM trên chíp một số th nh viên họ 8051 μ

3.6 Các kiểu dữ liệu v các chỉ lệnh μ

a) Phân bố không gian bộ nhớ RAM trong 8051.

Có 128 byte RAM trong 8051 (một số th nh viên đang chú ý l 8052 có 256 byte μ μRAM) 128 byte RAM bên trong 8051 đ ợc gán địa chỉ từ 00 đến 7FH Nh ta sẽ thấy ở − −

ch ơng 5, chúng có thể đ ợc truy cập trực tiếp nh các ngăn nhớ 128 byte RAM n y đ ợc − − − μ −phân chia th nh từng nhóm nh sau:μ −

1 Tổng cộng 32 byte từ ngăn nhớ 00 đến 1FH đ ợc d nh cho các thanh ghi v ngăn xếp.− μ μ

2 Tổng cộng 16 byte từ ngăn nhớ 20H đến 2FH đ ợc d nh cho bộ nhớ đọc/ ghi đánh địa− μchỉ đ ợc theo bit Ch ơng 8 sẽ b n chi tiết về bộ nhớ v các lệnh đánh địa chỉ đ ợc− − μ μ −

b) Các băng thanh ghi trong 8051.

Nh đã nói ở tr ớc, tổng cộng 32 byte RAM đ ợc d nh riêng cho các băng thanh ghi− − − μ

v ngăn xếp 32 byte n y đ ợc chia ra th nh 4 băng các thanh ghi trong đó mỗi băng có 8 μ μ − μthanh ghi từ R0 đến R7 Các ngăn nhớ RAM số 0, R1 l ngăn nhớ RAM số 1, R2 l ngăn nhớ μ μRAM số 2 v.v Băng thứ hai của các thanh ghi R0 đến R7 bắt đầu từ thanh nhớ RAM số 2 cho

đến ngăn nhớ RAM số 0FH Băng thứ ba bắt đầu từ ngăn nhớ 10H đến 17H v cuối cùng từ μngăn nhớ 18H đến 1FH l dùng cho băng các thanh ghi R0 đến R7 thứ t μ −

Trang 6

Ngăn xếp các thanh nhớ RAM trong 8051

Các băng thanh ghi của 8051 v địa chỉ của chúng μ

Nh ta có thể nhìn thấy từ hình 2.5 băng 1 sử dụng cùng không gian RAM nh ngăn xếp Đây− −

l một vấn đề chính trong lập trình 8051 Chúng ta phải hoặc l không sử dụng băng 1 hoặc lμ μ μphải đánh một không gian khác của RAM cho ngăn xếp

Chơng 4 Lập trình cho cổng v o - ra I/0, các Timer μ

4.1 Mô tả chân của 8051.

Mặc dù các th nh viên của họ 8051 (ví dụ 8751, 89C51, DS5000) đều có các kiểu đóngμ

vỏ khác nhau, chẳng hạn nh hai h ng chân DIP (Dual In-Line Pakage) dạng vỏ dẹt vuông− μQFP (Quad Flat Pakage) v dạng chíp không có chân đỡ LLC (Leadless Chip Carrier) thìμchúng đều có 40 chân cho các chức năng khác nhau nh v o ra I/0, đọc RD , ghi WR , địa chỉ,− μdữ liệu v ngắt Cần phải l u ý rằng một số hãng cung cấp một phiên bản 8051 có 20 chân vớiμ −

số cổng v o-ra ít hơn cho các ứng dụng yêu cầu thấp hơn Tuy nhiên, vì hầu hết các nh phátμ μtriển chính sử dụng chíp đóng vỏ 40 chân với hai h ng chân DIP nên ta chỉ tập chung mô tảμphiên bản n y.μ

Trang 7

Sơ đồ bố trí chân của 8051.

Trên hình l sơ đồ bố trí chân của 8051 Ta thấy rằng trong 40 chân thì có 32 chân μ

d nh cho các cổng P0, P1, P2 v P3 với mỗi cổng có 8 chân Các chân còn lại đ ợc d nh cho μ μ − μnguồn VCC, đất GND, các chângiao động XTAL1 v XTAL2 tái lập RST cho phép chốt địa μchỉ ALE truy cập đ ợc địa chỉ ngo i EA , cho phép cất ch ơng trình PSEN Trong 8 chân − μ −

n y thì 6 chân VCC , GND, XTAL1, XTAL2, RST v EA đ ợc các họ 8031 v 8051 sử μ μ − μdụng Hay nói cách khác l chúng phải đ ợc nối để cho hệ thống l m việc m không cần biếtμ − μ μ

bộ vi điều khiển thuộc họ 8051 hay 8031 Còn hai chân khác l PSEN v ALE đ ợc sử dụng μ μ −chủ yếu trong các hệ thống dựa trên 8031

1 Chân VCC: Chân số 40 l VCC cấp điện áp nguồn cho chíp Nguồn điện áp l +5V.μ μ

2 Chân GND: Chân GND: Chân số 20 l GND.μ

3 Chân XTAL1 v XTAL2:μ

8051 có một bộ giao động trên chíp nh ng nó yêu cầu có một xung đồng hồ ngo i để− μ

chạy nó Bộ giao động thạch anh th ờng xuyên nhất đ ợc nối tới các chân đầu v o XTAL1− − μ(chân 19) v XTAL2 (chân 18) Bộ giao động thạch anh đ ợc nối tới XTAL1 v XTAL2 cũngμ − μcần hai tụ điện giá trị 30pF Một phía của tụ điện đ ợc nối xuống đất nh đ ợc trình b y − − − μtrên hình vẽ Cần phải l u ý rằng có nhiều tốc độ khác nhau của họ 8051 Tốc độ đ ợc coi − −

nh l tần số cực đại của bộ giao động đ ợc nối tới chân XTAL Ví dụ, một chíp 12MHz − μ −hoặc thấp hơn T ơng tự nh vậy thì một bộ vi điều khiển cũng yêu cầu một tinh thể có tần số− −không lớn hơn 20MHz Khi 8051 đ ợc nối tới một bộ giao động tinh thể thạch anh v cấp − μnguồn thì ta có thể quan sát tần số trên chân XTAL2 bằng máy hiện sóng Nếu ta quyết định sửdụng một nguồn tần số khác bộ giao động thạch anh chẳng hạn nh l bộ giao động TTL thì − μ

nó sẽ đ ợc nối tới chân XTAL1, còn chân XTAL2 thì để hở không nối.−

Trang 8

Nối XTAL tới 8051 b) Nối XTAL tới nguồn đồng bộ ngo i.μ

4 Chân RST Chân số 9 l chân tái lập RESET Nó l một đầu v o v có mức tích cực cao μ μ μ μ(bình th ờng ở mức thấp) Khi cấp xung cao tới chân n y thì bộ vi điều khiển sẽ tái lập v kết − μ μthúc mọi hoạt động Điều n y th ờng đ ợc coi nh l sự tái bật nguồn Khi kích hoạt tái bậtμ − − − μnguồn sẽ l m mất mọi giá trị trên các thanh ghi Bảng 4.1 cung cấp một cách liệt kê các thanh μghi của 8051 v các giá trị của chúng sau khi tái bật nguồn.μ

4.2 Lập trình cho bộ đếm/ bộ định thời trong 8051

8051 có hai bộ định thời/ bộ đếm Chúng có thể đ ợc dùng nh các bộ định thời để − −tạo

một bộ trễ thời gian hoặc nh các bộ đếm để đếm các sự kiện xảy ra bên ngo i bộ BVĐK.− μTrong ch ơng n y chúng ta sẽ tìm hiểu về cách lập trình cho chúng v sử dụng chúng nh − μ μ −thế

n o?μ

4.3 Lập trình các bộ định thời gian của 8051.

8051 có hai bộ định thời l Timer 0 v Timer1, ở phần n y chúng ta b n về các thanh μ μ μ μghi của chúng v sau đó trình b y cách lập trình chúng nh thế n o để tạo ra các độ trễ thờiμ μ − μgian

4.4 Các thanh ghi cơ sở của bộ định thời.

Cả hai bộ định thời Timer 0 v Timer 1 đều có độ d i 16 bít đ ợc truy cập nh haiμ μ − −thanh ghi tách biệt byte thấp v byte cao Chúng ta sẽ b n riêng về từng thanh ghi.μ μ

4.5 Các thanh ghi của bộ Timer 0.

Thanh ghi 16 bít của bộ Timer 0 đ ợc truy cập nh byte thấp v byte cao Thanh ghi− − μbyte thấp đ ợc gọi l TL0 (Timer 0 bow byte) v thanh ghi byte cao l TH0 (Timer 0 High− μ μ μbyte) Các thanh ghi n y có thể đ ợc truy cập nh mọi thanh ghi khác chẳng hạn nh A, B,μ − − −R0, R1, R2 v.v Ví dụ, lệnh “MOV TL0, #4FH” l chuyển giá trị 4FH v o TL0, byte thấpμ μcủa bộ định thời 0 Các thanh ghi n y cũng có thể đ ợc đọc nh các thanh ghi khác Ví dụμ − −

“MOV R5, TH0” l l u byte cao TH0 của Timer 0 v o R5.μ − μ

Các thanh ghi của bộ Timer 0.

4.6 Các thanh ghi của bộ Timer 1.

Trang 9

Các thanh ghi của bộ Timer 1.

4.7 Thanh ghi TMOD (chế độ của bộ định thời).

Cả hai bộ định thời Timer 0 v Timer 1 đều dùng chung một thanh ghi đ ợc gọi lμ − μIMOD để thiết lập các chế độ l m việc khác nhau của bộ định thời Thanh ghi TMOD l thanhμ μghi 8 bít gồm có 4 bít thấp đ ợc thiết lập d nh cho bộ Timer 0 v 4 bít cao d nh cho Timer 1.− μ μ μTrong đó hai bít thấp của chúng dùng để thiết lập chế độ của bộ định thời, còn 2 bít cao dùng

để xác định phép toán Các phép toán n y sẽ đ ợc b n d ới đây.μ − μ −

Thanh ghi TMOD.

4.9 C/ T (đồng hồ/ bộ định thời).

Bít n y trong thanh ghi TMOD đ ợc dùng để quyết định xem bộ định thời đ ợc dùngμ − −

nh một máy tạo độ trễ hay bộ đếm sự kiện Nếu bít C/T = 0 thì nó đ ợc dùng nh một bộ − − −

định thời tạo độ chễ thời gian Nguồn đồng hồ cho chế độ trễ thời gian l tần số thạch anh của μ

8051 ở phần n y chỉ b n về lựa chọn n y, công dụng của bộ định thời nh bộ đếm sự kiện μ μ μ −thì sẽ đ ợc b n ở phần kế tiếp.− μ

Ví dụ: Hãy hiển thị xem chế độ n o v bộ định thời n o đối với các tr ờng hợp sau:μ μ μ −

a) MOV TMOD, #01H b) MOV TMOD, #20H c) MOV TMDO, #12H

Lời giải: Chúng ta chuyển đổi giá trị từ số Hex sang nhị phân v đối chiếu hình 93 ta có:μa) TMOD = 0000 0001, chế độ 1 của bộ định thời Timer 0 đ ợc chọn.−

b) TMOD = 0010 0000, chế độ 1 của bộ định thời Timer 1 đ ợc chọn.−

c) TMOD = 0001 0010, chế độ 1 của bộ định thời Timer 0 v chế độ 1 của Timer 1μ

đ ợc chọn.−

4.10 Nguồn xung đồng hồ cho bộ định thời:

Nh chúng ta biết, mỗi bộ định thời cần một xung đồng hồ để giữ nhịp Vậy nguồn−xung đồng hồ cho các bộ định thời trên 8051 lấy ở đâu? Nếu C/T = 0 thì tần số thạch anh điliền với 8051 đ ợc l m nguồn cho đồng hồ của bộ định thời Điều đó có nghĩa l độ lớn của− μ μtần số thạch anh đi kèm với 8051 quyết định tốc độ nhịp của các bộ định thời trên 8051 Tần

số của bộ định thời luôn bằng 1/12 tần số của thạch anh gắn với 8051

Trang 10

Mặc dù các hệ thống dựa trên 8051 khác với tần số thạch anh từ 10 đến 40MHz, song

ta chỉ tập chung v o tần số thạch anh 11,0592MHz Lý do đằng sau một số lẻ nh vậy l hảiμ − μ

l m việc với tần suất bouid đối với truyền thông nối tiếp của 8051 Tần số XTAL =μ

11,0592MHz cho phép hệ 8051 truyền thông với IBM PC m không có lỗi.μ

4.11 Bít cổng GATE.

Một bít khác của thanh ghi TMOD l bít cổng GATE Để ý trên hình 9.3 ta thấy cả haiμ

bộ định thời Timer0 v Timer1 đều có bít GATE Vậy bít GATE dùng để l m gì? Mỗi bộ địnhμ μthời thực hiện điểm khởi động v dừng Một số bộ định thời thực hiện điều n y bằng phần μ μmềm, một số khác bằng phần cứng v một số khác vừa bằng phần cứng vừa bằng phần mềm.μCác bộ định thời tren 8051 có cả hai Việc khởi động v dừng bộ định thời đ ợc khởi động μ −bằng phần mềm bởi các bít khởi động bộ định thời TR l TR0 v TR1 Điều n y có đ ợc nhờμ μ μ −các lệnh “SETB TR1” v “CLR TR1” đối với bộ Timer1 v “SETB TRO” v “CLR TR0” đốiμ μ μvới bộ Timer0 Lệnh SETB khởi động bộ định thời v lệnh CLR dùng để dừng nó Các lệnhμ

n y khởi động v dừng các bộ định thời khi bít GATE = 0 trong thanh ghi TMOD Khởi độngμ μ

v ngừng bộ định thời bằng phần cứng từ nguồn ngo i bằng cách đặt bít GATE = 1 trongμ μthanh ghi TMOD Tuy nhiên, để tránh sự lẫn lộn ngay từ bây giờ ta đặt GATE = 0 có nghĩa lμkhông cần khởi động v dừng các bộ định thời bằng phần cứng từ bên ngo i Để sử dụng phầnμ μmềm để khởi động v dừng các bộ định thời phần mềm để khởi động v dừng các bộ định thờiμ μkhi GATE = 0 Chúng ta chỉ cần các lệnh “SETB TRx” v “CLR TRx” Việc sử dụng phầnμcứng ngo i để khởi động v dừng bộ định thời ta sẽ b n ở ch ơng 11 khi b n về các ngắt.μ μ μ − μ

4.12 Lập trình cho mỗi chế độ Mode1.

a) Những đặc tính v những phép toán của chế độ Mode1: μ

1 Nó l bộ định thời 16 bít, do vậy nó cho phép các giá trị 0000 đến FFFFH đ ợc nạp μ −

v o các thanh ghi TL v TH của bộ định thời.μ μ

2 Sau khi TL v TH đ ợc nạp một giá trị khởi tạo 16 bít thì bộ định thời phải đ ợc μ − −khởi

động Điều n y đ ợc thực hiện bởi “SETB TR0” đối với Timer 0 v “SETB TR1” đốiμ − μ

với Timer1

3 Sau khi bộ định thời đ ợc khởi động, nó bắt đầu đếm lên Nó đếm lên cho đến khi −

đạt đ ợc giới hạn FFFFH của nó Khi nó quay qua từ FFFFH về 0000 thì nó bật lên bít cờ TF −

đ ợc gọi l cờ bộ định thời Cờ bộ định thời n y có thể đ ợc hiển thị Khi cờ bộ định thời − μ μ −

n y đ ợc thiết lập từ một trong các ph ơng án để dừng bộ định thời bằng các lệnh “CLR μ − −TR0” đối với Timer0 hoặc “CLR TR1” đối với Timer1 ở đây cũng cần phảI nhắc lại l đối với μ

bộ định thời đều có cờ TF riêng của mình: TF6 đối với Timer0 v TF1 đối với Timer1.μ

Trang 11

4 Sau khi bộ định thời đạt đ ợc giới hạn của nó v quay quan giá trị FFFFH, muốn − μlặp

lại quá trình thì các thanh ghi TH v TL phải đ ợc nạp lại với giá trị ban đầu v TFμ − μ

6 Xoá cờ TF cho vòng kế tiếp

7 Quay trở lại b ớc 2 để nạp lại TL v TH Để tính to n thời gian trễ chính xác v tần− μ μ μ

số sóng vuông đ ợc tạo ra trên chân P1.5 thì ta cần biết tần số XTAL Ta có thể phát triển một −công thức tính toán độ trễ sử dụng chế độ Mode1 (16 bít) của bộ định thời đối với tần số thạch anh XTAL = 11, 0592MHz Máy tính trong th mục Accessrry của Microsoft Windows có −thể giúp ta tìm các giá trị TH v TL Máy tính n y hỗ trợ các phép tính theo số thập phân, nhị μ μphân

đối với Timer0 v “SETB TR1” đối với Timer1 giống nh ở chế độ 1.μ −

3 Sau khi bộ định thời đ ợc khởi động, nó bắt đầu đếm tăng lên bằng cách tăng thanh −ghi TL Nó đếm cho đến khi đại giá trị giới hạn FFH của nó Khi nó quay trở về 00 từ FFH, nó thiết lập cờ bộ định thời TF Nếu ta sử dụng bộ định thời Timer0 thì đó l cờ TF0, còn Timer1 μthì đó l cờ TF1μ

Trang 12

4 Khi thanh ghi TL quay trở về 00 từ FFH thì TF đ ợc bật lên 1 thì thanh ghi TL −

đ ợc tự động nạp lại với giá trị ban đầu đ ợc giữ bởi thanh ghi TH Để lặp lại quá trình chúng− −

ta đơn giản chỉ việc xoá cờ TF v để cho nó chạy m không cần sự can thiệp của lậpμ μ

trình viên để nạp lại giả trị ban đầu Điều n y l m cho chế độ 2 đ ợc gọi l chế độ từμ μ − μ

nạp lại so với chế độ 1 thì ta phải nạp lại các thanh ghi TH v TL.μ

Cần phải nhấn mạnh rằng, chế độ 2 l bộ định thời 8 bít Tuy nhiên, nó lại có khảμ

năng tự nạp khi tự nạp lại thì TH thực chất l không thay đổi với giá trị ban đầu đ ợcμ −

giữ nguyên, còn TL đ ợc nạp lại giá trị đ ợc sao từ TH Chế độ n y có nhiều ứng dụng− − μbao gồm việc thiết lập tần số baud trong truyền thông nối tiếp

sử dụng v chế độ l m việc n o của chúng đ ợc chon.μ μ μ −

2 Nạp lại các thanh ghi TH với giá trị đếm ban đầu

đếm thì nguồn xung để tăng nội dung các thanh ghi TH v TL l từ bên ngo i 8051 ở chế độ μ μ μ

bộ đếm, hãy l u ý rằng các thanh ghi TMOD v TH, TL cũng giống nh đối với bộ định thời − μ −

đ ợc b n ở phần tr ớc, them chí chúng vẫn có cùng tên gọi Các chế độ của các bộ định thời − μ −cũng giống nhau

4.16 Bít C/T trong thanh ghi TMOD.

Xem lại phần trên đây về bít C/T trong thanh ghi TMOD ta thấy rằng nó quyết địnhnguồn xung đồng hồ cho bộ định thời Nếu bít C/T = 0 thì bộ định thời nhận các xung đồng hồ

từ bộ giao động thạch anh của 8051 Ng ợc lại, khi C/T = 1 thì bộ định thời đ ợc sử dụng − −

nh bộ đếm v nhận các xung đồng hồ từ nguồn bên ngo i của 8051 Do vậy, khi bít C/T = 1 − μ μthì bộ đếm lên, khi các xung đ ợc đ a đến chân 14 v 15 Các chân n y có tên l T0 (đầu − − μ μ μ

v o của bộ định thời Timer0) v T1 (đầu v o của bộ Timer1) L u ý rằng hai chân n y thuộc μ μ μ − μ

về cổng P3 Trong tr ờng hợp của bộ Timer0 khi C/T = 1 thì chân P3.4 cấp xung đồng hồ v − μ

bộ đếm tăng lên đối với mỗi xung đồng hồ đi đến từ chân n y T ơng tự nh vậy đói với bộ μ − −Timer1 thì khi C/T = 1 với mỗi xung đồng hồ đi đến từ P3.5 bộ đếm sẽ đếm tăng lên 1

Trang 13

Bộ Timer0 với đầu v o ngo i (chế độ 2) μ μ

Nh một ví dụ ứng dụng khác của bộ định thời gian với bít C/T = 1, ta có thể nạp một−sóng vuông ngo i với tần số 60Hz v o bộ định thời Ch ơng trình sẽ tạo ra các đơn vị thời μ μ −gian chuẩn theo giây, phút, giờ Từ đầu v o n y ta hiển thị lên một LCD Đây sẽ l một đồng μ μ μ

hồ số tuyệt vời nh ng nó không thật chính xác Ví dụ n y có thể tìm thấy ở phụ lục Appendix − μE

Tr ớc khi kết thúc ch ơng n y ta cần nhắc lại hai vấn đề quan trọng.− − μ

1 Chúng ta có thể nghĩ rằng công dụng của lệnh “JNB TFx, đích” để hiển thị mức caocủa cờ TF l một sự lãng phí thời gian của BVĐK Điều đó đúng có một giải pháp cho vấn đề μ

n y l sử dụng các ngắt Khi sử dụng các ngắt ta có thể đi thực hiện các công việc khác với μ μBVĐK Khi cờ TF đ ợc bật thì nó báo cho ta biết đây l điểm quan trọng về thế mạnh của − μ8051

2 Chúng ta muốn biết các thanh ghi TR0 v TR1 thuộc về đâu Chúng thuộc về mộtμthanh ghi gọi l TCON mã sẽ đ ợc ban sau ở đây (TCON - l thanh ghi điều khiển bộμ − μ

đếm (bộ định thời))

Trang 14

Trong các ví dụ trên đây ta đã thấy công dụng của các cờ TR0 v TR1 để bật/ tắt cácμ

bộ định thời Các bít n y l một bộ phận của thanh ghi TCON (điều khiển bộ định thời) Đây μ μ

l thanh ghi 8 bít, nh đ ợc chỉ ra trong bảng 9.2 thì bốn bít trên đ ợc dùng để l u cất các μ − − − −bít TF v TR cho cả Timer0 v Timer1 Còn bốn bít thấp đ ợc thiết lập d nh cho điều khiển μ μ − μcác bít ngắt m ta sẽ b n ở ch ơng 11 Chúng ta phải l u ý rằng thanh ghi TCON l thanh μ μ − − μghi có thể đánh địa chỉ theo bít đ ợc Nên ta có thể thay các lệnh nh “SETB TR1” l “CLR − − μTR1” bằng các lệnh t ơng ứng nh “SET TCON.6” v “CLR TCON.6”.− − μ

4.18 Tr ờng hợp khi bít GATE = 1 trong TMOD −

Tr ớc khi kết thúc ch ơng ta cần b n thêm về tr ờng hơpợ khi bít GATE = 1trong − − μ −thanh ghi TMOD Tất cả những gì chúng ta vừa nói trong ch ơng n y đều giả thiết GATE = 0.− μKhi GATE = 0 thì bộ định thời đ ợc khởi động bằng các lệnh “SETB TR0” v “SETB TR1” − μ

đối với Timer0 v Timer1 t ơng ứng Vậy điều gì xảy ra khi bít GATE = 1? Nh ta có thể μ − −nhìn thây thì nếu GATE = 1 thì việc khởi động v dừng bộ định thời đ ợc thực hiện từ bên μ −ngo i qua chân P2.3 v P3.3 đối với Timer0 v Timer1 t ơng ứng Mặc dù rằng TRx đ ợc μ μ μ − −bật lên bằng lệnh “SETB TRx” thì cũng cho phép ta khởi động v dừng bộ định thời từ bên μngo i tại bất kỳ thời điểm n o thông qua công tắc chuyển mạch đơn giản Ph ơng pháp điều μ μ −khiển phần cứng để dừng v khởi động bộ định thời nay có thể có rất nhiều ứng dụng Ví dụ, μchẳng hạn 8051 đ ợc−

dùng trong một sản phẩm phát báo động mỗi giây dùng bộ Timer0 theo nhiều việc khác Bộ Timer0 đ ợc bật lên bằng phần mềm qua lệnh “SETB TR0” v nằm ngo i sự kiểm soát của − μ μ

ng ời dùng sản phẩm đó Tuy nhiên, khi nối một công tắc chuyển mạch tới chân P2.3 ta có thể−dừng v khởi động bộ định thời gian bằng cách đó để tắt báo độngμ

Trang 15

Chơng 5 Cấu trúc ngắt ngoài 80515.1 Lập trình các ngắt phần cứng bên ngo i μ

Bộ vi điều khiển 8051 có hai ngắt phần cứng bên ngo i l chân 12 (P3.2) v chân 13μ μ μ(P3.3) dùng cho ngắt INT0 v INT1 Khi kích hoạt những chân n y thì 8051 bị ngắt tại bất kỳμ μcông việc n o m nó đang thực hiện v nó nhảy đến bảng véc tơ ngắt để thực hiện trình phụcμ μ μ

vụ ngắt

5.2 Các ngắt ngo i INT0 v INT1 μ μ

Chỉ có hai ngắt phần cứng ngo i trong 8051 l INT0 v INT1 Chúng đ ợc bố trí trên chân μ μ μ −P3.2 v P3.3 v địa chỉ của chúng trong bảng véc tơ ngắt l 0003H v 0013H Nh đã nói ở μ μ μ μ −mục 11.1 thì chúng đ ợc ghép v bị cấm bằng việc sử dụng thanh ghi IE Vậy chúng đ ợc − μ −kích hoạt nh thế n o? Có hai mức kích hoạt cho các ngắt phần cứng ngo i: Ngắt theo mức − μ μ

v ngắt theo s ờn D ới đây l mô tả hoạt động của mỗi loại.μ − − μ

5.3 Ngắt theo mức.

Trang 16

tất cả các chân của cổng I/O) v nếu một tín hiệu ở mức thấp đ ợc cấp tới chúng thì nó ghi μ −nhãn ngắt Sau đó bộ vi điều khiển dừng tất cả mọi công việc nó đang thực hiện v nhảy đếnμbảng véc tơ ngắt để phục vụ ngắt Điều n y đ ợc gọi l ngắt đ ợc kích hoạt theo mức hay μ − μ −ngắt

theo mức v l chế độ ngắt mặc định khi cấp nguồn lại cho 8051 Tín hiệu mức thấp tại chânμ μINT phải đ ợc lâýu đi tr ớc khi thực hiện lệnh cuối cùng của trình phục vụ ngắt RETI, nếu− −không một ngắt khác sẽ lại đ ợc tạo ra Hay nói cách khác, nếu tín hiệu ngắt mức thấp không−

đ ợc lấy đi khi ISR kết thúc thì nó không thể hiện nh một ngắt khác v 8051 nhảy đến bảng− − μvéc tơ ngắt để thực hiện ISR

5.4 Trích mẫu ngắt theo mức.

Các chân P3.2 v P3.3 bình th ờng đ ợc dùng cho v o - ra nếu các bít INT0 v INT1μ − − μ μtrong thanh ghi IE không đ ợc kích hoạt Sau khi các ngắt phần cứng trong thanh gi IE đ ợc− −kích hoạt thì bộ vi điều khiển duy trì trích mẫu trên chân INTn đối với tín hiệu mức thấp mộtlần trong một chu trình máy Theo bảng dữ liệu của nh sản xuất của bộ vi điều khiển thìμ

“chân ngắt phải đ ợc giữ ở mức thấp cho đến khi bắt đầu thực hiện trình phục vụ ngắt ISR.−Nếu chân INTn đ ợc đ a trở lại mức cao tr ớc khi bắt đầu thực hiện ISR thì sẽ chẳng có ngắt− − −

n o xảy ra” Tuy nhiên trong quá trình kích hoạt ngắt theo mức thấp nên nó lại phải đ a lênμ −mức cao tr ớc khi thực hiện lệnh RET1 v lại theo bảng dữ liệu của nh sản xuất thì “nếu− μ μchân INTn vẫn ở mức thấp sau lệnh RETI của trình phục vụ ngắt thì một ngắt khác lại sẽ đ ợc−kích hoạt sau khi lệnh RET1 đ ợc thực hiện” Do vậy, để bảo đảm việc kích hoạt ngắt phần−cứng tại các chân INTn phải khẳng định rằng thời gian tồn tại tín hiệu mức thấp l khoảng 4μchu trình máy v không đ ợc hơn Điều n y l do một thực tế l ngắt theo mức không đ ợcμ − μ μ μ −chốt Do vậy chân ngắt phải đ ợc gi a ở mức thấp cho đến khi bắt đầu thực hiện ISR.− −

Thời gian tối thiểu của ngắt theo mức thấp (XTAL = 11.0592MHz)

5.5 Các ngắt theo s ờn −

Nh đã nói ở tr ớc đây trong quá trình bật lại nguồn thì 8051 l m các chân INT0 v− − μ μINT1 l các ngắt theo mức thấp Để biến các chân n y trở th nh các ngắt theo s ờn thì chúngμ μ μ −

ta phải viết ch nơg trình cho các bít của thanh ghi TCON Thanh thi TCON giữ các bít cờ IT0−

v IT1 xác định chế độ ngắt theo s ờn hay ngắt theo mức của các ngắt phần cứng IT0 v IT1μ − μ

l các bít D0 v D2 của thanh ghi TCON t ơng ứng Chúng có thể đ ợc biểu diễn nhμ μ − − −TCON.0 v TCON.2 vì thanh ghi TCON có thể đánh địa chỉ theo bít Khi bật lại nguồn thìμTCON.0 (IT0) v TCON.2 (IT1) đều ở mức thấp (0) nghĩa l các ngắt phần cứng ngo i củaμ μ μcác chân INT0 v INT1 l ngắt theo mức thấp Bằng việc chuyển các bít TCON.0 v TCON.2μ μ μlên cao qua các lệnh “SETB TCON.0” v “SETB TCON.2” thì các ngắt phần cứng ngo i INT0μ μ

Trang 17

• Bít TF1 hay TCON.7 l cờ tr n của bộ Timer1 Nó đ ợc lập bởi phần cứng khi bộ μ μ −

đếm/ bộ

định thời 1 tr n, nó đ ợc xoá bởi phần cứng khi bộ xử lý chỉ đến trình phục vụ ngắt.μ −

• Bít TR1 hay TCON.6 l bít điều khiển hoạt động của Timer1 Nó đ ợc thiết lập v μ − μxoá bởi

phần mềm để bật/ tắt Timer1

• Bít TF0 hay TCON.5 t ơng tự nh TF1 d nh cho Timer0.− − μ

• Bít TR0 hay TCON.4 t ơng tự nh TR1 d nh cho Timer0.− − μ

• Bít IE1 hay TCON.3 cờ ngắt ngo i 1 theo s ờn Nó đ ợc thiết lập bởi CPU khi μ − −

s ờn ngắt−

ngo i (chuyển từ cao xuống thấp) đ ợc phát hiện Nó đ ợc xóa bởi CPU khi ngắt đ ợc xửμ − − −

lý L u ý: Cờ n y không chốt những ngắt theo mức thấp.− μ

• Bít IT1 hay TCON.2 l bít điều khiển kiểu ngắt Nó đ ợc thiết lập v xoá bởi phần μ − μmềm để

xác định kiểu ngắt ngo i theo s ờn xuống hay mức thấp.μ −

Bít IE0 hay TCON.1 t ơng tự nh IE1 d nh cho ngắt ngo i 0.− − μ μ

• Bít IT0 hay TCON.0 t ơng tự nh bít IT1 d nh cho ngắt ngo i 0.− − μ μ

Xét ví dụ 11.6, chú ý rằng sự khác nhau duy nhất giữa vì dụ n y v ví dụ 11.5 l ởμ μ μ

trong h ng đầu tiên của MAIN khi lệnh “SETB TCON.2” chuyển ngắt INT1 về kiểu ngắt theoμ

s ờn Khi s ờn xuống của tín hiệu đ ợc cấp đến chân INT1 thì đèn LED sẽ bật lên một lúc.− − −

Đèn LED có thời gian sáng phụ thuộc v o độ trễ bên trong ISR của INT1 Để bật lại đèn LEDμthì phải có một s ờn xung xuống khác đ ợc cấp đến chân P3.3 Do bản chất ngắt theo mức − −của ngắt thì đèn LED còn sáng chừng n o tín hiệu ở chân INT1 vẫn còn ở mức thấp Nh ng μ −trong ví dụ n y để bật lại đèn LED thì xung ở chân INT1 phải đ ợc đ a lên cao rồi sau đó bị μ − −hạ xuống thấp để tạo ra một s ờn xuống l m kích hoạt ngắt.− μ

5.6 Trình mẫu ngắt theo s ờn −

Tr ớc khi kết thúc phần n y ta cần trả lời câu hỏi vậy thì ngắt theo s ờn đ ợc trích − μ − −mẫu

th ờng xuyên nh thế n o? Trong các ngắt theo s ờn, nguồn ngo i phải giữ ở mức cao tối− − μ − μthiểu l một chu trình máy nữa đê đảm bảo bộ vi điều khiển nhìn thấy đ ợc sự chuyển dịch từμ −cao xuống thấp của s ờn xung.−

S ờn xuống của xung đ ợc chốt bởi 8051 v đ ợc giữa bởi thanh ghi TCON Các bít− − μ −

TCON.1 v TCON.3 giữ các s ờn đ ợc chốt của chân INT0 v INT1 t ơng ứng TCON.1 μ − − μ −vμ

TCON.3 cũng còn đ ợc gọi l các bít IE0 v IE1 nh chỉ ra trên hình 11.6 Chúng hoạt động− μ μ −

nh các cờ “ngắt đang đ ợc phục vụ” (Interrupt-in-server) Khi một cờ “ngắt đang đ ợc phục− − −vụ” bật lên thì nó báo cho thế giới thực bên ngo i rằng ngắt hiện nay đang đ ợc xử lý v trênμ − μchân INTn n y sẽ không có ngắt n o đ ợc đáp ứng chừng n o ngắt n y ch a đ ợc phục vụμ μ − μ μ − −xong Đây giống nh tín hiệu báo bận ở máy điện thoại Cần phải nhấn mạnh hạt điểm d ới− −

đây khi quan tâm đến các bít IT0 v IT1 của thanh ghi TCON.μ

1 Khi các trình phục vụ ngắt ISR kết thúc (nghĩa l trong thanh ghi thực hiện lệnh μRETI)

Các bít n y (TCON.1 v TCON.3) đ ợc xoá để báo rằng ngắt đ ợc ho n tất v 8051 sẵn μ μ − − μ μ

Trang 18

một trong các chức năng của lệnh RETI để xoá bít t ơng ứng trong thanh ghi TCON (bít −TCON.1 v TCON.3) Nó báo cho ta rằng trình phục vụ ngắt xắp kết thúc Vì lý do n y mμ μ μcác bít TCON.1 v TCON.3 đ ợc gọi l các cơ báo “ngắt đang đ ợc phục vụ” cờ n y sẽ lên μ − μ − μcao khi một s ờn xuống đ ợc phát hiện trên chân INT v dừng ở mức cao trong to n bộ quá − − μ μtrình thực hiện ISR Nó chỉ bị xoá bởi lệnh RETI l lệnh cuối cùng của ISR Do vậy, sẽ không μbáo giờ cần đến các lệnh xoá bít n y nh “CLR TCON.1” hay “CLR TCON.3” tr ớc lệnh μ − −RETI trong trình phục vụ ngắt đối với các ngắt cứng INT0 v INT1 Điều n y không đúng với μ μ

tr ờng hợp của ngắt nối tiếp.−

5.7 V i điều bổ xung về thanh ghi TCON μ

Bây giờ ta xét kỹ về các bít của thanh ghi TCON để hiểu vai trò của nó trong việc duy

trì các ngắt

a) Các bít IT0 v IT1 μ

Các bít TCON.0 v TCON.2 đ ợc coi nh l các bít IT0 v IT1 t ơng ứng Đây l cácμ − − μ μ − μbít xác định kiểu ngắt theo s ờn xung hay theo mức xung của các ngắt phần cứng trên chân−INT.0 v INT.1 t ơng ứng Khi bật lại nguồn cả hai bít n y đều có mức 0 để biến chúng μ − μ

th nhμ

ngắt theo tín hiệu mức thấp Lập trình viên có thể điều khiển một trong số chúng lên cao đểchuyển ngắt phần cứng bên ngo i th nh ngắt theo ng ỡng Trong một hệ thống dựa trên 8051μ μ −

đã cho thì một khi ta đã đặt về 0 hoặc 1 thì các bít n y sẽ không thay đổi vì ng ời thiết kế đãμ −

cố định kiểu ngắt l ngắt theo s ờn hay theo mức rỗi.μ −

b) Các bít IE0 v IE1 μ

Các bít TCON.1 v TCON.3 còn đ ợc gọi l IE0 v IE1 t ơng ứng Các bít n y đ ợc 8051 μ − μ μ − μ −dùng để bám kiểu ngắt theo s ờn xung Nói các khác l nếu IT0 v IT1 bằng 0 thì có nghĩa l− μ μ μcác ngắt phần cứng l ngắt theo mức thấp, các bít IE0 v IE1 không dùng đến l m gì Các bít μ μ μIE0 v IE1 đ ợc 8051 chỉ dùng để chốt s ờn xung từ cao xuống thấp trên các chân INT0 v μ − − μINT1 Khi có chuyển dịch s ờn xung trên chân INT0 (hay INT1) thì 8051 đánh dấu (bật lên −cao) các bít IEx trên thanh ghi TCON nhảy đến bảng véc tơ ngắt v bắt đầu thực hiện trình μphục vụ ngắt ISR Trong khi 8051 thực hiện ISR thì không có một s ờn xung n o đ ợc ghi − μ −nhận trên chân INT0 (hay INT1) để ngăn mọi ngắt trong ngắt Chỉ trong khi thực hiện lệnh RETI ở cuối trình phục vụ ngắt ISR thì các bít IEx mới bị báo rằng một s ờn xung cao xuống −thấp mới trên chân INT0 (hay INT1) sẽ kích hoạt ngắt trở lại Từ phần trình b y trên ta thấy μrằng các bít IE0 v IE1 đ ợc 8051 sử dụng bên trong để báo có một ngắt đang đ ợc xử lý hayμ − −không Hay nói cách khác l lập trình viên không phải quan tâm đến cá bít n y.μ μ

c) Các bít TR0 v TR1 μ

Đây l những bít D4 v D6 (hay TCON.4 v TCON.6) của thanh ghi TCON Các bítμ μ μ

n y đã đ ợc giới thiệu ở ch ơng 9 chúng đ ợc dùng để khởi động v dừng các bộ định thờiμ − − − μTimer0 v Timer1 t ơng ứng Vì thanh ghi TCON có thể đánh địa chỉ theo bít nên có thể sửμ −dụng các lệnh “SETB TRx” v “CLR TRx” cũng nh các lệnh “SETB TCON.4” v “CLRμ − μTCON.4”

d) Các bít TF0 v TF1 μ

Các bít n y l D5 (TCON.5) v D7 (TCON.7) của thanh ghi TCON m đã đ ợc giớiμ μ μ μ −thiệu ở ch ơng 9 Chúng ta đ ợc sử dụng bởi các bộ Timer0 v Timer1 t ơng ứng để báo − − μ −rằng

các bộ định thời bị tr n hay quay về không Mặc dù ta đã dùng các lệnh “JNB TFx, đích” vμ μ

“CLR TFx” nh ng chúng ta cũng không thể sử dụng các lệnh nh “SETB TCON.5, đích” v− − μ

Trang 19

cuối cùng của khung dữ liệu, bít stop đ ợc truyền đi báo rằng thanh ghi SBUF sẵn s ng truyền− μbyte kế tiếp Trong tr ờng hợp cờ RI (Receive Interrupt) thì nó đ ợc bật lên khi to n bộ − − μkhung

dữ liệu kể cả bít stop đã đ ơc nhận Hay nói cách khác khi thanh ghi SBUF đã có một byte thì−

cờ RI bật lên báo rằng byte dữ liệu nhận đ ợc cần lấy đi cất v o nơi an to n tr ớc khi nó bị− μ μ −mất (bị ghi đè) bởi dữ liệu mới nhận đ ợc Chừng n o còn nói về truyền thông nối tiếp thì tất− μcả mọi khái niệm trên đây đều áp dụng giống nh nhau cho dù sử dụng ph ơng pháp thăm dò− −hay sử dụng ph ơng pháp ngắt Sự khác nhau duy nhất giữa hai ph ơng pháp n y l ở cách− − μ μphục vụ quá trình truyền thông nối tiếp nh thế n o Trong ph ơng pháp thăm dò thì chúng ta− μ −phải đợi cho cờ (TI hay RI) bật lên v trong lúc chờ đợi thì ta không thể l m gì đ ợc cả Cònμ μ −trong ph ơng pháp ngắt thì ta đ ợc báo khi 8051 đã nhận đ ợc một byte hoặc nó sẵn s ng− − − μchuyển (truyền) byte kế tiếp v ta có thể l m các công việc khác trong khi truyền thông nốiμ μtiếp đang đ ợc phục vụ.−

Trong 8051 chỉ có một ngắt d nh riêng cho truyền thông nối tiếp Ngắt n y đ ợc dùngμ μ −cho cả truyền v nhận dữ liệu Nếu bít ngắt trong thanh gi IE (l bít IE.4) đ ợc phép khi RI μ μ −vμ

TI bật lên thì 8051 nhận đ ợc ngắt v nhảy đến địa chỉ trình phục vụ ngắt d nh cho truyền− μ μthông nối tiếp 0023H trong bảng véc tơ ngắt để thực hiện nó Trong trình ISR n y chúng taμphải kiểm tra các cờ TI v RI để xem cờ n o gây ra ngắt để đáp ứng một cách phù hợpμ μ

5.10 Các mức u tiên ngắt trong 8051 −

a) Các mức u tiên trong quá trình bật lại nguồn −

Khi 8051 đ ợc cấp nguồn thì các mức u tiên ngắt đ ợc gán theo bảng Từ bảng− − −

n y ta thấy ví dụ nếu các ngắt phần cứng ngo i 0 v 1 đ ợc kích hoạt cùng một lúc thì ngắtμ μ μ −ngo i 0 sẽ đ ợc đáp ứng tr ớc Chỉ sau khi ngắt INT0 đã đ ợc phục vụ xong thì INT1 mớiμ − − −

đ ợc phục vụ vì INT1 có mức u tiên thấp hơn Trong thực tế sơ đồ mức u tiên ngắt trong− − −bảng không có ý nghĩa gì cả m một quy trình thăm dò trong đó 8051 thăm dò các ngắt theoμtrình tự cho trong bảng v đáp ứng chúng một cách phù hợp.μ

Mức u tiên các ngắt trong khi cấp lại nguồn −

Ngày đăng: 24/04/2013, 11:26

HÌNH ẢNH LIÊN QUAN

Bảng nội dung ROM - Vi xử lý và đo lường
Bảng n ội dung ROM (Trang 4)
Sơ đồ bố trí chân của 8051. - Vi xử lý và đo lường
Sơ đồ b ố trí chân của 8051 (Trang 7)
Sơ đồ chân của 28C64 . - Vi xử lý và đo lường
Sơ đồ ch ân của 28C64 (Trang 20)
Sơ đồ chân của 6264: - Vi xử lý và đo lường
Sơ đồ ch ân của 6264: (Trang 21)

TỪ KHÓA LIÊN QUAN

w