Việc sử dụng giao diện nối tiếp mang lại nhiều ưu điểm, ngay cả với những mạchghép nối đơn giản, lý do là: Khả năng chống nhiễu của các cổng nối tiếp cao hơn so với cổng máy in Thiết
Trang 1BỘ CÔNG THƯƠNG
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP HỒ CHÍ MINH
KHOA CÔNG NGHỆ ĐIỆN TỬ
Trang 2-MỤC LỤC
Phần I: CƠ SỞ LÝ THUYẾT 2
Chương I: CỔNG COM VÀ CÁC PHƯƠNG THỨC TRUYỀN THÔNG NỐI TIẾP 3
I Cổng COM 3
II Các phương thức truyền thông nối tiếp 4
Chương II: GIỚI THIỆU VI ĐIỀU KHIỂN 8051 8
I Cấu tạo vi điều khiển 8051 8
II Tóm tắt tập lệnh của 8051 10
III Hoạt động định thời 12
IV Hoạt động của Port nối tiếp 14
V Hoạt động ngắt của 8051 16
Chương III: GIỚI THIỆU VỀ RS-232 20
I Giới thiệu chung 20
II IC MAX-232 21
Phần II: THIẾT KẾ PHẦN CỨNG VÀ GIAO DIỆN ĐIỀU KHIỂN 22
I Giới thiệu phương án thiết kế 22
II Thiết kế phần cứng 22
III Thiết kế phần mềm và giao diện điều khiển 26
Phần III: PHỤ LỤC 29
I Chương trình viết cho vi xử lý 29
II Chương trình điều khiển trên máy tính 35
Trang 3LỜI NÓI ĐẦU
Ngày nay, khi công nghiệp ngày càng phát triển thì nhu cầu điều khiển được đặtlên hàng đầu Xuất phát từ nhu cầu đó điện tử tự động hoá ra đời và nó đã được xếptrong nhóm 5 ngành khoa học công nghệ hàng đầu vì những ứng dụng rộng rãi của nó.Song song với sự ra đời của điện tử tự động hoá là sự ra đời và cải tiến không ngừngcủa máy tính Từ những chiếc máy tính đời đầu chỉ thực hiện những phép tính đơngiản ngày nay máy tính có tốc độ xử lý rất cao, nó có thể xử lý hàng tỉ phép tính phứctạp trong vòng một giây Để khai thác được những ưu điểm đó điện tử tự động hoá đã
có sự bắt tay với máy vi tính Nhờ có máy vi tính mà chúng ta có thể làm được nhiềucông việc mà không phải tốn nhiều công sức Xuất phát từ thực tế đó, bằng những kiếnthức đã được học và được đọc ở trường cùng với những kiến thức tìm tòi từ báo chí
sách vở và Internet em đã quyết định tìm hiểu về đề tài “Đóng ngắt thiết bị điện bằng
Trang 4-PHẦN I: CƠ SỞ LÝ
THUYẾT
Trang 5CHƯƠNG I: CỔNG COM VÀ CÁC PHƯƠNG THỨC
TRUYỀN THÔNG NỐI TIẾP.
I Cổng COM:
Các máy tính được sản xuất gần đây thường có hai cổng nối tiếp theo chuẩn RS-232,cổng thứ nhất với tên gọi COM1 thường được dùng cho chuột, còn cổng thứ hai COM2thường được dùng cho các mục đích ghép nối khác như modem, máy in hoặc thiết bị đolường Khi cần nhiều hơn hai cổng ta có thể lắp đặp các card mở rộng trên đó có thêm 1-2cổng RS-232 Một số hãng phần cứng giới thiệu các mô-đun vào/ra cho phép tăng thêm haicổng RS-232 hoăc nhiều hơn
Việc sử dụng giao diện nối tiếp mang lại nhiều ưu điểm, ngay cả với những mạchghép nối đơn giản, lý do là:
Khả năng chống nhiễu của các cổng nối tiếp cao hơn so với cổng máy in
Thiết bị ngoại vi có thể tháo lắp ngay cả khi máy tính đang được cấp điện
Các mạch điện đơn giản có thể nhận được điện áp nguồn nuôi qua cổng nối tiếp Thông thường thì việc sử dụng cổng nối tiếp đòi hỏi chi phí nhiều hơn vì cần có sựbiến đổi dữ liệu được truyền theo kiểu nối tiếp thành dữ liệu song song Với những bài toánghép nối không phức tạp, trong đó chỉ sử dụng một vài đường dẫn vào/ra thì ta có thể sử dụngtrực tiếp các đường dẫn phụ trợ có liên quan của giao diện Tổng cộng có đến hai đường dẫnngõ ra và bốn đường dẫn ngõ vào, có thể được trao đổi trực tiếp bằng các lệnh đơn giản
Việc trao đổi dữ liệu qua cổng nối tiếp trong các trường hợp thông thường đều quađường dẫn truyền nối tiếp TxD và đường dẫn nhận nối tiếp RxD Tất cả các đường dẫn còn lại
có chức năng phụ trợ khi thiết lập và khi điều khiển cuộc truyền dữ liệu Các đường dẫn nàygọi là các đường dẫn bắt tay bởi vì chúng được sử dụng theo phương pháp " ký nhận " giữacác thiết bị Ưu điểm đặc biệt của đường dẫn bắt tay là trạng thái của chúng có thể đặt hoặcđiều khiển trực tiếp
Đặc trưng điện áp của các đường dẫn lối vào và lối ra đã được khẳng định trong tiêuchuẩn RS-232 Trạng thái LOW tương ứng với mức điện áp +12V còn trạng thái HIGH tươngứng với điện áp -12V Tất cả các lối ra đều có đặc tính chống chập mạch và có thể cung cấpdòng điện từ 10mA đến 20mA Với các lối ra này, các LED có thể được dấu vào hoặc đượccác khoảng thời gian trễ, nghĩa là trạng thái được đọc sẽ thay đổi khi điện áp lối vào nằm ởbên ngoài vùng này
Thông thường thì giao diện nối tiếp được điều khiền bằng mức tín hiệu hai cực với độlớn bằng +12V và -12V Bởi vì các mạch lối vào thông thường trong máy tính PC nhận dạngmột mức điện áp dưới 1V như là mức LOW, nên cổng nối tiếp cũng được phép làm việc với
5
Trang 6-mức điện áp TTL ( 0V/5V) Một số máy tính PC, phần lớn là máy tính xách tay làm việc vớingưỡng chuyển mạch từ -3V đến +3V và vì thế có thể chấp nhận các tín hiệu lối vào hai cực.
Bảng dưới đây chỉ ra tất cả các đường dẫn được nối với các chân trên đầu nối 9 chân
và 25 chân (một số chân của đầu nối 25 được bỏ trống):
Chân
(25 chân) (9 chân)Chân vào/raLối Tên gọi Chức năng
1 - - FG, Frame Ground Đất vỏ máy
8 1 ⇒ DCD, Data Carrier
detect
Phát hiện tín hiệu mang dữ liệu
3 2 ⇒ RxD, Receive Data Nhận dữ liệu
2 3 ⇐ TxD, Transmit Data Truyền dữ liệu
20 4 ⇐ DTR,Data terminal
ready
Đầu cuối dữ liệu sẵn sàng; tínhhoạt động giống với RTS nhưngđược kích hoạt bởi bộ nhận khimuốn truyền dữ liệu
7 5 SG, Signal Ground Đất của tín hiệu
6 6 ⇒ DSR, Data Set
Ready
Dữ liệu sẵn sàng; tính hoạt độnggiống với CTS nhưng được kíchhoạt bởi bộ truyền khi nó sẵnsàng nhận dữ liệu
4 7 ⇐ RTS, Request to
Send
Yêu cầu gửi; bộ truyền đạtđường này lên mức hoạt độngkhi sẵn sàng truyền dư liệu
5 8 ⇒ CTS, Clear to Send Xóa để gửi; bộ nhận đặt đường
này lên mức hoạt động để thôngbáo cho bộ truyền là nó sẵn sàngnhận dữ liệu
22 9 ⇒ RI, Ring indicate Báo chuông cho biết là bộ phận
đang nhận tín hiệu rung chuông
II CÁC PHƯƠNG THỨC TRUYỀN THÔNG NỐI TIẾP:
1.Gửi dữ liệu nối tiếp:
Truyền dữ liệu đồng bộ:
Trong việc truyền dữ liệu đồng bộ, hầu hết các thiết bị sử dụng chung một nguồn phátxung clock từ các thiết bị hay nguồn bên trong Nguồn xung clock phải ổn định Mỗi bittruyền sẽ được truyền sau khi phát hiện tín hiệu xung clock truyền tới (xung cạnh lên hoặccạnh xuống) Ngõ nhận sử dụng xung nhịp truyền tới tử thiết bị khi nhận được mỗi bit truyềntới Ngõ nhận có thể chốt tín hiệu truyền tới từ xung cạnh lên hoặc cạnh xuống, hoặc chỉ ramức logic cao hay mức logic thấp Chuẩn đồng bộ sử dụng việc thay đổi của tín hiệu start vàstop trong việc truyền dữ liệu, hai tín hiệu start và stop được chỉ định bên trong chip
Bảng 1.1: Các chân và chức năng trên đầu nối 25 chân và 9 chân
Trang 7bộ không phù hợp bởi vì khi truyền tín hiệu dứơi dạng xung clock, thì tín hiệu truyền có thêmphần tín hiệu nhiễu
Truyền dữ liệu không đồng bộ:
Trong việc truyền tín hiệu không đồng bộ, sự kết nối không bao hàm nhiều xungclock, bởi vì mỗi ngừng kết nối tín hiệu đựơc cung cấp 1 xung riêng biệt Khi kết thúc phảiđược đồng ý trên tần số xung clock đó, và hầu hết xung clock phải được kết hợp với phầntrăm truyền tín hiệu Mỗi 1 byte được truyền bao gồm 1 bit Start từ xung đồng bộ Và 1 haynhiều bit Stop từ tín hiệu thông báo việc kết thúc việc truyền tín hiệu kết thúc
Truyền tín hiệu không đồng có thể sử dụng nhiều hoặc một vài chuẩn chung Có lẽphổ biến nhất là chuẩn 8-N-1, có nghĩa là khung dữ liệu được truyền đi có 8 bit dữ liệu, 1 bitstop, không kiểm tra chẵn lẻ
2 Định chuẩn dữ liệu
Dữ liệu dạng chữ:
Khi gửi chữ,chương trình sử dụng các đoạn mã để gán một giá trị số tới mỗi chữ kýtự.Có nhiều đoạn mã để chuyển đổi Một trong nhũng mã chung nhất là ASCII (AmericanStandard Code for Information Exchange), bao gồm 128 đoạn mã tương ứng với 7 bit dữliệu.Với loại 8 bit dữ liệu,có thể bit 0 hoặc là bit chẵn lẻ ANSI (American National StandardInstitute) chữ thì có 256 mã, với những đoạn mã cao hơn dành cho thể hiện nhưng ký tự đặcbiệt.Trong IBM ASCII sử dụng chung cho máy tính IBM, nhiều đoạn mã cao hơn thể hiệnnhững đường thẳng …
Chuẩn dùng 16 bit, cho phép thể hiện 65536 ký tự
7
Trang 8-Hai chuẩn ANSI/ASCII là chuẩn dùng cho Visual Basic’s MSComm control
Mã ASCII Hex:
Ở chế độ này hiển nhiên chọn việc truyền dữ liệu ở dạng chuỗi hoặc một file chứa đựngdạng chữ này Nhưng ta cũng có thể truyền dữ liệu này ở dạng nhị phân, bằng cách biển diễn
dữ liệu này ở chuẩn ASCII Hex Mỗi byte được biểu diễn bằng cách cặp với đoạn mã ASCII
và biểu diễn bằng 2 byte mã hex với 1 ký tự (như ký tự C có nhiều hơn 1 số hexa và lớn hơn 1
số hệ thống) Chuẩn này có thể được biểu diễn với nhiều giá trị sử dụng trong một mã ASCII
từ 30h→39h cho (0 tới 9) và 41h tới 46h (cho A tới F)
Để thay thế việc gửi tín hiệu 1 byte từ giá trị 0→255, việc gửi chia làm 2 lần, mỗi lần cho
1 ký tự trong giá trị mã hex biểu diễn được 1 byte Ngõ nhận của máy tính xử lý giá trị giốngnhư chữ thông thường Sau khi máy tính nhận được các giá trị, máy tính có thể xử lý hoặc sửdụng nhiều thứ ta cần, bao gồm việc chuyển đổi dữ liệu trở lại dạng nhị phân
3 Sử dụng Visual Basic trong truyền thông nối tiếp.
Để sử dụng được Visual Basic trong điều khiển nối tiếp, trước hết cần phải bổ sungthêm thành phần Microsoft Comm Control mà bình thường khi chạy phần mềm Visual Basic6.0 không có Thành phần này có biểu tượng giống như hình chiếc điện thoại bàn
Một số đặc tính cơ bản của thành phần MSComm:
Trong đó, BBBB xác định tốc độ baud, P chỉ tính kiểm tra chẵn lẻ, D là số bit dữ liệu,
và S là số các bit stop Giá trị mặc định là: “9600, N, 8, 1”, có nghĩa là tốc độ truyền là 9600bit/s, không kiểm tra chẵn lẻ, 8 bit dữ liệu, 1 bit stop
PortOpen:
Đặt và trả lại trạng thái của cổng truyền thông (đóng hoặc mở) Cú pháp câu lệnh là:
MSComm.PortOpen = True/FalseTrong đó: Thông số True là để mở cổng, còn False là để đóng cổng và xóa nội dung các
bộ đệm nhận và truyền
Input:
Trang 9Quy định số ký tự được đọc bởi đặc tính Input, cú pháp câu lệnh như sau:
Inputlen = số ký tự cần đọcNếu đặt Inputlen bằng 0 thì đặc tính Input sẽ đọc hết toàn bộ nội dung của bộ đệm nhận
MSComm.Sthreshold = số ký tự
RThreshold:
Đặt và trả lại số ký tự nhận được trước khi điều khiển truyền thông xác lập đặc tínhComEvent và phát sinh sự kiện OnComm Xác lập bằng 0 để làm mất khả năng phát sinh sựkiện OnComm khi nhận ký tự, xác lập bằng 1 để tạo ra sự kiện OnComm mỗi khi có một ký
tự được đặt vào bộ đệm nhận Cú pháp câu lệnh là:
MSComm.Rthreshold = số ký tựChương trình ví dụ:
Chương trình xuất một ký tự ra cổng COM:
Private Sub Form_Load()
MSComm1.CommPort = 1 ‘Sử dụng COM1MSComm1.Settings = "9600,n,8,1" ‘Cài đặt thông số cho cổngMSComm1.RThreshold = 1 ‘Phát sinh sự kiện OnComm khi bộ đệm
nhận được một ký tựMSComm1.SThreshold = 1 ‘Bộ đệm truyền chỉ chứa tối thiểu 1 ký tựMSComm1.InputLen = 0 ‘Cho phép đọc toàn bộ nội dung bộ đệmMSComm1.PortOpen = True ‘Mở cổng
MSComm1.Output = “A” ‘Truyền đi ký tự AEnd Sub
9
Trang 10-CHƯƠNG II: GIỚI THIỆU VI ĐIỀU KHIỂN 8051
I.CẤU TẠO VI ĐIỀU KHIỂN 8051
1.TÓM TẮT PHẨN CỨNG HỌ MCS-51 (8051)
MCS-51 là họ IC vi điều khiển do hãng INTEL sản xuất Các IC tiêu biểu cho họ là
8031, 8051, 8951… Những đặc điểm chính và nguyên tắc hoạt động của các bộ vi điều khiểnnày khác nhau không nhiều Khi đã sử dụng thành thạo một vi điều khiển thì ta có thể nhanhchóng vận dụng kinh nghiệm để làm quen và làm chủ các ứng dụng của bộ vi điều khiểnkhác Vì vậy để có những hiểu biết cụ thể về các bộ vi điều khiển cũng như để phục vụ cho đềtài này ta bắt đầu tìm hiểu một bộ vi điều khiển thông dụng nhất, đó là họ MCS-51 và nếu như
họ MCS-51 là họ điển hình thì 8051 lại chính là đại diện tiêu biểu
Các đặc điểm của 8051 được tóm tắt như sau:
4 KB ROM bên trong
128 Byte RAM nội
4 port xuất/nhập I/O 8 bit
Giao tiếp nối tiếp
64 KB vùng nhớ mã ngoài
64 KB vùng nhớ dữ liệu ngoài
Xử lý Boolean (hoạt động trên bit đơn)
210 vị trí nhớ có thể định vị bit
4µs cho hoạt động nhân hoặc chia
Loại Bộ nhớ mã trên Chip Bộ nhớ dữ liệu trên Chip Số Timer
Trang 112 Một số thanh ghi chức năng đặc biệt trong vi điều khiển 8051.
2.1 Các thanh ghi Port (Port Register):
Các port 0, port 1,port2, port 3 có địa chỉ tương ứng 80H, 90H, A0H, B0H Các Port 0,Port 1, Port 2, Port 3 không còn tác dụng xuất nhập nữa nếu bộ nhớ ngoài được dùng hoặcmột vài tính chất đặc biệt của 8051 được dùng (như Interupt, Port nối tiếp…) Do vậy chỉ còn
có tác dụng xuất nhập I/O
2.2 Các thanh ghi Timer (Timer Register):
8051 có 2 bộ định thời/đếm16 bit, được dùng cho việc định thì hoặc đêm ssự kiện.Timer 0 có bit thấp TL0 ở địa chỉ 8AH và có bit cao TH0 ở địa chỉ 8CH Timer 1 có bit thấp ởđịa chỉ 8BH và bit cao TH1 ở địa chỉ 8DH
Hoạt động định thời được cho phép bởi thanh ghi mode định thời TMOD (TimerMode Register) Ở địa chỉ 89H và thanh ghi điều khiển định thời TCON (Timer ControlRegistor) ở địa chỉ 88H chỉ có TCON có bit định vị
2.3.Các thanh ghi Port nối tiếp (Serial Port Register):
Trang 128051 chứa một Port nối tiếp trên Chip cho việc truyền thông tin với những thiết bị nốitiếp như là những thiết bị đầu cuối, modem, hoặc để giao tiếp IC khác với những bộ biến đổiA/D, những thanh ghi di chuyển, RAM…Thanh ghi đệm dữ liệu nối tiếp SBUF ở địa chỉ 99Hgiữ cả dữ liệu phát lẫn dữ liệu thu Việc ghi lên SBUF để LOAD dữ liệu cho việc truyền vàđọc SBUF để truy xuất dữ liệu cho việc nhận những mode hoạt động khác nhau được lập trìnhthông qua thanh ghi điều khiển Port nối tiếp SCON
2.4.Các thanh ghi ngắt (Interupt Register):
8051 có hai cấu trúc ngắt ưu tiên, 5 bộ nguồn Những Interupt bị mất tác dụng sau khi
hệ thống Reset (bị cấm) và sau đó được cho phép bởi việc cho phép ghi lên thanh ghi chophép ngắt IE (Interupt Enable Register) ở địa chỉ A8H Mức ưu tiên được đặt vào thanh ghi
ưu tiên ngẳt IP (Interupt Priority Level) tại địa chỉ B8H Cả 2 thanh ghi trên đều có bit địa chỉ
II TÓM TẮT TẬP LỆNH CỦA 8051
Các chương trình được cấu tạo từ nhiều lệnh, chúng được xây dựng logic, sự nối tiếp củacác lệnh được nghĩ ra một cách hiệu quả và nhanh, kết quả của chương trình thì khả quan Tập lệnh họ MCS-51 được sự kiểm tra của các mode định vị và các lệnh của chúng cócác Opcode 8 bit Điều này cung cấp khả năng 28 = 256 lệnh được thi hành và một lệnh khôngđược định nghĩa Vài lệnh có 1 hoặc 2 byte bởi dữ liệu hoặc địa chỉ thêm vào Opcode Trongtoàn bộ các lệnh có 139 lệnh 1 byte, 92 lệnh 2 byte và 24 lệnh 3 byte
MUL AB : (A) ← LOW [(A) x (B)]; có ảnh hưởng cờ OV
: (B) ← HIGH [(A) x (B)]; cờ Carry được xoá
DIV AB : (A) ← Integer result of [(A) / (B)]; cờ OV
: (B) ← Remainder of [(A) / (B)]; cờ Carry xoá
Trang 132 Các lệnh logic:
Tất cả các lệnh logic sử dụng thanh ghi A như là một trong những toán hạng thực thi mộtchu kì máy, ngoài A mất 2 chu kì máy Những hoạt động logic có thể được thực hiện trên bất
kì byte nào trong vị trí nhớ dữ liệu nội mà không thông qua thanh ghi A
Các hoạt động logic được tóm tắt như sau:
ANL <dest-byte>,<src-byte>
ORL <dest-byte><src-byte>
XRL <dest-byte>,<src-byte>
RL A : Quay thanh ghi A qua trái 1 bit
RLC A : Quay vòng thanh ghi A qua trái 1 bit có cờ Carry
RR A : Quay thanh A ghi sang phải 1 bit
RRC A : Quay thanh ghi A sang phải 1 bit có cờ nhớ
3 Các lệnh rẽ nhánh:
JC Rel : Nhảy đến “Rel” nếu cờ carry C =1
JNC Rel : Nhảy đến “Rel” nếu cờ Carry C =0
JB bit,rel : Nhảy đến “Rel” nếu (bit) =1
JNB bit,rel : Nhảy đến “rel” nếu (bit) =0
JBC bit, rel : Nhảy đến “rel” nếu (bit) =1 và xoá bit
ACALL addr 11 : Lệnh gọi tuyệt đối trong Page 2K
LCAL Addr 16 :Lệnh gọi dài chương trình con trong 64 K
RET : Kết thúc chương trình con trở về chương trình chính
RETI : Kết thúc thủ tục phục vụ ngắt quay về chương trình chính
AJMP addr11 : Nhảy tuyệt đối không điều kiện trong 2 K
LJMP addr16 : Nhảy dài không điều kiện trong 64 K
SJMP rel : Nhảy ngắn không điều kiện trong (-128÷127) byte
CJNE A, direct, rel : so sánh và nhảy đến A nếu A ≠direct
DJNE Rn,rel : Giảm Rn và nhảy nếu Rn≠0
DJNZ direct, rel : Giảm và nhảy nếu direct ≠0
4 Các lệnh dịch chuyển dữ liệu:
Các lệnh dịch chuyển dữ liệu trong những vùng nhớ nội thực thi 1 hoặc 2 chu kỳ máy.Mẫu lệnh MOV <destination>, <source> cho phép di chuyển dữ liệu bất kỳ 2 vùng nhớ nàocủa RAM nội hoặc các vùng nhớ của các thanh ghi chức năng đặc biệt mà không thông quathanh ghi A
Vùng Stack của 8051 chỉ chứa 128 byte RAM nội, nếu con trỏ Stack SP được tăng quáđịa chỉ 7FH thì các byte được PUSH vào sẽ mất đi vào các byte POP ra thì không biết rõ
13
Trang 14-Các lệnh dịch chuyển bộ nhớ nội và bộ nhớ ngoại dùng sự định vị gián tiếp Địa chỉ giántiếp có thể dùng địa chỉ 1 byte (@ Ri) hoặc địa chỉ 2 byte (@ DPTR) Tất cả các lệnh dịchchuyển hoạt động trên toàn bộ nhớ ngoài thực thi trong 2 chu kỳ máy và dùng thanh ghi Alàm toán hạng DESTINATION.
Việc đọc và ghi RAM ngoài (RD và WR) chỉ tích cực trong suốt quá trình thực thi củalệnh MOVX, còn bình thường RD và WR không tích cực (mức 1)
5.Các lệnh luận lý:
CLR C : Xoá cờ Carry xuống 0 Có ảnh hưởng cờ Carry
CLR BIT : Xoá bit xuống 0 Không ảnh hưởng cờ Carry
SET C : Set cờ Carry lên 1 Có ảnh hưởng cờ Carry
SET BIT : Set bit lên 1 Không ảnh hưởng cờ Carry
CPL C : Đảo bit cờ Carry Có ảnh hưởng cờ Carry
CPL BIT : Đảo bit Không ảnh hưởng cờ Carry
ANL C, BIT : Có ảnh hưởng cờ Carry.
ANL C, BIT : Không ảnh hưởng cờ Carry.
ORL C, BIT : Tác động cờ Carry.
ORL C, : Tác động cờ Carry
MOV C, BIT : Cờ Carry bị tác động.
MOV BIT, C : Không ảnh hưởng cờ Carry.
III HOẠT ĐỘNG ĐỊNH THỜI
Các bộ định thời được sử dụng hầu hết trong các ứng dụng hướng điều khiển và 8051 vớicác bộ định thời trên chip không phải là trường hợp ngoại lệ 8051 có hai bộ định thời 16 bit,mỗi bộ có 4 chế độ hoạt động Các bộ định thời được dùng để:
Định thời trong một khoảng thời gian
Đếm sự kiện
Tạo tốc độ baud cho port nối tiếp của chip 8051
1.Thanh ghi chế độ định thời (TMOD)
Thanh ghi TMOD (time mode register) chứa hai nhóm 4-bit dùng để thiết lập chế độhoạt động cho bộ định thời 0 và bộ định thời 1 (xem bảng 4.2 và 4.3) TMOD không đượcđịnh địa chỉ từng bit và điều này cũng không cần thiết Một cách tổng quát, TMOD được nạpmột lần bởi phần mềm ở thời điểm bắt đầu của một chương trình để khởi động chế độ hoạtđộng của bộ định thời Sau đó bộ định thời có thể được dừng, bắt đầu, v.v… bằng cách truyxuất các thanh ghi chức năng đặc biệt khác của bộ định thời
Trang 153.2 Chế độ timer 16-bit (chế độ 1)
Chế độ 1 là chế độ timer 16 bit giống như chế độ 0, ngoại trừ lúc này timer hoạt độngnhư timer 16 bit đầy đủ Xung nhịp được đưa vào thanh ghi 16 bit được kết hợp bởi THx vàTLx Khi nhận được xung nhịp thì timer đếm lên: 0000H, 0001H, 0002H, v.v… Tràn xảy rakhi có chuyển tiếp từ FFFFH sang 0000H trong số đếm và nó đặt cờ báo tràn timer lên 1.Timer tiếp tục đếm tiếp Cờ báo tràn là bit TFx trong TCON mà người ta có thể đọc hoặc ghivào bằng phần mềm
3.3 Chế độ timer 8 bit tự nạp lại trị đầu (chế độ 2)
Chế độ 2 là chế độ tự động nạp giá trị đầu Byte thấp của timer TLx làm việc như timer
8 bit trong khi đó byte cao của timer THx giữ giá trị cần nạp lại Khi bộ đếm trnf từ FFH sang00H thì không những cờ timer được đặt lên 1 mà giá trị trong THx còn được nạp vào TLx ,việc đếm tiếp tục từ giá trị này đến chuyển tiếp từ FFH sang 00H kế, và cứ tiếp tục như vậy.Chế độ này tiện lợi vì tràn timer xảy ra theo những khoảng thời gian có chu kỳ một khiTMOD và THx đã được khởi tạo trị đầu
3.4 Khởi động, dừng và điều khiển các bộ định thời:
Bit TRx trong thanh ghi TCON được điều khiển bởi phần mềm để bắt đầu hoặc kết thúccác timer Để bắt đầu các timer ta set bit TRx và để kết thúc timer ta clear TRx Ví dụ timerđược khởi động bởi lệnh SETB TR0 và được kết thúc bởi lệnh CLR TR0 (bit Gate=0) BitTRx bị xóa sau sự reset hệ thống, do đó các timer bị cấm bằng sự mặc định
15
-Bit Tên Bộ định thời Mô tả
7 GATE 1 Bit điều khiển cổng khi được set lên 1, bộ định
thời chỉ hoạt động trong khi INT ở mức cao.
4 M0 1 Bit chọn chế độ thứ hai (xem bảng 4.3)
3 GATE 0 Bit điều khiển cổng cho bộ định thời 0
2 C / T 0 Bit chọn chức năng đếm hoặc định thời cho bộ
định thời 0
Bảng 2.5: Thanh ghi chọn chế độ định thời Bảng 2.6: Các chế độ định thời
Trang 16Thêm phương pháp nữa để điều khiển timer là dùng bit Gate trong thanh ghi TMOD vàngõ nhập bên ngoài INTx Điều này được dùng để đo các độ rộng xung Giả sử xung đưa vàochân INT0 ta khởi động timer 0 cho mode 1 là mode timer 16 bit với TL0/TH0 = 0000H, Gate
=1, TR0 =1 Như vậy khi INT0 =1 thì timer “được mở cổng” và ghi giờ với tốc độ của tần số1MHz Khi INT0 xuống mức thấp thì timer “đóng cổng” và khoảng thời gian của xung tínhbằng us là sự đếm được trong thanh ghi TL0/TH0
IV HOẠT ĐỘNG CỦA PORT NỐI TIẾP 8051.
Phần cứng truy xuất tới Port nối tiếp qua các chân TxD (P3.1) và RxD (P3.0) Port nốitiếp tham dự hoạt động đầy đủ (sự phát và thu cùng lúc), và thu vào bộ đệm mà nó cho phép 1
ký tự nhận vào và được cất ở bộ đệm trong khi ký tự thứ hai được nhận vào Nếu CPU đọc ký
tự thứ nhất trước khi ký tự thứ hai được nhận vào hoàn toàn thì dữ liệu không bị mất
Hai thanh ghi chức năng đặc biệt cung cấp cho phần mềm truy xuất đến Port nối tiếp
là SBUF và SCON Sự đệm Port nối tiếp (SBUF) ở địa chỉ 99H là 2 sự đệm thật sự: Ghi lênSBUF (nạp dữ liệu phát) và đọc SBUF (truy xuất dữ liệu đã nhận) Đây là hai thanh ghi riêngbiệt và rõ rệt, và thanh ghi phát chỉ ghi còn thanh ghi thu chỉ đọc Sơ đồ khối của Port nối tiếpnhư sau:
1.Thanh ghi điều khiển Port nối tiếp SCON:
Mode hoạt động của Port nối tiếp được set bởi việc ghi lên thanh ghi mode của Port nốitiếp SCON ở địa chỉ 99H Bảng tóm tắt thanh ghi điều khiển Port nối tiếp SCON như sau:
TXD (P3.1) RXD (P3.0)
SBUF(Write – only) Shift Register
SBUF(Read – only)
8051 Internal BusBaud Rate
clock (Transmit) clock (Receive)Baud Rate
Trang 17SM0 SM1 MODE MÔ TẢ TỐC ĐỘ BAUD
0 0 0 Thanh ghi dịch Cố định (tần số dao động/12)
0 1 1 UART 8 bit Thay đổi (thiết lập bởi bộ định thời)
1 0 2 UART 9 bit Cố định (tần số dao động /12 hoặc /64)
1 1 3 UART 9 bit Thay đổi (thiết lập bởi bộ định thời)
Trước khi dùng Port nối tiếp, SCON phải được định đúng chế độ VD: Để khởi tạo Portnối tiếp chế độ 1 (SM0/SM1 = 0/1), cho phép thu (REN = 1), và set cờ ngắt của việc phát sẵnsàng hoạt động (TI = 1), ta dùng lệnh sau :
MOV SCON, #01010010H
Port nối tiếp của 8051 có 4 mode hoạt động tùy thuộc theo trạng thái của SM0/SM1
Ba trong 4 mode cho phép truyền động bộ với mỗi ký tự thu hoặc phát sẽ được bố tríbởi bit Start hoặc bit Stop
2 Khởi động và truy xuất các thanh ghi Port nối tiếp:
2.1 Cho phép thu:
Bit cho phép thu REN trong thanh ghi SCON phải được set bởi phần mềm để chophép sự thu các ký tự Điều này thường được dùng làm ở đầu chương trình khi các Port nốitiếp và các timer được khởi động
Ta có thể tác động bằng lệnh:
SETB REN hoặc:
MOV SCON, # xxx1xxxxB
2.2 Dùng timer tạo tốc độ Baud cho port nối tiếp:
Muốn tạo ra tốc độ Baud, ta khởi tạo TMOD ở chế độ tự nạp lại 8 bit (mode 2 củatimer) và đặt trước giá trị nạp lại đúng vào byte cao của thanh ghi timer 1 (TH1) để tạo ra tốc
độ tràn chính xác Có những tốc độ Baud rất chậm ta dùng chế độ 16 bit là chế độ 1 của timer,nhưng ta phải khởi tạo lại sau mỗi lần tràn cho TL1/TH1
Hoạt động khác được đếm giờ bởi việc dùng timer 1 ngoài là T1 (P3.5) Công thứcchung để xác định tốc độ Baud trong mode 1 và mode 3 là:
17
-Bit Ký hiệu Địa chỉ Mô tả hoạt động
SCON.7 SM0 9FH Bit 0 của mode Port nối tiếp
SCON.6 SM1 9EH Bit 1 của mode Port nối tiếp
SCON.5 SM2 9DH Bit 2 của mode Port nối tiếp cho phép sự truyền
của bộ xử lý đa kênh ở mode 2 và 3; RI sẽ khôngtích cực nếu bit thứ 9 đã thu vào là 0
SCON.4 REN 9CH REN = 1 sẽ cho phép thu ký tự
SCON.3 TB8 9BH Phát bit 8 Bit 9 phát trong mode 2 và 3, được set
và xóa bởi phần mềmSCON.2 RB8 9AH Thu bit 8 Bit thứ 9 nhận được
SCON.1 TI 99H Cờ ngắt phát Cờ này được set ngay khi kết thúc
việc phát một ký tự; được xóa bởi phần mềmSCON.0 RI 98H Cờ ngắt thu Cờ này được set ngay khi kết thúc
việc thu một ký tự; được xóa bởi phần mềm
Bảng2.8: Chức năng của thanh ghi SCON Bảng 2.9: Các chế độ hoạt động của port nối tiếp
Trang 18Ví dụ một hoạt động 1200 Baud đòi hỏi một tốc độ tràn là 1200/32 = 38,4 KHz Nếuthạch anh 12MHz lái dao động trên Chip, thì timer 1 được đếm giờ ở tốc độ của tần số 1MHz Bởi vì timer phải tràn ở tốc độ tần số 38,4 KHz và Timer đếm giờ ở tốc độ của tần số 1MHz, nên một sự tràn được yêu cầu với 1000/38,4 = 26,04 clock (làm tròn 26) Bởi vì cáctimer đếm lên và tràn khi có sự chuyển đổi từ FFH 00H của bộ đếm, nên 26 là giá trị cầnnạp cho TH1 (giá trị đúng là -26) Ta dùng lệnh: MOV TH1, #26
Ví dụ sau khi khởi động Port nối tiếp hoạt động giống như một UART 8 bit ở tốc độ
2400 Baud, dùng timer 1 để cung cấp tốc độ Baud:
MOV SCON, #01010010B ; Port nối tiêp mode 1MOV TMOD, #20 ; Timer 1 mode 2MOV TH1, #-13 ; Nạp vào bộ đếm tốc độ
2400BaudSETB TR1 ;Start timer 1Trong SCON có SM0/SM1 để vào mode UART 8 bit, REN = 1 cho phép Port nối tiếpthu các ký tự và TI = 1 cho phép phát ký tự đầu tiên bởi việc cho biết thanh ghi đếm rỗng.TMOD có M1/M0 = 1/0 để đặt timer 1 vào mode tự động nạp lại 8 bit Việc set bit TR1 để
mở máy chạy timer Tốc độ Baud 2400 sẽ cho ta tốc độ tràn timer 1 là 2400/32 = 76,8 KHz(ứng với thạch anh 12 MHz) sẽ cho số xung clock sau mỗi sự tràn là 1000/76,8 = 13,02 (lấytròn là 13) Vậy -13 là giá trị cần nạp vào TH1 để có tốc độ Baud là 2400 Baud
V HOẠT ĐỘNG NGẮT CỦA 8051.
Trong nhiều ứng dụng đòi hỏi ta phải dùng ngắt (Interrupt) mà không dùng timer bởi
vì nếu dùng timer ta phải mất thời gian để chờ cờ tràn timer TFx set mới xử lý tiếp chươngtrình Do đó ta không có thời gian để làm các việc khác mà ứng dụng đòi hỏi Đây là chươngtrình rất quan trọng của 8051 nói riêng và họ MSC – 51 nói chung
Ngắt là một sự cố có điều kiện mà nó gây ra sự ngưng lại tạm thời của chương trình đểphục vụ một chương trình khác Các ngắt đóng vai trò quan trọng trong việc thiết kế và hiệnthực các ứng dụng của bộ vi điều khiển các ngắt cho phép hệ thống đáp ứng một sự kiện theocách không đồng bộ và xử lý sự kiện trong khi một chương trình khác đang thực thi Một hệthống được điều khiển bởi ngắt cho ta ảo tưởng đang làm nhiều công việc đồng thời Tấtnhiên CPU không thể thực thi nhiều lệnh tại một thời điểm, nhưng nó có thể tạm thời treoviệc thực thi của chương trình chính để thực thi chương trình khác và sau đó quay lại chươngtrình chính
BAUD RATE = TIMER 1 OVERFLOW RATE ÷32
Trang 19ISR thực thi để thực hiện hoạt động và kết thúc với lệnh RETI: chương trình tiếp tục nơi mà
1 Tổ chức ngắt của 8051:
8051 cung cấp 5 nguồn ngắt, 2 ngắt ngoài, 3 ngắt timer và một ngắt Port nối tiếp tất
cả các ngắt bị mất tác dụng bởi sự mặc định sau khi reset hệ thống và được cho phép cá biệtbởi phần mềm
Trong trường hợp có hai hoặc nhiều hơn sự ngắt xảy ra đồng thời hoặc một sự ngắtđang được phục vụ mà xuất hiện một sự ngắt khác, thì sẽ có hai cách thực hiện sự ngắt là sựkiểm tra liên tiếp và sự ưu tiên cấp 2
1.1.Sự cho phép ngắt và sự cấm ngắt:
Mỗi nguồn ngắt được cho phép riêng biệt hoặc sự cấm riêng biệt qua thanh ghi chứcnăng đặc biệt có bit định vị IE (Interrupt Enable) tại địa chỉ 0A8H Cũng như sự cá biệt chophép các bit của mỗi nguồn ngắt có 1 bit cho phép (hoặc cấm) chung mà nó có được xóa đểcấm tất cả các ngắt hoặc được set để cho phép chung các ngắt
Hoạt động của từng bit trong thanh ghi cho phép ngắt IE được tóm tắt trong bảng sau:
19
-Bit Symbol Bit Address Sự mô tả (Enable=1; Disable)
IE.7 EA AFH Cho phép ngắt toàn cục
IE.6 - AEH Không định nghĩa
IE.5 ET2 ADH Cho phép ngắt timer 2 (8052)
IE.4 ES ACH Cho phép ngắt Port nối tiếp
IE.3 ET1 ABH Cho phép ngắt timer 1
IE.2 EX1 AAH Cho phép ngắt ngoài External 1
IE.1 ET0 A9H Cho phép ngắt timer 0
IE.0 EX0 A8H Cho phép ngắt ngoài External 0
* **
Timer
Thục thi chương trình có ngắt