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

Luận Văn Số Hoá Bài Thí Nghiệm Mạch Điện (Kèm File Program)

98 527 0

Đ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 98
Dung lượng 1,12 MB
File đính kèm Program Kèm Theo.rar (65 KB)

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Khi port 0 được dùng trong chế độ chuyển đổi của nó : vừa là busdữ liệu vừa là byte thấp của bus địa chỉ, ALE là tín hiệu để chốt địa chỉ vào một thanhghi bên ngoài trong nữa đầu chu lỳ

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA THÀNH PHỐ HỒ CHÍ MINH

BỘ MÔN ĐIỀU KHIỂN TỰ ĐỘNG

Trang 2

MỤC LỤC

PHẦN 1 : LÝ THUYẾT CHUNG

A ĐẶT VẤN ĐỀ : 4

I M ỤC ĐÍCH YÊU CẦU CỦA ĐỀ TÀI : 4

II G IỚI HẠN CỦA ĐỀ TÀI : 4

III S Ơ ĐỒ KHỐI TỔNG QUÁT : 4

B GIỚI THIỆU AT89C51: 5

I TÓM TẮT PHẦN CỨNG : 5

1 Giới thiệu họ MCS51 : 5

2 Sơ lược về các chân của AT89C51 : 6

3 Tổ chức bộ nhớ : 9

4 Các thanh ghi chức năng đặc biệt : 13

5 Bộ nhớ ngoài : 17

6 Ngõ vào tín hiệu RESET: 21

II HOẠT ĐỘNG CỦA BỘ ĐỊNH THÌ TIMER: 22

1 Giới thiệu : 22

2 Thanh ghi chế độ Timer (TMOD) : 23

3 Thanh ghi điều khiển timer (TCON) : 24

4 Chế độ timer : 25

5 Nguồn tạo xung nhịp : 27

6 Bắt đầu, dừng và điều khiển các Timer: 28

7 Khởi động và truy xuất các thanh ghi timer : 29

8 Các khoảng ngắn và các khoảng dài: 29

III HOẠT ĐỘNG CỦA BỘ NGẮT (INTERRUPT): 30

1 Giới thiệu : 30

2 Tổ chức ngắt của AT89C51: 31

3 Các ngắt của CAT89C51: 31

4 Định thì interrupt: 32

IV HOẠT ĐỘNG PORT NỐI TIẾP : 32

1 Giới thiệu : 32

2 Thanh ghi điều khiển port nối tiếp : 33

3 Các chế độ hoạt động : 35

4 Khởi động và truy xuất các thanh ghi cổng nối tiếp : 36

5 Truyền thông đa xử lý : 38

6 Tốc độ baud cổng nối tiếp : 38

V TẬP LỆNH CỦA CAT89C51: 40

 Các chế độ đánh địa chỉ : Trong tập lệnh có 8 chế độ đánh địa chỉ: 40

Trang 3

C BIẾN ĐỔI A/D VÀ D/A : 44

I GIỚI THIỆU ADC0809 : 44

1 Sơ đồ khối : 44

2 Sơ đồ chân : 45

3 Khả năng : 45

4 Đặc tính kỹ thuật : 45

5 Mô tả chức năng : 46

G IẢN ĐỒ THỜI GIAN : 46

II GIỚI THIỆU DAC0808 : 48

1 Sơ đồ khối : 49

2 Sơ đồ chân : 49

3 Khả năng : 49

4 Trị số tối đa : 50

5 Hoạt động cơ bản : 50

D CỔNG NỐI TIẾP RS 232 : 51

E NGÔN NGỮ LẬP TRÌNH VISUAL BASIC VỚI TRUYỀN THÔNG NỐI TIẾP : 53

F GIAO TIẾP VÀ HIỂN THỊ KẾT QUẢ ĐO : 54

G KHUYẾCH ĐẠI THUẬT TOÁN (OPERATION AMPLIFIER) : 54

I SƠ ĐỒ KHỐI VÀ PHÂN TÍCH MỘT MẠCH OP – AMP ĐƠN GIẢN : 55

II IC KHUYẾCH ĐẠI THUẬT TOÁN (OP AMP) : 55

1 Các đặc tính cơ bản : 55

2 Op Amp lý tưởng : 57

3 Mạch đo dùng IC Op-Amp (mạch khuyếch đại thuật toán ) : 58

PHẦN 2 : THIẾT KẾ A THIẾT KẾ PHẦN CỨNG : 59

I ĐO ÁP, DÒNG, TỤ, CẢM VÀ ĐIỆN TRỞ : 59

1 Đo điện áp : 59

2 Đo dòng điện : 60

3 Đo điện dung : 60

4 Đo điện cảm : 61

5 Đo điện trở : 62

II ĐO TẦN SỐ, COS, CÔNG SUẤT : 63

1 Đo tần số : 63

2 Đo cos : 63

3 Đo công suất : 63

III BỘ NGUỒN LẬP TRÌNH DAC : 64

B GIỚI THIỆU CÁC IC TRÊN KIT : 64

Trang 4

1 µCAT89C51 : 64

2 Vi mạch MAX 232 : 64

3 ADC0809 : 65

4 DAC0808 : 65

5 LM741 và LF353 : 65

6 IC 74HC573 : Đệm dòng 66

7 Rơ le : 66

C GIAO DIỆN TRÊN MÁY TÍNH VÀ SỬ DỤNG : 68

D LƯU ĐỒ GIẢI THUẬT VÀ CHƯƠNG TRÌNH VI XỬ LÝ : 74

I LƯU ĐỒ GIẢI THUẬT : 74

1 Chương trình chính : 74

2 Chương trình con Inchar, Outchar: 84

3 Chương trình con đo độ rộng xung : 84

4 Chương trình con delay2ms : (delay 2.5 ms) 85

II CHƯƠNG TRÌNH VI XỬ LÝ CHO AT89C51 : 86

III MẠCH THIẾT KẾ : 99

Tài liệu tham khảo

1 Tài liệu Vi Xử Lý _Giảng viên Hồ Trung Mỹ

2 The 8051 Microcontroller _I.Scott MacKenzie

3 Hướng dẫn thí nghiệm Vi Xử Lý

4 Đo lường và điều khiển bằng máy tính Ngô Diên Tập

5 Lập trình ghép nối máy tính trong Windows Ngô Diên Tập

6 Kỹ thuật đo Nguyễn Ngọc Tân

7 Tài liệu hướng dẫn thí nghiệm mạch điện tử

PHẦN 1 : LÝ THUYẾT CHUNG

A ĐẶT VẤN ĐỀ :

Ngày nay cùng với sự phát triển của các ngành khoa học kỹ thuật, kỹ thuật điện tử ma øtrong đó là việc ứng dụng máy vi tính vào kỹ thuật đo lường và điều khiển đã đem lại những kết quả đầy tính ưu việt

Trang 5

Để có thể tiến hành điều khiển hoặc giám sát, đo lường các quá trình thực bằngmáy tính, trước hết phải có được mối liên hệ cần thiết giữa máy tính và thế giới bênngoài.

Với sự phát triển mạnh của nghành kỹ thuật số đặc biệt là cho ra đời các họ vi xử

lí và vi điều khiển rất đa chức năng do đó việc dùng kỹ thuật vi xử lí, kỹ thuật vi điềukhiển kết hợp với máy tính đã giải quyết những bế tắc và kinh tế hơn mà phương phápdùng IC rời kết nối lại không thực hiện được Các thiết bị, hệ thống đo lường và điềukhiển ghép nối với máy tính có độ chính xác cao, thời gian thu thập số liệu ngắn,nhưng điều đáng quan tâm hơn là mức độ tự động hoá trong việc thu thập và xử lý cáckết quả đo, kể cả việc lập bảng thống kê cũng như in ra kết quả

Trong luận văn này, em thiết kế một mô hình thí nghiệm mạch điện và bộ đo cácđại lượng điện, có giao diện nối tiếp với máy tính để hiển thị và vẽ dạng tín hiệu đolên màn hình Mạch vi xử lý nhận các giá trị đại lượng điện (điện áp, dòng điện, điệntrở, điện dung, cảm kháng tần số, công suất) sau khi đã qua mạch đệm được chuyểnthành điện áp thích hợp tương ứng với ngõ vào analog của bộ biến đổi ADC Các giátrị đo sẽ được truyền về máy tính để xử lý và được hiện thị lên màn hình

Yêu cầu :

-Giá trị đophải chính xác, và thay đổi tầm đo một cách linh hoạt

-Mạch điện không quá phức tạp, bảo đảm được sự an toàn, dễ sử dụng

-Giá thành không quá mắc

Do mạch chỉ thiết kế đo các đại lượng điện trên mạch thí nghiệm điện nên bịgiới hạn về giá trị đo áp (tối đa 12 V DC, 24 Vpp AC), dòng (0.1 A), các giá trị điệnkháng, tần số, công suất cũng bị giới hạn tầm đo Ta có thể mở rộng để đo các giá trịlớn hơn thông qua biến dòng, biến áp, mạch phân tầm đo với tỷ số biến đổi thích hợp

B GIỚI THIỆU AT89C51:

1 Giới thiệu họ MCS51 :

MCS51 là một họ IC vi điều khiển (microcontroller) do hãng Intel sản xuất Các

IC tiêu biểu cho họ MCS51 là 8031 và 8051 Cùng với thời gian, con người đã cho rađời nhiều loại vi xử lí từ 8 bit đến 64 bit với cải tiến ngày càng ưu việt nhưng tùy theomục đích sử dụng mà vi xử lí 8 bit vẫn còn tồn tại Trong luận văn, em sử dụng vi điều

&

chuyển đổi

Máy tính

Trang 6

khiển AT89C51 AT89C51 cũng là vi xử lí 8 bit nhưng có chứa bộ nhớ bên trong và cóthêm 2 bộ định thời, ngoài ra nó có thể giao tiếp nối tiếp trực tiếp với máy tính Vớibộ nhớ trong, AT89C51 thích hợp cho những chương trình có quy mô nhỏ, tuy nhiênAT89C51 có thể kết hợp được với bộ nhớ ngoài cho chương trình có quy mô lớn Sauđây là giới thiệu của em về vi điều khiển AT89C51 có các đặc điểm chung như sau :

 4 port I/O 8 bit

 2 bộ định thời 16 bit

 Giao tiếp nối tiếp

 64 K không gian bộ nhớ chương trìng mở rộng

 64 K không gian bộ nhớ dữ liệu mở rộng

 Một bộ xử lý luận lý (thao tác trên các bit đơn )

 210 bit được địa chỉ hoá

 Bộ nhân/chia 4s

Trang 7

Sơ đồ khối AT89C51

2 Sơ lược về các chân của AT89C51 :

AT89C51 có tất cả 40 chân có chức năng như các đường xuất nhập Trong đó có

24 chân có công dụng kép, mỗi đường có thể hoạt động như đường xuất nhập hoặc nhưđường điều khiển hoặc là các thành phần của bus dữ liệu và bus địa chỉ

Sơ đồ chân AT89C51 : 40

OTHER

128 byte RAM 8032\8052

ROM 0K:

8031\8032 4K: 8031 8K:8052

Trang 9

b Port 1 :

Port 1 là một port I/O trên các chân 1 – 8 Các chân được ký hiệu P1.0 ,P1.1, P1.2 , … có thể dùng cho giao tiếp với các thiết bị ngoài nếu cần Port 1 không cóchức năng khác, vì vậy chúng chỉ được dùng cho giao tiếp với các thiết bị ngoài

c Port 2 :

Port 2 là một port có công dụng kép trên các chân 21 – 28 được dùng nhưcác đường xuất nhập hoặc là các byte cao của bus địa chỉ đối với các thiết kế dùng bộnhớ mở rộng

d Port 3 :

Port 3 là một port công dụng kép trên các chân 10 – 17 Các chân của portnày có nhiều chức năng, các công dụng chuyển đổi có liên hệ với các đặc tính đặc biệtcủa AT89C51 như ở bảng sau :

AT89C51 có 4 tín hiệu điều khiển

PSEN là tín hiệu ra trên chân 29 Nó là tín hiệu điều khiển để cho phép bộnhớ chương trình mở rộng và thường được nối đến chân OE (Output Enable ) của mộtEPROM để cho phép đọc các byte của mã lệnh

PESEN sẽ ở mức thấp trong thời gian lấy lệnh Các mã nhị phân của chươngtrình được đọc từ EPROM qua bus dữ liệu và được chốt vào thanh ghi lệnh củaAT89C51 để giải mã lệnh Khi thi hành chương trình trong ROM nội ( AT89C51 )PSENsẽ ở mức thụ động ( mức cao )

Tín hiệu ra ALE trên chân 30 tương hợp với các thiết bị làm việc với các vi xử lý

8085, 8086, 8088 AT89C51 dùng ALE một cách tương tự cho việc giải kênh các busđịa chỉ và dữ liệu Khi port 0 được dùng trong chế độ chuyển đổi của nó : vừa là busdữ liệu vừa là byte thấp của bus địa chỉ, ALE là tín hiệu để chốt địa chỉ vào một thanhghi bên ngoài trong nữa đầu chu lỳ bộ nhớ Sau đó các đường port 0 dùng đểxuất hoặcnhập dữ liệu trong nửa sau của chu kỳ bộ nhớ

Các xung tín hiệu ALE có tốc độ bằng 1/6 lần tần số dao động trên chip và có thểđược dùng làm nguồn xung nhịp cho các phần khác của hệ thống Nếu xung nhịp trên

Trang 10

AT89C51 là 12 MHz thì ALE có tần số 2 MHz Chỉ ngoại trừ khi hình thành lệnhMOVX , một xung ALE sẽ bị mất Chân này cũng được làm ngõ vào cho xung lậptrình cho EPROM trong AT89C51

g EA (External Access):

Tín hiệu vào EA trên chân 31 thường được mắc lên mức cao (+5V )hoặc mức thấp(GND ) Nếu ở mức cao, AT89C51 thi hành chương trình từ ROM nội trong khoảng địachỉ thấp ( 4K) Nếu ở mức thấp, chương trình chỉ được thi hành từ bộ nhớ mở rộng Khidùng 8031, EA luôn được nối mức thấp vì không có bộ nhớ chương trình trên chip Nếu EA được nối mức thấp bộ nhớ bên trong chương trình AT89C51 sẽ bị cấm và

chương trình thi hành từ EPROM mở rộng Người ta còn dùng EA làm chân cấp điện

áp 21V khi lập trình cho EPROM trong AT89C51

h RST ( Reset ):

Ngõ vào RST trên chân 9 là ngõ reset của AT89C51 Khi tín hiệu này được đưalên mức cao ( trong ít nhất 2 chu kỳ máy ) , các thanh ghi bên trong AT89C51 được tảinhững giá trị thích hợp để khởi động hệ thống

i Các ngõ vào bộ dao động trên chíp :

Như đã thấy trong các hình trên , AT89C51 có một bộ dao động trên chip Nóthường được nối với một thạch anh ở giữa hai chân 18 và 19 Các tụ giữ cũng cần thiếtnhư đã vẽ Tần số thạch anh thông thường là 12 MHz

j Các chân nguồn :

AT89C51 vận hành với nguồn đơn +5V Vcc được nối vào chân 40 và Vss (GND)được nối vào chân 20

3 Tổ chức bộ nhớ :

AT89C51 có bộ nhớ theo cấu trúc Harvard : có những vùng bộ nhớ riêng biệt chochương trình và dữ liệu Như đã nói ở trên , cả chương trình và dữ liệu có thể ở bêntrong ( AT89C51); dù vậy chúng có thể được mở rộng bằng các thành phần ngoài lênđến tối đa 64 Kbyte bộ nhớ chương trình và 64 Kbyte bộ nhớ dữ liệu

Bộ nhớ bên trong bao gồm ROM và RAM trên chip , RAM trên chip bao gồm nhiều thành phần : phần lưu trữ đa dụng , phần lưu trữ địa chỉ hoá từng bit , các bank thanh ghi và các thanh ghi chức năng đặc biệt

Trang 11

FFFF FFFF

FF

Tóm tắt các vùng bộ nhớ của AT89C51

Hai đặc tính cần lưu ý là :

 Các thanh ghi và các port xuất nhập đã được xếp trong bộ nhớ và có thể đượctruy xuất trực tiếp giống như các địa chỉ bộ nhớ khác

xử lý khác

 Chi tiết về bộ nhớ RAM trên chip :

Như ta thấy trên hình sau, RAM bên trong AT89C51 được phân chia giữa cácbank thanh ghi (00H – 1FH ), RAM địa chỉ hoá từng bit (20H – 2FH ), RAM đa dụng(30H – 7FH) và các thanh ghi chức năng đặc biệt (80H – FFH)

a RAM đa dụng :

Mặc dù trên hình cho thấy 80 byte RAM đa dụng chiếm các địa chỉ từ 30H – 7FH,

32 byte dưới cùng từ 00H đến 1FH cũng có thể được dùng với mục đích tương tự (mặcdù các địa chỉ này đã có mục đích khác )

Bộ nhớ chương trìnhđược chọnqua PSEN

Bộ nhớ dữ liệu

được chọnqua WRvà RD

Trang 12

7F RAM ña duïng FF

10

Trang 13

RAM bên trong cũng có thể được truy xuất dùng cách đánh địa chỉ gián tiếp quaR0 hay R1 Ví dụ , hai lệnh sau thi hành cùng nhiệm vụ như lệnh đơn ở trên :

Lệnh đầu dùng địa chỉ tức thời để di chuyển giá trị 5FH vào thanh ghi R0 , và lệnh thứhai dùng địa chỉ trực tiếp để di chuyển dữ liệu “ được trỏ bởi R0 “ vào thanh ghi tíchluỹ

b RAM địa chỉ hoá từng bit :

AT89C51 chứa 210 bit được địa chỉ hoá , trong đó 128 bit là ở các địa chỉ byte20H đến 2FH , và phần còn lại là trong các thanh ghi chức năng ghi đặc biệt

Ý tưởng truy xuất từng bit riêng lẻ bằng các phần mềm là một đặc tính tiện lợicủa vi điều khiển nói chung Các bit có thể được đặt, xoá, AND, OR, … với một lệnhđơn Đa số các vi xử lý đòi hỏi một chuỗi lệnh đọc–sửa–ghi để đạt được hiệu quảtương tự Hơn nữa, các port I/O cũng được địa chỉ hoá từng bit làm đơn giả phần mềmxuất nhập từng bit

Có 128 bit được địa chỉ hoá đa dụng ở các byte 20H đến 2FH Các địa chỉ nàyđược truy xuất như các byte hoặc như các bit phụ thuộc vào lệnh được dùng Ví dụ , đểđặt bit 67H , ta dùng lệnh sau :

Chú ý rằng “địa chỉ bit 67H “ là bit có trọng số lớn nhất (MSB) ở “ địa chỉ byte 2CH “ Lệnh trên sẽ không tác động đến các bit khác ở địa chỉ này Các vi xử lý sẽ phải thi hành nhiệm vụ tương tự như sau :

c Các bank thanh ghi :

32 byte thấp nhất của bộ nhớ nội là dành cho các bank thanh ghi Bộ lệnh củaAT89C51 hỗ trợ 8 thanh ghi (R0 đến R7) và theo mặc định (sau khi reset hệ thống) cácthanh ghi này ở các địa chỉ 00H – 07H Lệnh sau đây sẽ đọc nội dung ở cacù địa chỉ05H vào thanh ghi tích luỹ :

Trang 14

Ý tưởng dùng các “bank thanh ghi “ cho phép “ chuyển hướng” chương trìnhnhanh và hiệu quả ( từng phần riêng rẽ của phần mềm sẽ có một bộ thanh ghi riêngkhông phụ thuộc vào các phần khác)

4 Các thanh ghi chức năng đặc biệt :

Các thanh ghi nội của AT89C51 được truy xuất ngầm định bởi một bộ lệnh Ví dụlệnh “INC A” sẽ tăng nội dung của thanh tích luỹ A lên 1 Tác động này được ngầmđịnh trong mã lệnh

Các thanh ghi trong AT89C51 được định dạng như một phần của RAM trên chip

Vì vậy mỗi thanh ghi sẽ có một địa chỉ (ngoại trừ thanh ghi điểm chương trình và thanhghi lệnh vì các thanh ghi này hiếm khi bị tác động trực tiếp , nên không có lợi lộc gìkhi đặt chúng vào trong RAM trên chip) Đó là lý do để AT89C51 có nhiều thanh ghinhư vậy Cũng như R0 đến R7 , có 21 thanh ghi chức năng đặc biệt (SFR : SpecialFunction Register) ở vùng trên của RAM nội , từ địa chỉ 80H đến FFH Hầu hết 128địa chỉ từ 80H đến FFH không được định nghĩa Chỉ có 21 địa chỉ SFR là được địnhnghĩa

Ngoại trừ tích luỹ (A) có thể được truy xuất ngầm như đã nói, đa số các SFR đượctruy xuất dùng địa chỉ trực tiếp Chú ý rằng một vài SFR có thể được địa chỉ hoá bằngbit hoặc byte Người thiết kế phải thận trọng khi truy xuất bit và byte Ví dụ lệnh sau

sẽ set bit 0 trong thanh ghi tích luỹ , các bit khác không thay đổi Ta thấy rằng E0Hđồng thời là địa chỉ byte của cả thanh ghi tích luỹ và là địa chỉ bit của bit có trọng sốnhỏ nhất trong thanh ghi tích luỹ Vì lệnh SETB chỉ tác động trên bit , nên chỉ có địachỉ bit là có hiệu quả

a Thanh ghi B :

Thanh ghi B ở địa chỉ F0H được dùng cùng với thanh ghi tích luỹ Acho các phép toán nhân và chia Lệnh MUL AB sẽ nhân các giá trị không dấu 8 bittrong A và B rồi trả về kết quả 16 bit trong A (byte thấp ) và B (byte cao ) Lệnh DIV

AB sẽ chia A cho B rồi trả về kết quả nguyên trong A và phần dư trong B Thanh ghi Bcũng có thể được xem như thanh ghi đệm đa dụng Nó được địa chỉ hoá từng bit bằngcác địa chỉ bit F0H đến F7H

b Từø trạng thái chương trình :

Từ trạng thái chương trình (PSW : Program Status Word) ở địa chỉ D0H chứa cácbit trạng thái như bảng tóm tắt sau :

Trang 15

PSW.4 RS1 D4H Bit 1 chọn bank thanh ghi

sẽ trả về thanh ghi tích luỹ kết quả 00H và set cờ nhớ trong PSW

Cờ nhớ cũng có thể xem như một thanh ghi 1 bit cho các lệnh luận lý thi hànhtrên bit Ví dụ , lệnh sau sẽ AND bit 25H với cờ nhớ và đặt kết quả trở vào cờ nhớ :

ANL C, 25H

 Cờ nhớ phụ :

Khi cộng các số BCD, cờ nhớ phụ (AC) được set nếu kết quả của 4 bit thấp trongkhoảng 0AH đến 0FH Nếu các giá trị được cộng là số BCD , thì sau lệnh cộng cần có

DA A(hiệu chỉnh thập phân thanh ghi tích luỹ ) để mang kết quả lớn hơn 9 trở về tầmtừ 0 -> 9

 Cờ 0 :

Cờ 0 (F0) là một bit cờ đa dụng dành cho các ứng dụng của người dùng

 Các bit chọn bank thanh ghi :

Các bit chọn bank thanh ghi (RS0 và RS1) xác định bank thanh ghi được tích cực Chúng được được xoá sau khi reset hệ thống và được thay đổi bằng phần mềm nếucần Ví dụ , ba lệnh sau cho phép bank thanh ghi 3 và di chuyển nội dung của thanhghi R7 (địa chỉ byte 1FH ) đến thanh ghi tích luỹ :

Khi chương trình được hợp dịch , các địa chỉ bit đúng được thay thế cho các ký hiệu

“RS1” và “RS0” Vậy , lệnh SETB RS1 sẽ giống như lệnh SETB 0D4H

 Cờ tràn :

Cờ tràn (OV)được set sau một lệnh cộng hoặc trừ nếu có một phép toán bị tràn Khi các số có dấu được cộng hoặc trừ với nhau , phần mềm có thể kiểm tra bit này đểxác định xem kết quả có nằm trong tầm xác định không Khi các số không dấu được

Trang 16

cộng , bit OV có thể được bỏ qua Các kết quả lớn hơn +127 hoặc nhở hơn –128 sẽ setbit OV Ví dụ , phép cộng sau bị tràn và bit OV được set :

Kết quả là một số có dấu 8EH được xen như –116 , không phải là kết quả đúng (142) ,

vì vậy , bit OV được set

c Con trỏ ngăn xếp :

Con trỏ ngăn xếp (SP) là một thanh ghi 8 bit ở địa chỉ 81 H Nó chứa địa chỉ củabyte dữ liệu hiện hành trên đỉnh của ngăn xếp Các lệnh trên ngăn xếp bao gồm cácthao tác cất dữ liệu vào ngăn xếp và lấy dữ liệu ra khỏi ngăn xếp Lệnh cất dữ liệuvào ngăn xếp sẽ làm tăng SP trước khi ghi dữ liệu và lệnh lấy dữ liệu ra khỏi ngăn xếpsẽ đọc dữ liệu và giảm SP Ngăn xếp của AT89C51 được giữ trong RAM nội và đượcgiới hạn các địa chỉ có thể truy xuất bằng địa chỉ gián tiếp Chúng là 128 byte đầu củaAT89C51

Để khởi động lại SP với ngăn xếp bắt đầu tại 60H , các lệnh sau đây được dùng :

Trên AT89C51 ngăn xếp bị giới hạn 32 byte vì địa chỉ cao nhất của RAM trênchip là 7FH Sở dĩ dùng giá trị 5FH vì SP sẽ tăng lên 60H trước khi cất byte dữ liệuđầu tiên

Người thiết kế có thể chọn không phải khởi động lại con trỏ ngăn xếp mà để nólấy giá trị mặc định khi reset hệ thống Giá trị mặc định đó là 07H và kết quả là ngănđầu tiên để cất dữ liệu có địa chỉ là 08H Nếu phần mềm ứng dụng không khởi độnglại SP , bank thanh ghi 1 ( có thể cả 2 và 3 ) sẽ không dùng được vì vùng RAM này đãđược dùng làm ngăn xếp

Ngăn xếp được truy xuất trực tiếp bằng các lệnh PUSH và POP đểû lưu trữ tạmthời và lấy lại dữ liệu, hoặc được truy xuất ngầm bằng các lệnh gọi chương trình con(ACALL và LCALL) và các lệnh trở về (RET, RETI) để cất và lấy lại bộ đếm chươngtrình

d.Con trỏ dữ liệu :

Con trỏ dữ liệu (DPTR) được dùng để truy xuất bộ nhớ ngoài là một thanh ghi 16bit ở địa chỉ 82H (DPL : byte thấp ) và 83H (DPH : byte cao) Ba lệnh sau sẽ ghi 55Hvào RAM ngoài địa chỉ 1000H :

Trang 17

thứ ba dùng địa chỉ gián tiếp để di chuyển dữõ liệu trong A (55H) đến RAM ngoài ở địachỉ được chứa trong DPTR (1000H)

e Các thanh ghi port xuất nhập :

Các Port của 8031 gồm port 0 ở địa chỉ 80H, port 1 ở địa chỉ 90H, port 2 ở địa chỉA0H và port 3 ở địa chỉ B0H Tất cả các port này có thể truy xuất từng bit nên rấtthuận tiện trong chức năng giao tiếp

f Các thanh ghi Timer:

AT89C51 có chứa hai bộ định thời/ đếm 16 bit được dùng cho việc định thời hoặcđếm sự kiện Timer 0 ở địa chỉ 8AH (TLO: byte thấp) và 8CH (THO: byte cao) Timer

1 ở địachỉ 8BH (TL1: byte thấp)và 8DH (TH1: byte cao) việc khởi động Timer đượcset bởi Timer mode (TMOD) ở địa chỉ 89 và thanh ghi điều khiển Timer (TCON) ở địachỉ 88H Chỉ có TCON được địa chỉ hóa từng bit

g Các thanh ghi port nối tiếp:

AT89C51 chứa 1 port nối tiếp dùng cho việc trao đổi thông tin với các thiết bị nốitiếp như máy tính modem hoặc giao tiếp với các IC khác (các bộ chuyển đổi A\D, cácthanh ghi dịch…) Một thanh ghi gọi là bộ đếm dữ liệu nối tiếp (SBUF) ở địa chỉ 99Hsẽ giữ cả hai dữ liệu phát và dữ liệu nhận Khi truyền dữ liệu thì ghi lên SUBF, khinhận dữ liệu thì đọc SUBF Các mode vận hành khác nhau được lập trình qua thanhghi điều khiển port nối tiếp (SCON: được địa chỉ hóa từng bit ở địa chỉ 98H)

h Các thanh ghi ngắt:

AT89C51 có cấu trúc 5 nguồn ngắt và 2 mức ưu tiên Các ngắt bị cấm sau khiReset hệ thống và sẽ được cho phép bằng việc thanh ghi cho phép ngắt (IE) ở địa chỉA8H Cả hai thanh ghi được địa chỉ hóa từng bit

i Thanh ghi điều khiển công suất:

Thanh ghi điều khiển công suất (PCON) ở địa chỉ 97H chứa nhiều bit điều khiểnchúng được tóm tắt ở bảng sau:

Không địnhù nghĩa Không địnhù nghĩa Bit cờ đa dụng 1Bit cờ đa dụng 2

Trang 18

5 Bộ nhớ ngoài :

AT89C51 có khả năng mở rộng bộ nhớ lên đến 64 kB bộ nhớ chương trình và 64

KB bộ nhớù dữ liệu bên ngoài Do đó có thể dùng ROM và RAM nếu cần Khi dùngbộ nhớ ngoài port 0 cũng là một port I/O thuần tuý Nó được kết hợp với Bus địa chỉ(A0 - A7) và Bus dữ liệu (D0 - D7) với tín hiệu ALE để chốt byte thấp của Bus địa chỉkhi bắt đầu mỗi chu kỳ nhớ Port 2 được cho phép byte cao của địa chỉ Trong nữa đầucủa mỗi chu kỳ bộ nhớ , byte thấp của địa chỉ được cấp trong port 0 và được chốt bằngxung ALE Một IC chốt 74HC373 (hoặc tương đương) sẽ giữ byte địa chỉ thấp trongphần còn lại của chu kỳ bộ nhớ Trong nữa sau của chu kỳ bộ nhớ port 0 được dùngnhư bus dữ liệu và được đọc hoặc ghi tuỳ theo lệnh

a Truy xuất bộ nhớ chương trình ngoài:

Bộ nhớ chương trình bên ngoài là một ICù ROM được cho phép bởi tín hiệu PSEN.Hình vẽ sau đây sẽ mô tả cách kết nối 1ù EPROM với AT89C51:

Một chu kỳ máy

Port 0 EA\

ALE Port 2 PSEN\

D7-D0 A7-A0 EPROM

A15-A8 OE\

D Q

74373

E

Trang 19

Giản đồ thời gian đọc bộ nhớ chương trình ngoài

Một chu kỳ máy của AT89C51 có 12 chu kỳ xung nhịp Nếu bộ dao động trênchip được lái bằng thạch anh 12 Mhz thì một chu kỳ máy kéo dài 1s Trong một chukỳ máy sẽ có 2 xung ALE và 2 byte được đọc từ bộ nhớ chương trình (nếu lệnh hiệnhành là lệnh 2 byte thì byte thứ hai được loại bỏ) Giản đồ thời gian của một lần lấylệnh được vẽ ở hình sau:

b Truy xuất bộ nhớ dữ liệu ngoài :

Bộ nhớ dữ liệu ngoài là một bộ nhớ RAM được cho phép ghi /đọc bằng các tínhiệu điều khiển WR\ và RD\ AT89C51 có một lệnh duy nhất truy xuất dữ liệu của bộnhớ dữ liệu ngoài là MOVX dùng con trỏ dữ liệu 16 bit (DPTR) hoặc R0 và R1 xemnhư thanh ghi địa chỉ

Kết nối bus địa chỉ và bus dữ liệu giữa RAM và AT89C51 cũng giống nhưEPROM và do đó cũng có thể lên đến 64 Kbyte bộ nhớ RAM Ngoài ra chân RD củaAT89C51 được nối với chân cho phép xuất (OE) của RAM và chân WR được nối vớichân ghi (WR) củaRAM

Giản đồ thời gian cho lệnh đọc bộ nhớ dữ liệu ngoài được vẽ ở hình sau đối vớilệnh MOVX A,@DPTR:

OEWE

OG

D

Trang 20

Port 2

Port 1

Giản đồ thời gian của lệnh MOVX

Giản đồ thời gian cho lệnh ghi (MOVX @DPTR,A) cũng tương tự chỉ khácđường WR sẽ thay vào đường RD và dữ liệu được xuất ra trên port 0 (RD vẫn giữ mứccao)

c Giải mã địa chỉ:

Nếu nhiều EPROM và/hoặc nhiều RAM được giao tiếp với AT89C51 thì cần cómạch giải mã địa chỉ Mạch giải mã cũng tương tự như các hệ vi xử lý khác.Ví dụ ,nếu dùng nhiều EPROM và RAM 8Kbyte thì bus địa chỉ cần phải được giải mã để xácđịnh IC nhớ nào được chọn

Thường dùng IC giải mã 74HC138 với các ngõ ra được nối tới các ngõ vào chọnchip (CS) trên các IC nhớ

DP L

PC L

Mã lệnh

Dữ liệu nhập

S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6

Một chu kỳ máy Một chu kỳ máy

Trang 21

d Xếp chồng các vùng bộ nhớ và dữ liệu bên ngoài:

Vì bộ nhớ chương trình là ROM nên nảy sinh một vấn đề bất tiện khi phát triểnphần mềm cho AT89C51 là tổ chức bộ nhớ như thế nào để có thể sửa đổi chương trìnhvà có thể ghi trở lại khi nó được chứa trong bộ nhớ ROM Cách giải quyết là xếpchồng các vùng nhớ chương trình và dữ liệu Một bộ nhớ RAM có thể chứa cả chươngtrình và dữ liệu bằng cách nối đường OE của RAM với một cổng AND có hai ngõ vàoPSEN\ và RD\

Sơ đồ mạch như hình sau cho phép bộ nhớ RAM có hai chức năng vừa là bộ nhớchương trình vừa là bộ nhớ dữ liệu:

Vậy một chương trình có thể được tải vào RAM bằng cách xem nó như một bộnhớ dữ liệu và thi hành bằng cách xem nó như một bộ nhớ chương trình

6 Ngõ vào tín hiệu RESET:

AT89C51 có ngõ vào Reset RST tác động ở mức cao trong khoảng thời gian haichu kỳ xung máy, sau đó xuống mức thấp để AT89C51 bắt đầu làm việc , RST có thểkích bằng tay bằng một phím thường hở, sơ đồ mạch Reset như sau:

100k

Trang 22

Thanh ghi Nội dung

Đếm chương trình PCThanh ghi tích lũy AThanh ghi B

Thanh ghi trạng thái PSWSP

DPRTPort 0 đến port 3IP

IECác thanh ghi định thờiSCON

SBUFPCON(HMOS)PCON(CMOS)

0000H00H00H00H07H0000HFFHXXX0 0000B0XX0 0000B00H

00H00H0XXX XXXXB0XXX 0000B

Quan trọng nhất trong các thanh ghi trên là thanh ghi đếm chương trình, nó đượcđặt tại 0000H Khi Reset trở lại mức thấp, việc thi hành chương trình luôn bắt đầu ởđịa chỉ đầu tiên trong bộ nhớ chương trình: địa chỉ 0000H Nội dung của RAM trênchip không bị thay đổi bởi lệnh Reset

1 Giới thiệu :

Một định nghĩa đơn giản của timer là một chuỗi các flip-flop chia đôi tần sồ nốitiếp với nhau, chúng nhận tín hiệu vào làm nguồn xung nhịp Ngõ ra của tầng cuối làmxung nhịp cho flip - flop báo tràn của timer, mà có thể kiểm tra nó bằng phần mềmhoặc nó tạo ra interrupt (flip - flop cờ) Giá trị nhị phân trong các flip - flop của timercó thể xem như số đếm số xung nhịp (hoặc các sự kiện) từ khi khởi động timer Ví dụtimer 16 bit sẽ đếm lên từ 0000H đến FFFFH Cờ báo tràn sẽ lên 1 khi số đếm tràn từFFFFH đến 0000H

CAT89C51 có hai timer 16 bit, mỗi timer có 4 cách làm việc Người ta sử dụng

các timer để:

a Định khoảng thời gian

b Đếm sự kiện

c Tạo tốc độ baud cho port nối tiếp trong CAT89C51

Trang 23

Do timer 16 bit , nên tầng cuối hoặc thứ 16 chia tần số clock vào cho 216= 65536.Trong các ứng dụng định nghĩa khoảng thời gian, người ta sử dụng lập trình timer ởmột khoảng đều đặn và đặt cờ tràn timer Cờ được sử dụng để đồng bộ hóa chươngtrình để thực hiện một tác động như kiểm tra trạng thái của các ngõ vào hoặc gởi sựkiện ra các ngõ ra Các ứng dụng khác có thể sử dụng việc tạo xung nhịp đều đặn củatimer để đo thời gian trôi qua giữa hai sự kiện (Ví dụ: đo độ rộng xung).

Đếm sự kiện dùng để xác định số lần xảy ra của một số sự kiện Một “sự kiện”là bất cứ tác động ngoài nào có thể cung cấp một chuyển trạng thái 1 xuống 0 trên mộtchân của AT89C51.Các timer cũng có thể cung cấp xung nhịp tốc độ baud cho portnối tiếp nội của AT89C51

Truy xuất các timer của AT89C51 dùng 6 thanh ghi chức năng đặc biệt trongbảng sau:

SFR cho

2 Thanh ghi chế độ Timer (TMOD) :

Thanh ghi TMOD chứa hai nhóm 4 bit dùng để đặt chế độ làm việc cho timer 0và timer1

ở mức cao

1 = Bộ đếm sự kiện

0 = Bộ định khoảng thời gian

Các chế độ timer:

00: Chế độ 0: timer 13 bit 01: Chế độ 1: timer 16 bit 10: Chế độ 2: tự động nạp lại 8 bit 11: Chế độ 3: tách timer

Trang 24

3 GATE 0 Bit (mở) cổng của timer 0

Tóm tắt thanh ghi TMOD.

3 Thanh ghi điều khiển timer (TCON) :

Thanh ghi TCON chứa các bit trạng thái và các bit điều khiển cho timer0 vàtimer1

tràn, được xóa bởi phần mềm hoặc phầncứng khi bộ xử lí chỉ đến chương trình phụcvụ ngắt

timer để cho phần mềm chạy/ ngưng

cứng khi phát hiện một cạnh xuống ởINT1:xóa bằng phần mềm hoặc phần cứngkhi CPU chỉ đến chương trình phục vụ ngắt

phần mềm để ngắt ngoài tích cực cạnhxuống/mức thấp

Tóm tắt thanh ghi TCON.

4 Chế độ timer :

a Chế độ 0 – Chế độ TIMER 13 bit :

- Để tương thích với 8048 (có trước 8051)

TLx(5 bit)

THx(8 bit)

TFxXung nhịp timer

Cờ báo tràn

Trang 25

b Chế độ 1 – Chế độ TIMER 16 bit :

- Hoạt động như timer 16 bit đầy đủ

- Cờ báo tràn là bit TFx trong TCON có thể đọc hoặc ghi bằng phần mềm

của TLx Các thanh ghi timer (TLx/THx) có thể đọc hoặc ghi bất cứ lúc nàobằng phần mềm

c Chế độ 2 – Chế độ tự động nạp lại 8 bit:

TLx hoạt động như 1 timer 8 bit, trong đó THx vẫn giữ nguyên giá trị khi nạp.Khi số đếm tràn từ FFH đến 00H, không những cờ timer được xét mà giá trị trong THxđồng thời được nạp vào TLx, việc đếm tiếp tục từ giá trị này lên đến FFH xuống 00Hvà nạp lại v.v…Chế độ này rất thông dụng vì sự tràn timer xảy ra trong những khoảngthời gian nhất định và tuần hoàn một khi khởi động TMOD và THx

TLx(8 bit)

THx(8 bit)

TFxXung nhịp timer

Cờ báo tràn

Trang 26

d Chế độ 3 – Chế độ tách timer:

TF0 và TH0 có cờ báo tràn là TF1

- Timer 1 ngưng chế độ 3, nhưng có thể khởi động bằng cách chuyển sangchế độ khác Giới hạn duy nhất là cờ báo tràn TF1 không còn bị tác động khi timer 1 bịtràn vì nó được nối với tới TH0

- Khi timer 0 ở chế độ 3, có thể có thể cho timer 1 chạy và ngưng bắngcách chuyển nó ra ngoài và vào chế độ 3 Nó vẫn có thể được sử dụng bởi port nối tiếpnhư bộ tạo tốc độ baud hoặc nó có thể sử dụng bằng bất cứ cách nào mà không cầnngắt (vì nó không còn được nối với TF1)

5 Nguồn tạo xung nhịp :

Có hai nguồn tạo xung nhịp có thể có, được chọn bằng cách ghi vào C/T (counter/timer) trong TMOD khi khởi động timer Một nguồn tạo xung nhịp dùng cho địnhkhoảng thời gian, cái khác cho đếm sự kiện

TLx(8 bit)

THx(8 bit)

TFxXung nhịp timer

Cờ báo tràn

0: (lên) định khoảng thời gian

Trang 27

Hình : Nguồn tạo xung nhịp

 Định khoảng thời gian (interval timing):

Nếu C/T=0 hoạt động timer liên tục được chọn và timer được dùng cho việc địnhkhoảng thời gian Lúc đó, timer lấy xung nhịp từ bộ dao động trên chip Bộ chia 12được thêm vào để giảm tần số xung nhịp đến giá trị thích hợp cho các ứng dụng Nhưvậy, thạch anh 12 MHz sẽ cho tốc độ xung nhịp timer 1 MHz Báo tràn timer xảy rasau một số (cố định) xung nhịp, phụ thuộc vào giá trị ban đầu được nạp vào các thanhghi timer TLx/THx

Nếu C/T=1, timer lấy nguồn xung nhịp từ bên ngoài.Trong hầu hết các ứng dụng,nguồn bên ngoài này cung cấp cho timer một xung khi xảy ra một sự kiện – timer dùngđếm sự kiện Số sự kiện được xác định bằng phần mềm bằng cách đọc các thanh ghiTLx/THx vì giá trị 16 bit trong thanh ghi này tăng thêm một cho mỗi sự kiện

Nguồn xung nhịp ngoài có từ thay đổi chức năng của các port 3, bit 4 của port 3(P3.4) dùng làm ngõ vào tạo xung nhịp bên ngoài cho timer 0 và được gọi là “T0” VàP3.5 hay “T1” là ngõ vào tạo xung nhịp cho timer 1

Trong các ứng dụng bộ đếm, các thanh ghi Timer được tăng thêm 1 tương ứng vớichuyển từ 1 xuống 0 ở ngõ vào bên ngoài: Tx Như vậy, khi ngõ vào cao trong một chukỳ và thấp trong một chu kỳ kế thì số đếm được tăng thêm một Do đó, mất 2 chu kỳmáy (2s) để ghi nhận sự chuyển 1 sang 0, tần số ngoài tối đa là 500KHz (giả sử hoạtđộng ở 12 MHz)

6 Bắt đầu, dừng và điều khiển các Timer:

Phương pháp đơn giản nhất để bắt đầu (cho chạy) và dừng các timer là dùng cácbit điều khiển chạy: TRx trong TCON TRx bị xóa sau khi Reset hệ thống Như vậy,các timer theo mặc nhiên là bị cấm (bị dừng) TRx được đặt lên 1 bằng phần mềm đểcho các timer chạy

TRx

Xung nhịp timer

0 = lên: timer dừng

1 = xuống: timer chạy

Các thanh ghi timer

Trang 28

Hình : cho chạy và dừng các timer

Vì TRx ở trong thanh ghi TCON có địa chỉ bit, nên dễ dàng cho việc điều khiểncác timer trong chương trình

Ví dụ, cho timer 0 chạy bằng lệnh: SETB TR0

Hình sau minh họa Timer 1 hoạt động ở chế độ 1 như một timer 16 bit Cácthanh ghi timer TL1/TH1 và cờ báo tràn TF1 trong sơ đồ chỉ các khả năng có thể cócủa nguồn tạo xung nhịp và dễ cho chạy, dừng và điều khiển timer

12MHz

Hình : Timer 1 hoạt động ở chế độ 1

7 Khởi động và truy xuất các thanh ghi timer :

TMOD là thanh ghi thứ nhất được khởi động vì nó đặt chế đôï hoạt động Ví dụcác lệnh sau khởi động time1 như timer 16 bit(chế độ 1) có xung nhịp từ bộ dao độngtrên chip cho việc định khoảng thời gian:

 12

Bộ dao

động

trong

0: lên1: xuống

TL1 TH

1

TF1T1

TR1

GAT

INT1

0: lên1: xuốngC/T

Trang 29

Khi timer tràn, cần dừng timer và xóa cờ báo tràn trong phần mềm:

CLR TR1

CLR TF1

* Đọc timer đang chạy:

Trong một số ứng dụng cần đọc giá trị trong các thanh ghi timer đang chạy Vìphải đọc 2 thanh ghi timer, “sai pha” nếu byte thấp tràn vào byte cao giữa hai lần đọc.Giá trị có thể đọc được không đúng Giải pháp là đọc byte cao trước, kế đó đọc bytethấp rồi đọc byte cao một lần nữa Nếu byte cao đã thay đổi thì lặp lại các hoạt độngđọc Các lệnh dưới đây đọc các lệnh thanh ghi timer TL1/TH1 vào các thanh ghi R6/R7:

AGAIN: MOV A,TH1

MOV R6, TL1 CJNE R7, A

8 Các khoảng ngắn và các khoảng dài:

Dãy các khoảng thời gian có thể định thời là bao nhiêu? vấn đề này được khảosát với AT89C51 hoạt dộng với tần số 12 Mhz Như vậy xung nhịp của các timer cótần số là 1MHz

Khoảng thời gian ngắnnhất có thể bị giới hạn không chỉ bởi tần số xung nhịp củatimer mà còn bởi phần mềm Do ảnh hưởng của thời khoảng thời gian thực hiện mộtlệnh, lệnh ngắn nhất của C8031/8051 là một chu kỳ máy hay 1 s Sau đây là bảngtóm tắt các kỹ thuật để tạo những khoảng thời gian có chiều dài khác nhau (với giả sửxung nhịp cho C8031/8051 có tần số 12MHz)

Khoảng thời gian tối đa (s ) Kỹ thuật

 10

256

65535

Không giới hạn

lại

- Timer 16 bit cộng với cácvòng lặp phần mềm

Các kỹ thuật để lập trình các khoảng thời gian (Fosc = 12 MHz)

1 Giới thiệu :

Một interrupt (ngắt) là sự xảy ra một điều kiện – một sự kiện, mà nó gây treotạm thời chương trình trong điều kiện có được phục vụ bởi một chương trình khác

Trang 30

Chương trình giải quyết ngắt gọi là chương trình phục vụ ngắt (ISR: IterruptService Routine) hoặc bộ xử lý ngắt ISR thực thi đáp ứng ngắt và thông thường thựchiện tác vụ nhập hay xuất với một thiết bị Khi ngắt xảy ra, chương trình chính tạmthời bị treo và rẽ nhánh đến ISR: ISR thi hành và kết thúc bằng lệnh trở về ngắt.Chương trình tiếp tục thực thi tại chỗ mà nó tạm dừng Thường người ta xem chươngtrình chính thực thi ở mức nền (cơ sở) và các ISR thực thi ngắt (Interrupt Level) Người

ta dùng thuật ngữ Foreground (phía trước) (Base – Level) chỉ mức nền và Background(phía sau)(Interrupt – level) chỉ mức ngắt Hình ảnh các ngắt được mô tả trong hìnhsau:

Thực thi chương trình không có ngắt

2 Tổ chức ngắt của AT89C51 :

Thật sự tất cả có 5 nguồn ngắt ở AT89C51: 2 ngắt ngoài, 2 từ timer và một ngắtPort nối tiếp Tất cả các ngắt theo mặc nhiên đều bị cấm sau khi Reset hệ thống vàđược cho phép bằng phần mềm

Khi có 2 hoặc nhiều ngắt đồng thời, 1 ngắt xảy ra trong khi 1 ngắt khác đangđược phục vụ, có cả 2 sự tuần tự hỏi vòng và sơ đồ ưu tiên 2 mức dùng để xác địnhthực hiện ngắt Việc hỏi vòng tuần tự thì cố định nhưng ưu tiên ngắt thì có thể lập trìnhđược

3 Các ngắt của  CAT89C51 :

a Các ngắt Timer:

Các ngắt timer có địa chỉ vertor ngắt là 000BH (Timer 0) và 001BH (Timer1).Ngắt Timer xảy ra khi các thanh ghi Timer (TLX/THX) tràn và set các cờ báo tràn (TFX)lên 1

Trang 31

Chú ý rằng các cờ Timer (TFX) không bị xóa bằng phần mềm Khi cho phép ngắt,tự động bị xóa bằng phầm cứng khi CPU chuyển đến ngắt.

b Các ngắt cổng nối tiếp:

Ngắt cổng nối tiếp xảy ra khi cờ ngắt phát (TI) hoặc cờ ngắt thu (RI) được đặt lên

1 Ngắt phát xảy ra khi truyền một ký tự trước đã được ghi vào SBUF vừa hoàn tất.Ngắt thu xảy ra khi một ký tự đã được nhận xong và đang đợi trong SBUF để đượcđọc

Ngắt cổng nối tiếp hơi khác với các ngắt Timer Cờ gây ngắt cổng nối tiếp không

bị xóa bằng phần cứng khi CPU chuyển tới ngắt Nguyên do là có hai nguồn cổng ngắtnối tiếp: TI và RI Nguồn ngắt phải được xác định trong ISR và cờ tạo ngắt sẽ đượcxóa bằng phần mềm

c Các ngắt ngoài:

Các ngắt xảy ra khi có một mức thấp hoặc cạnh xuống trên chân INT0 hoặc INT1của CAT89C51 Đây là chức năng chuyển đổi của các bit Port 3: P3.2 (Chân 12) vàP3.3 (chân 13)

Các cờ tạo ngắt là các bit IE0 và IE1 trong TCON Khi quyền điều khiển đãchuyển đến ISR, cờ tạo ngắt chỉ được xóa nếu ngắt được tích cực ở cạnh xuống Nếungắt được tích cực theo mức, thì nguồn yêu cầu ngắt bên ngoài sẽ điều khiển mức củacờ thay cho phần cứng

4 Định thì interrupt :

Các interrupt được lấy mẫu & chốt ở S5P2 của mỗi chu kỳ máy Chúng được hỏivòng ở chu kỳ máy kế và nếu một điều kiện interrupt tồn tại, nó được chấp nhận nếu :

+ Không có interrupt khác có độ ưu tiên bằng hoặc cao hơn đang xảy ra

+ Chu kỳ hỏi vòng là chu kỳ cuối trong một lệnh

+ Lệnh hiện hành không là RETI (để bảo đảm là tối thiểu một lệnh thực thisau mỗi chương trình phục vụ ngắt)hoặc bất cứ truy xuất nào đến IE hoặcIP

Trong hai chu kỳ kế , bộ xử lý cất PC vào ngăn xếp và nạp vào PC địa chỉ vectorinterrupt ISR bắt đầu thực thi

Thời gian giữa 1 điều kiện ngắt xảy ra và ISR bắt đầu gọi là thời gian chờinterrupt Thời gian chờ interrupt quan trọng trong nhiều ứng dụng điều khiển Vớithạch anh 12MHz, thời gian chờ interrupt có thể ngắn là 3.25ms ở AT89C51 Hệ thống

Trang 32

AT89C51 mà sử dụng interrupt có ưu tiên cao sẽ có 1 thời gian chờ interrupt xấu nhấtlà 9.25ms (giả sử interrupt ưu tiên cao luôn được cho phép).Việc này xảy ra nếu điềukiện interrupt xảy ra vừa trước lệnh RETI của ISR mức 0 mà đi theo sau là lệnh nhân.

1 Giới thiệu :

AT89C51 có 1 port nối tiếp trong chíp có thể hoạt động ở nhiều chế độ trên mộtdãi tần số rộng Chức năng chủ yếu của port nối tiếp là thưc hiện chuyển đổi song songsang nối tiếp đối với dữ liệu xuất ,và chuyển đổi nối tiếp sang song song với dữ liệunhập

Truy xuất phần cứng đến port nối tiếp qua các chân TXD và RXD Các chân nàycó các chức năng khác với 2 bit của port 3 ,P3.1 ở chân 11(TXD ) và P3.0 ở chân 10(RXD)

Port nối tiếp cho hoạt động song công ( thu và phát đồng thời) ,và đệm lúcthu ,cho phép 1 ký tự sẽ được thu và được giữ trong khi ký tự thứ 2 được nhận

Hai thanh ghi chức năng đặc biệt cung cấp truy xuất phần mềm đến port nối tiếplà SBUF và SCON Bộ đệm port nối tiếp (SBUF) ở địa chỉ 99H thật sự là 2 bộđệm.Viết vào SBUF nạp dữ liệu sẽ được phát, và đọc SBUF truy xuất dữ liệu thuđược Đây là 2 thanh ghi riêng biệt :thanh ghi chỉ ghi để phát và thanh ghi chỉ đọc đểthu

Hình: Sơ đồ khối port nối tiếp

Thanh ghi điều khiển port nối tiếp (SCON) ở địa chỉ 98H là thanh ghi có địa chỉbit chứa các bit trạng thái và các bit điều khiển Các bit điều khiển đặt chế độ hoạt

Trang 33

động cho port nối tiếp, các bit trạng thái chỉ kết thúc phát hoặc thu ký tự Các bit trạngthái có thể được kiểm tra bằng phần mềm hoặc có thể được lập trình để tạo interrupt Tần số làm việc của port nối tiếp (tốc độ baud) có thể cố định (lấy từ dao độngtrên chip 8051) hoặc thay đổi được (timer 1 cung cấp xung nhịp tốc độ baud và phảiđược lập trình )

2 Thanh ghi điều khiển port nối tiếp :

Chế độ hoạt động của port nối tiếp được đặt bằng cách ghi vào thanh ghi chế độport nối tiếp (SCON) ở địa chỉ 98H Trước khi sử dụng port nối tiếp, phải khởi độngSCON cho đúng chế độ …

Trang 34

Bảng tóm tắt thanh ghi chế độ port nối tiếp :

SM3SM4

SM5SM6SM7

9FH9EH9DH

9CH9BH

9AH99H98H

Bit 0 của chế độ port nối tiếpBit 1 của chế độ port nối tiếpBit 2 của ché độ port nối tiếp Cho phéptruyền thông đa xử lý trong các chế độ 2 và

3 ; RI sẽ không bị tác động nếu bit thứ 9 thuđược là 0

Cho phép bộ thu, phải được đặt lên 1để thu(nhận) các ký tự

Bit 8 phát ,bit thứ 9 được phát trong chế độ

2 & 3 Được đặt / xoá bằng phần mềm.Bit 8 thu, bit thứ 9 thu được

Cờ interrupt phát Đặt lên 1 ở kết thúc phátký tự; Được xoá bằng phần mềm

Cờ interrupt thu.Đặt lên 1 khi kết thúc thuký tự, được xoá bằng phần mềm

Bảng các chế độ port nối tiếp :

SM1 SM0 Chế độ Mô tả Tốc độ baud

chia cho 64

3 Các chế độ hoạt động :

Port nối tiếp có 4 chế độ hoạt động , được chọn qua các bit SM0 & SM1 trongSCON Ba trong các chế độ cho phép truyền thông bất đồng bộ, với mỗi ký tự được thu

Trang 35

hoặc phát được đóng khung bằng 1 bit start và 1 bit stop Ở chế độ thứ tư , port nối tiếphoạt động như một thanh ghi đơn giản.

a Thanh ghi dịch 8 bit (chế độ 0) :

Dữ liệu nối tiếp vào và ra qua RXD và TXD xuất xung nhịp dịch Tám bit đượcphát hoặc thu với bit đầu tiên là LSB Tốc độ baud cố định ở 1/12 tần số dao động trênchip (chế độ này đường RXD được dùng để nhập và xuất dữ liệu, đường TXD dùnglàm xung nhịp)

Việc phát đi được khởi động bằng bất cứ lệnh nào mà ghi dữ liệu vào SBUF Dữliệu được dịch ra ngoài trên đường RXD với các xung nhịp được gởi ra đường TXD.Việc thu được khởi động khi bit cho phép bộ thu (REN ) là 1 và bit interrupt thu (RI) là

0 Cần đặt REN ở bắt đầu chương trình để khởi động port nồi tiếp, và rồi xoá RI để bắtđầu hoạt động nhập dữ liệu Khi RI bị xoá, các xung nhịp được ghi ra đường TXD, bắtđầu chu kỳ máy sau, và dữ liệu theo xung nhịp ở đường RXD Lấy xung nhịp cho dữliệu vào port nối tiếp xảy ra ở cạnh dương của TXD

Một ứng dụng của chế độ thanh ghi dịch là mở rộng khả năng xuất của 8051.ICthanh ghi dịch nối tiếp ra song song có thể được nối vào các đường TXD và RXD của

8051 để cung cấp thêm 8 đường ra

Thêm 8 ngõ ra

b UART 8 bit với tốc độ baud thay đổi được (chế độ 1) :

Ở chế độ 1, port nối tiếp của AT89C51 làm việc như 1 UART 8 bit với tốc độbaud thay đổi được Hoạt động chủ yếu của UART (bộ phát /thu bất đồng bộ vạnnăng) là chuyển đổi song song sang nối tiếp với dữ liệu xuất và chuyển đổi nối tiếp rasong song với dữ liệu nhập

Ở chế độ 1, 10 bit được phát trên TXD hoặc thu trên RXD là :1 bit start (luôn là0), 8 bit dữ liệu (LSB đầu tiên) , và 1 bit stop (luôn là 1) Với hoạt động thu (nhận), bitstop được đưa vào RB8 trong SCON Trong AT89C51, tốc độ baud được đặt bằng tốcđộ báo tràn timer 1

TXD (P3.1)RXD (P3.0)

Clock Thanh ghiDữ liệu dịch

Trang 36

Tạo xung nhịp và đồng bộ hoá các thanh ghi dịch port nối tiếp trong các chế độ1,2 và 3 được thiết lập bằng bộ đếm 4 bit chia cho 16, ngõ ra là xung nhịp tốc độ baud.Ngõ vào của counter này được chọn qua phần mềm.

Truyền dữ liệu được khởi động bằng cách ghi vào SBUF, nhưng thật sự không bắtđầu chạy cho đến khi sự thay thế kế của bộ đếm (chia cho 16) cung cấp tốc độ baudcổng nối tiếp Cờ interrupt phát/truyền (TI) được đặt lên 1 khi xuất hiện bit stop trênTXD

Việc thu dữ liệu được khởi động bằng 1 chuyển trạng thái từ 1 xuống 0 trên RXD.Bộ đếm 16 tức thời được xoá để đồng bộ số đếm với luồng bit đến

c UART 9 bit với tốc độ baud cố định (chế độ 2) :

Ở chế độ 2, 11 bit được phát hoặc thu : 1 bit start, 8 bit dữ liệu, bit dữ liệu thứ 9có thể lập trình được, và 1 bit sop Khi phát, bit thứ 9 là bất cứ gì đã được đưa vào TB8trong SCON (có thể là bit parity) Khi thu, bit thứ 9 thu được thì ở RB8 Tốc độ baud ởchế độ 2 là 1/32 hoặc 1/16 tần số dao động

d UART 9 bit với tốc độ baud thay đổi được (chế độ 3) :

Chế độ này giống chế độ 2 ngoại trừ tốc độ baud có thể lập trình được và đượccung cấp bởi timer

4 Khởi động và truy xuất các thanh ghi cổng nối tiếp :

a Cho phép thu :

Bit cho phép bộ thu (REN) trong SCON phải được đặt lên 1 bằng phần mềm đểcho phép thu các ký tự Có thể thực hiện theo cách sau :

c Thêm một bit parity :

Thường sử dụng bit dữ liệu thứ 9 để thêm parity vào ký tự Thí dụ , nếu truyềnthông cần 8 bit dữ liệu cộng thêm kiểm tra chẵn, có thể sử dụng các lệnh sau để truyền

8 bit trong thanh ghi tích luỹ với kiểm tra chẵn thêm vào bit thứ 9 :

Trang 37

MOV C,P ; Đặt bit parity chẵn vào TB8MOV TB8,C ; nó trở thành bit dữ liệu thứ 9MOV SBUF,A ; Chuyển 8 bit từ Acc vào SBUFNếâu cần parity lẻ thì ta thêm lệnh CPL C vào.

Sử dụng parity không bị giới hạn ở chế độ 2 và 3 Ở chế độ 1, 8 bit dữ liệu đượctruyền có thể bao gồm 7 bit dữ liệu cộng thêm bit parity :

CLR Acc.7 ; Bảo đảm MSB được xoá parity chẵn ở trong PMOV C,P ;

MOV Acc.7,C ; Đặt parity chẵn vào MSBMOV SBUF,A ; Gởi ký tự đi 7 bit dữ liệu cộng parity chẵn

d Các cờ interrupt :

Hai cờ interrupt thu và phát (RI và TI) trong SCON được đặt lên 1 bằng phầncứng, nhưng phải được xoá bằng phần mềm

Thường RI được đặt lên 1 khi kết thúc thu ký tự và chỉ “bộ đệm thu tràn” Nếuphần mềm muốn nhập 1 ký tự từ thiết bị được nối vào cổng nối tiếp, nó phải đợi RIđược đặt lên 1, rồi xoá RI và đọc ký tự từ SBUF :

WAIT : JNB RI,WAIT ; Kiểm tra RI cho đến khi nó = 1 CLR RI ; Xoá RI

MOV A,SBUF ; Đọc ký tự

TI được đặt lên 1 ở cuối lúc truyền (phát) ký tự và chỉ “bộ đệm phát trống” Nếuphần mềm muốn gửi 1 ký tự đến 1 thiết bị được nối vào cổng nối tiếp, nó phải kiểmtra xem cổng nối tiếp sẵn sàng chưa :

WAIT : JNB TI,WAIT ; Kiểm tra TI cho đến khi nó =1 CLR TI ; Xoá TI

MOV SBUF,A ; Gửi ký tự đi

Trang 38

5 Truyền thông đa xử lý :

Các chế độ 2 & 3 đặt biệt dùng cho truyền thông đa xử lý Trong các chế độ này,thu 9 bit dữ liệu vàbit thứ 9 ở RB8 Port có thể được lập trình để khi nhận được bit stop,interrupt cổng nối tiếp được tác động chỉ nếu RB8 =1 Đặc tính này được cho phépbằng cách đặt bit SM2 ở SCON Ứng dụng của việc này trong môi trường nối mạngdùng nhiều 8051 theo sắp xếp chủ (master)/ tớ (slave)

SM2 không có ảnh hưởng trongchế độ 0, và trong chế độ 1 có thể sử dụng nó đểkiểm tra sự hợp lệ của bit stop Khi nhận ở chế độ 1, nếu SM2 =1, interrupt thu sẽkhông được tác động trừ khi nhận được bit stop hợp lệ

6 Tốc độ baud cổng nối tiếp :

Tốc độ baud cố định ở chế độ 0 và 2.Trong chế độ 0, nó luôn là tần số dao độngtrên chip được chia cho 12 Giả sử với tần số dao động danh định là 12 MHz, thì tốc độbaud chế độ 0 là 1 MHz

Hình : Các nguồn tạo xung nhịp cổng nối tiếp

a) Chế độ 0

Chia 12

Trang 39

SMOD=0 Dao động trên chip

SMOD=1b) Chế độ 2

SMOD=0 Tràn của timer 1

SMOD=1c) Chế độ 1 và 3

Mặc nhiên sau reset hệ thống, tốc độ baud chế độ 2 là tần số dao động chia64.Tốc độ baud cũng bị ảnh hưởng bởi 1 bit trong thanh ghi điều khiển nguồn cấp ,PCON Bit 7 của PCON là bit SMOD Đặt bit SMOD lên 1 làm gấp đôi tốc độ baudtrong các chế độ 1 ,2 và 3 Vì PCON không có định địa chỉ theo bit , việc đặt bitSMOD lên 1 không bị ảnh hưởng đến các bit PCON khác thì cần tác vụ “ đọc – sửa –đổi – ghi “ Các lệnh sau đặt SMOD lên 1:

MOV A,PCON ; Lấy giá trị hiện thời của PCONSETB Acc.7 ; Đặt bit 7 (SMOD) lên 1

MOV PCON,A ; Ghi giá trị ngược về PCONCác tốc độ baud trong chế độ 1 và 3 được xác định bằng tốc độ tràn của timer 1

Vì timer hoạt động ở tần số tương đối cao, tràn được chia thêm cho 32 (hoặc 16 nếuSMOD=1) trước khi cung cấp xung nhịp tốc độ baud cho cổng nối tiếp

 Sử dụng timer 1 làm xung nhịp tốc độ baud :

Xét AT89C51, cách thông dụng để tạo tốc độ baud là khởi động TMOD cho chếđộ 8 bit tự động nạp lại (timer chế độ 2) và đặt giá trị nạp lại đúng vào TH1 để cho tốcđộ tràn đúng cho tốc độ baud TMOD được khởi động như sau :

MOV TMOD,#0010xxxxBCũng có thể đạt được các tốc độ baud thấp bằng cách sử dụng timer chế độ 1 vớiTMOD=0001xxxxB Tuy nhiên các thanh ghi TH1/TL1 phải được khởi động lại sau

Chia 64Chia 32

Xung nhịp tốc dộ baud

Chia 32Chia 16

Xung nhịp tốc độ baud

Trang 40

mỗi lần tràn Một lựa chọn khác là cấp xung nhịp cho timer 1 từ ngoài dùng T1(P3.5).Và luôn luôn tốc độ baud là tốc độ tràn của timer 1 được chia cho 32 (hoặc chia 16nếu SMOD=1).

Trong các chế độ 1 và 3 : Tốc độ baud = Tốc độ tràn của timer 1 / 32

Tổng quát thì cho phép dung sai 5% trong truyền thông bất đồng bộ (start/stop) Có thể có được tốc độ baud chính xác dùng thạch anh 11.095 MHz Bảng 6 – 3 tóm tắtcác giá trị nạp lại cho các tốc độ baud thông dụng nhất , dùng thạch anh 12MHz hoặc11.059MHz

Bảng 6-3 : Tóm tắt tốc độ baud

1001000

-7 ( F9H )-13 ( F3H )-26 ( E6H )-3 ( FDH )-3 (FDH )-12 (F4H )-24 (E8H)

89232404120219200960024001200

7%

0.16%0.16%0000

Tập lệnh của CAT89C51 gồm có 225 lệnh gồm 139 lệnh một byte, 92 lệnh bytevà 24 lệnh 3 byte

Các chế độ đánh địa chỉ : Trong tập lệnh có 8 chế độ đánh địa chỉ:

a Địa chỉ thanh ghi (Register Addressing):

C AT89C51 có bốn bank thanh ghi, mỗi bank thanh ghi có 8 thanh ghi đánh từR0 đến R7 Tại mỗi thời điểm chỉ có một bank thanh ghi được tích cực Muốn chọnbank thanh ghi nào ta chỉ cần gán các bit nhị phân thích hợp vào RSI(PSW.4) vàPRO(PSW.3) trong thanh ghi trạng thái chương trình (PSW)

Ngày đăng: 20/11/2016, 20:33

HÌNH ẢNH LIÊN QUAN

Sơ đồ khối AT89C51 - Luận Văn Số Hoá Bài Thí Nghiệm Mạch Điện (Kèm File Program)
Sơ đồ kh ối AT89C51 (Trang 7)
Hình vẽ sau đây sẽ mô tả cách kết nối 1ù EPROM với AT89C51: - Luận Văn Số Hoá Bài Thí Nghiệm Mạch Điện (Kèm File Program)
Hình v ẽ sau đây sẽ mô tả cách kết nối 1ù EPROM với AT89C51: (Trang 18)
Hình : cho chạy và dừng các timer - Luận Văn Số Hoá Bài Thí Nghiệm Mạch Điện (Kèm File Program)
nh cho chạy và dừng các timer (Trang 28)
Bảng 6-3 : Tóm tắt tốc độ baud . - Luận Văn Số Hoá Bài Thí Nghiệm Mạch Điện (Kèm File Program)
Bảng 6 3 : Tóm tắt tốc độ baud (Trang 40)
Hình : Sắp xếp chân của cổng nối tiếp ở máy tính PC. - Luận Văn Số Hoá Bài Thí Nghiệm Mạch Điện (Kèm File Program)
nh Sắp xếp chân của cổng nối tiếp ở máy tính PC (Trang 52)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w