Đề tài: Điều khiển thiết bị từ xa thông qua máy tính Trường CĐ Kỹ Thuật Cao Thắng Khoa Điện Tử – Tin

Học

GVHD: Cô BÙI THỊ KIM CHI

CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIÊT NAM Độc Lập - Tư Do - Hạnh Phúc

ĐỒ ÁN TỐT NGHIỆP
Niên khóa: 2006-2009

- GIÁO VIÊN HƯỚNG DẪN: Cô BÙI THỊ KIM CHI - GIÁO VIÊN PHẢN BIỆN: Thầy TRƯƠNG QUANG TRUNG
- HỌC SINH THỰC HIỆN: 1. Trịnh Hoàng Long 2. Trần Thanh Hiền 3. Phan Thanh Tiến Lớp: CĐĐT06 Lớp: CĐĐT06 Lớp: CĐĐT06

TÊN ĐỀ TÀI:

Hệ thống điều khiển thiết bị từ xa thông qua máy tính

NỘI DUNG YÊU CẦU CỦA ĐỀ TÀI: - Điều khiển thiết bị thông qua mạch vi xử lí giao tiếp máy tính. - Ngôn ngữ lập trình Assembler - Mở rộng thêm một số thành phần như: đo nhiệt độ, cảnh báo cháy….. - Mở rộng phần điều khiển thông qua mạng LAN hoặc Internet. Thời gian thực hiện từ ngày: Thời gian nộp đề tài ngày: 02/06/2009 11/07/2009

Nhóm: Trịnh Hoàng Long, Trần Thanh Hiền, Phan Thanh Tiến

1

Đề tài: Điều khiển thiết bị từ xa thông qua máy tính

GVHD: Cô BÙI THỊ KIM CHI

BẢN NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Họ và tên sinh viên :
1. Trịnh Hoàng Long 2. Trần Thanh Hiền 3. Phan Thanh Tiến Lớp: CĐĐT06

Ngành: Công nghệ kỹ thuật Điện tử Tên đề tài: ĐIỀU KHIỂN THIẾT BỊ TỪ XA THÔNG QUA MÁY TÍNH Nhận xét của giáo viên hướng dẫn …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… Ngày…..tháng……năm 2009 Giáo viên hướng dẫn

Nhóm: Trịnh Hoàng Long, Trần Thanh Hiền, Phan Thanh Tiến

2

Đề tài: Điều khiển thiết bị từ xa thông qua máy tính

GVHD: Cô BÙI THỊ KIM CHI

BẢN NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
Họ và tên sinh viên :
1. Trịnh Hoàng Long 2. Trần Thanh Hiền 3. Phan Thanh Tiến Lớp: CĐĐT06

Ngành: Công nghệ kỹ thuật Điện tử Tên đề tài: ĐIỀU KHIỂN THIẾT BỊ TỪ XA THÔNG QUA MÁY TÍNH Nhận xét của giáo viên phản biện …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… Ngày…..tháng……năm 2009 Giáo viên phản biện

Nhóm: Trịnh Hoàng Long, Trần Thanh Hiền, Phan Thanh Tiến

3

Phan Thanh Tiến Lớp: CĐĐT06 Ngành: Công nghệ kỹ thuật Điện tử Tên đề tài: ĐIỀU KHIỂN THIẾT BỊ TỪ XA THÔNG QUA MÁY TÍNH …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… Ngày…. Trịnh Hoàng Long 2.. Phan Thanh Tiến 4 .Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI BẢN NHẬN XÉT CỦA HỘI ĐỒNG GIÁM KHẢO Họ và tên sinh viên : 1. Trần Thanh Hiền 3.tháng…… năm 2009 Hội đồng giám khảo Nhóm: Trịnh Hoàng Long. Trần Thanh Hiền.

Đề tài: Điều khiển thiết bị từ xa thông qua máy tính

GVHD: Cô BÙI THỊ KIM CHI

Mục lục
PHẦNA: LÝTHUYẾT……………………………………………………………………..................6 Lời nói đầu…………………………………………………………………………7 CHƯƠNG I: KHẢO SÁT VI ĐIỀU KHIỂN AT89C51…………………………..8 CHƯƠNG II: KHẢO SÁT VI ĐIỀU KHIỂN PIC 16F877A……………………..18 CHƯƠNG III: CỔNG NỐI TIẾP………………………………………………….60 PHẦN B: THI CÔNG………………………………………………………………………………..62 CHƯƠNG I Mạch nguyên lý …………………………………………………….63 CHƯƠNGII Một số linh kiện …………………………………………………….68 CHƯƠNG III: Phần mềm……………………………………………………….....81 CHƯƠNG VI: Điều Khiển………………………………………………………...90 PHẦN C: TỔNG KẾT………………………………………………………………………………..96

Nhóm: Trịnh Hoàng Long, Trần Thanh Hiền, Phan Thanh Tiến

5

Đề tài: Điều khiển thiết bị từ xa thông qua máy tính

GVHD: Cô BÙI THỊ KIM CHI

PHẦN A:

LÝ THUYẾT

Nhóm: Trịnh Hoàng Long, Trần Thanh Hiền, Phan Thanh Tiến

6

Đề tài: Điều khiển thiết bị từ xa thông qua máy tính

GVHD: Cô BÙI THỊ KIM CHI

LỜI NÓI ĐẦU
Hiện nay đất nước ta đang chuyển mình theo sự phát triển chung của thế giới và khu vực Châu Á bằng nền sản xuất đa dạng và đầy tiềm năng. Nền sản xuất này không chỉ đòi hỏi một số lượng lao động khổng lồ mà còn yêu cầu về trình độ, chất lượng tay nghề, kỹ thuật lao động và thiết bị sản xuất. Trên đà phát triển đó, vấn đề tự động hoá trong quá trình sản xuất, nghiên cứu trở thành một nhu cầu cần thiết. Thoạt đầu vấn đề tự động hoá được thực hiện riêng lẻ từ cơ khí hoá đến các mạch điện tử. Ngày nay, với sự xuất hiện cuả các Chip vi xử lý và máy tính cùng với việc sử dụng rộng rãi của nó đã đẩy vấn đề tự động hoá lên một bước cao hơn và thời lượng nhanh hơn … Trong đó, việc ứng dụng Máy Vi Tính vào kỹ thuật điều khiển đã đem lại những kết quả đầy tính ưu việc. Các thiết bị, hệ thống đo lường và điều khiển ghép nối với Máy Vi Tính có độ chính xác cao, thời gian thu thập số liệu ngắn. Ngoài ra, máy tính còn có phần giao diện lên màn hình rất tiện lợi cho người sử dụng. Việc dùng máy tính để điều khiển và thông tin liên lạc với nhau thì vấn đề truyền dữ liệu rất quan trọng. Hiện nay chúng ta có thể dùng máy tính để liên lạc với nhau thông qua hệ thống mạng như: mạng cục bộ (LAN) hay mạng toàn cầu Internet. Do đó, trong phạm vi hiểu biết cuả mình, chúng em đã tìm hiểu và thực hiện đề tài: “Điều khiển thiết bị từ xa thông qua máy tính” Mặc dù em đã cố gắng rất nhiều để hoàn thành quyển luận văn này, song do giới hạn về thời gian cũng như kiến thức nên nội dung còn nhiều thiếu sót. Rất mong sự đóng góp ý kiến của quý thầy cô và các bạn sinh viên để luận văn được hoàn thiện hơn. Xin chân thành cảm ơn. Nhóm sinh viên thực hiện 1. Trịnh Hoàng Long 2. Trần Thanh Hiền 3. Phan Thanh Tiến

Nhóm: Trịnh Hoàng Long, Trần Thanh Hiền, Phan Thanh Tiến

7

210 vị trí nhớ có thể định vị bit. 4 Port xuất /nhập I/O 8 bit. Ở đây giới thiệu ICAT89C51 là một họ IC vi điều khiển do hãng Intel của Mỹ sản xuất. 128 Byte RAM nội. 4 µ s cho hoạt động nhân hoặc chia. Phan Thanh Tiến 8 . 64 KB vùng nhớ mã ngoài 64 KB vùng nhớ dữ liệu ngoại. Sơ đồ khối Nhóm: Trịnh Hoàng Long. GIỚI THIỆU CẤU TRÚC PHẦN CỨNG AT89C51: -Đặc điểm và chức năng hoạt động của các IC họ MSC-51 hoàn toàn tương tự như nhau. Các đặc điểm của AT89C51 được tóm tắt như sau :          4 KB EPROM bên trong. Giao tiếp nối tiếp. Trần Thanh Hiền.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI CHƯƠNG I: KHẢO SÁT VI ĐIỀU KHIỂN AT89C51 I. Xử lí Boolean (hoạt động trên bit đơn).

Các Port: r Port 0 : . r Port 1: . vì vậy chúng chỉ được dùng cho giao tiếp với các thiết bị bên ngoài.Port 0 là port có 2 chức năng ở các chân 32 – 39 của AT89C51. Trong các thiết kế cỡ nhỏ không dùng bộ nhớ mở rộng nó có chức năng như các đường IO. Tín hiệu đọc bộ nhớ dữ liệu ngoài. Ngõ vào của TIMER/COUNTER thứ 0.2 P3. Nhóm: Trịnh Hoàng Long. Tín hiệu ghi dữ liệu lên bộ nhớ ngoài.0.7 Tên RXT TXD INT0\ INT1\ T0 T1 WR\ RD\ Chức năng chuyển đổi Ngõ vào dữ liệu nối tiếp. nó được kết hợp giữa bus địa chỉ và bus dữ liệu.5 P3.3 P3. Phan Thanh Tiến 9 .28 được dùng như các đường xuất nhập hoặc là byte cao của bus địa chỉ đối với các thiết bị dùng bộ nhớ mở rộng. Port 1 không có chức năng khác. Các chân của port này có nhiều chức năng.0 P3. a. Trần Thanh Hiền.1 P3. Ngõ vào ngắt cứng thứ 0.Port 3 là port có tác dụng kép trên các chân 10 .ATAT89C51 có tất cả 40 chân có chức năng như các đường xuất nhập. … có thể dùng cho giao tiếp với các thiết bị ngoài nếu cần. P1.17. KHẢO SÁT SƠ ĐỒ CHÂN AT89C51. 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à thành phần của các bus dữ liệu và bus địa chỉ.1.Port 1 là port IO trên các chân 1-8. r Port 3: . Trong đó có 24 chân có tác dụng kép (có nghĩa 1 chân có 2 chức năng).4 P3. Ngõ xuất dữ liệu nối tiếp. Các chân được ký hiệu P1. Đối với các thiết kế cỡ lớn có bộ nhớ mở rộng.Port 2 là 1 port có tác dụng kép trên các chân 21 . Ngõ vào của TIMER/COUNTER thứ 1. P1. Port 2: .6 P3. các công dụng chuyển đổi có liên hệ với các đặc tính đặc biệt của AT89C51 như ở bảng sau: r Bit P3.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI II.2. Ngõ vào ngắt cứng thứ 1. CHỨC NĂNG TỪNG CHÂN: Chức năng các chân của AT89C51: .

Các Timer dùng để đếm giờ. Tín hiệu ra ALE ở chân thứ 30 dùng làm tín hiệu điều khiển để giải đa hợp các đường địa chỉ và dữ liệu khi kết nối chúng với IC chốt. do đó tầng cuối cùng là tầng thứ 16 sẽ chia tần số clock vào cho 216 = 65.Vì mỗi tầng kế tiếp chia cho 2.Tín hiệu vào EA\ ở chân 31 thường được mắc lên mức 1 hoặc mức 0. GIỚI THIỆU: . nó nhận tín hiệu vào là một nguồn xung clock. X2: . . r Ngõ tín hiệu RST (Reset) : -Ngõ vào RST ở chân 9 là ngõ vào Reset của AT89C51. Trần Thanh Hiền. mỗi Timer có 4 mode hoạt động. nên Timer n tầng phải chia tần số clock ngõ vào cho 2 n.PSEN là tín hiệu ngõ ra ở chân 29 có tác dụng cho phép đọc bộ nhớ chương trình mở rộng thường được nói đến chân 0E\ (output enable) của Eprom cho phép đọc các byte mã lệnh. AT89C51 sẽ thi hành chương trình từ bộ nhớ mở rộng. Nếu ở mức 0. 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 tín hiệu clock cho các phần khác của hệ thống. Tần số thạch anh thường sử dụng cho AT89C51 là 12Mhz. HOẠT ĐỘNG TIMER CỦA AT89C51: 1. Nếu ở mức 1. đếm các sự kiện cần thiết và sự sinh ra tốc độ của tốc độ Baud bởi sự gắn liền Port nối tiếp. . r Ngõ tín hiệu điều khiển ALE (Address Latch Enable ) : . khi sử dụng AT89C51 người thiết kế chỉ cần kết nối thêm thạch anh và các tụ như hình vẽ trong sơ đồ. Khi ngõ vào tín hiệu này đưa lên cao ít nhất là 2 chu kỳ máy.Khi AT89C51 truy xuất bộ nhớ bên ngoài. AT89C51 có 2 bộ Timer 16 bit. III. . r Ngõ tín hiệu EA\(External Access): . Chân ALE được dùng làm ngõ vào xung lập trình cho Eprom trong AT89C51. Giá trị nhị phân trong các FF của bộ Timer có thể được nghĩ như đếm xung clock hoặc các sự kiện quan trọng bởi vì Timer được khởi động.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI . xung clock được đưa vào Flip Flop thứ nhất là xung clock của Flip Flop thứ hai mà nó cũng chia tần số clock này cho 2 và cứ tiếp tục. AT89C51 thi hành chương trình từ ROM nội trong khoảng địa chỉ thấp 8 Kbyte. Các ngõ tín hiệu điều khiển: r Ngõ tín hiệu PSEN (Program store enable): .Mỗi sự định thời là một Timer 16 bit.Các Timer được ứng dụng thực tế cho các hoạt động định hướng.Bộ định thời của Timer là một chuỗi các Flip Flop được chia làm 2. Phan Thanh Tiến 10 .Bộ dao động được tích hợp bên trong AT89C51. Các mã lệnh của chương trình được đọc từ Eprom qua bus dữ liệu và được chốt vào thanh ghi lệnh bên trong AT89C51 để giải mã lệnh. r Chân 40 (Vcc) được nối lên nguồn 5V. Khi AT89C51 thi hành chương trình trong ROM nội PSEN sẽ ở mức logic 1. Chân EA\ được lấy làm chân cấp nguồn 21V khi lập trình cho Eprom trong AT89C51. port 0 có chức năng là bus địa chỉ và bus dữ liệu do đó phải tách các đường dữ liệu và địa chỉ.536. Ngõ ra của tầng cuối cùng là clock của Flip Flop tràn Timer hoặc cờ mà nó kiểm tra bởi phần mềm hoặc sinh ra ngắt. .Tín hiệu ra ở chân ALE là một xung trong khoảng thời gian port 0 đóng vai trò là địa chỉ thấp nên chốt địa chỉ hoàn toàn tự động. r Các ngõ vào bộ dao động X1. các thanh ghi bên trong được nạp những giá trị thích hợp để khởi động hệ thống.PSEN ở mức thấp trong thời gian Microcontroller AT89C51 lấy lệnh. Nhóm: Trịnh Hoàng Long. Khi cấp điện mạch tự động Reset. .

Timer chỉ làm việc khi INT1=1 Bit cho đếm sự kiện hay ghi giờ C/T = 1 : Đếm sự kiện C/T = 0 : Ghi giờ đều đặn Bit chọn mode của Timer 1 Bit chọn mode của Timer 1 Bit cổng của Timer 0 Bit chọn Counter/Timer của Timer 0 Bit chọn mode của Timer 0 Bit chọn mode của Timer 0 5 4 3 2 1 0 M1 0 0 1 1 M1 M0 GATE C/T M1 M0 M0 0 1 0 1 1 1 0 0 0 0 MODE 0 1 2 3 Hai bit M0 và M1 của TMOD để chọn mode cho Timer 0 hoặc Timer 1. Các ứng dụng khác có sử dụng việc ghi giờ đều đều của Timer để đo thời gian đã trôi qua hai trạng thái (ví dụ đo độ rộng xung). DESCRIPTION Mode Timer 13 bit (mode 8048) Mode Timer 16 bit Mode tự động nạp 8 bit Mode Timer tách ra : Timer 0 : TL0 là Timer 8 bit được điều khiển bởi các bit của Timer 0. TH0 tương tự nhưng được điều khiển bởi các bit của mode Timer 1. 8 bit của thanh ghi TMOD được tóm tắt như sau: Bit 7 6 Name GATE C/T Timer 1 1 Description Khi GATE = 1. Cờ được dùng để đồng bộ chương trình để thực hiện một hoạt động như việc đưa tới 1 tầng các ngõ vào hoặc gởi dữ liệu đếm ngõ ra.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI . tức thời gian trôi qua giữa các sự kiện. . Thanh ghi điều khiển chế độ timer TMOD (timer mode register) : .1.Trong các ứng dụng định thời.Các Timer của AT89C51 được truy xuất bởi việc dùng 6 thanh ghi chức năng đặc biệt như sau : Timer SFR Purpose Address Bit-Addressable TCON Control 88H YES TMOD Mode 89H NO TL0 Timer 0 low-byte 8AH NO TL1 Timer 1 low-byte 8BH NO TH0 Timer 0 high-byte 8CH NO TH1 Timer 1 high-byte 8DH NO 2. CÁC THANH GHI ĐIỀU KHIỂN TIMER 2.Việc đếm một sự kiện được dùng để xác định số lần xuất hiện của sự kiện đó. 1 Timer được lập trình để tràn ở một khoảng thời gian đều đặn và được set cờ tràn Timer. Timer 1 : Được ngừng lại. Nhóm: Trịnh Hoàng Long. Trần Thanh Hiền. Phan Thanh Tiến 11 .Thanh ghi mode gồm hai nhóm 4 bit là: 4 bit thấp đặt mode hoạt động cho Timer 0 và 4 bit cao đặt mode hoạt động cho Timer 1.

Một bộ chia 12 được thêm vào để giảm tần số clock đến 1 giá trị phù hợp với các ứng dụng. bởi vì giá trị 16 bit trong các thanh này tăng lên cho mỗi sự kiện. Cờ cạnh ngắt 0 ngoài Cờ kiểu ngắt 0 ngoài. Con số sự kiện được xác định trong phần mềm bởi việc đọc các thanh ghi Timer. Nhóm: Trịnh Hoàng Long.TMOD không có bit định vị.4 là ngõ nhập của xung clock bởi Timer 0 (T0) và P3. Các thanh ghi TLx và THx tăng ở tốc độ 1/12 lần tần số dao động trên Chip. Phan Thanh Tiến 12 . ♦ Sự bấm giờ bên trong (Interval Timing): . Cờ kiểu ngắt 1 ngoài được set hoặc xóa bằng phấn mềm bởi cạnh kích hoạt bởi sự ngắt ngoài. TCON. nó thường được LOAD một lần bởi phần mềm ở đầu chương trình để khởi động mode Timer. ♦ Sự đếm các sự kiện (Event Counting) : . Bit C/T trong TMOD cho phép chọn 1 trong 2 khi Timer được khởi động. Khi cạnh xuống xuất hiện trên INT1 thì IE1 được xóa bởi phần mềm hoặc phần cứng khi CPU định hướng đến thủ tục phục vụ ngắt ngoài.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI . Sự định giờ là sự đếm sự kiện.6 TCON. Nếu dùng thạch anh 12MHz thì sẽ đưa đến tốc độ clock 1MHz. được xóa bởi phần mềm hoặc bởi phần cứng khi các vectơ xử lí đến thủ tục phục vụ ngắt ISR Bit điều khiển chạy Timer 1 được set hoặc xóa bởi phần mềm để chạy hoặc ngưng chạy Timer. Thanh ghi TCON có bit định vị. Sau đó sự định giờ có thể dừng lại. .Các sự tràn Timer sinh ra sau một con số cố định của những xung clock.Nếu bit C/T = 1 thì bộ Timer được ghi giờ từ nguồn bên ngoài trong nhiều ứng dụng.Có hai nguồn xung clock có thể đếm giờ là sự định giờ bên trong và sự đếm sự kiện bên ngoài. Thanh ghi điều khiển timer TCON (timer control register): .2 TCON. nguồn bên ngoài này cung cấp 1 sự định giờ với 1 xung trên sự xảy ra của sự kiện.Thanh ghi điều khiển bao gồm các bit trạng thái và các bit điều khiển bởi Timer 0 và Timer 1. được khởi động lại như thế bởi sự truy xuất các thanh ghi chức năng đặc biệt của Timer khác.2. Cờ tràn Timer 0(hoạt động tương tự TF1) Bit điều khiển chạy Timer 0 (giống TR1) Cờ kiểu ngắt 1 ngoài. Hoạt động của từng bit được tóm tắt như sau : Bit TCON.5 là ngõ nhập của xung clock bởi Timer 1 (T1). Trần Thanh Hiền. . nó phụ thuộc vào giá trị khởi tạo được LOAD vào các thanh ghi THx và TLx.5 TCON.Nguồn xung clock bên ngoài đưa vào chân P3. Tlx/THx. 2. Các nguồn xung nhịp cho timer (clock sources): .1 TCON IT1 IE0 IT0 8AH 89H 88H 2.3 TR1 TF0 TR0 IE1 8EH 8DH 8CH 8BH TCON.3.4 TCON.7 Symbol TF1 Bit Address 8FH Description Cờ tràn Timer 1 được set bởi phần cứng ở sự tràn.Nếu bit C/T = 0 thì hoạt động của Timer liên tục được chọn vào bộ Timer được ghi giờ từ dao động trên Chip.

Bit TRx bị xóa sau sự reset hệ thống. Khi INT0 xuống thấp thì Timer “đóng cổng” và khoảng thời gian của xung tính bằng µ s là sự đếm được trong thanh ghi TL0/TH0 2.Nếu ta không khởi gán giá trị đầu cho các thanh ghi TLx/THx thì Timer sẽ bắt đầu đếm từ 0000Hlên và khi tràn từ FFFFH sang 0000H nó sẽ bắt đầu tràn TFx rồi tiếp tục đếm từ 0000H lên tiếp .5.AT89C51 có 2 Timer là Timer 0 và timer 1. Trần Thanh Hiền. . TR0 = 1. Phan Thanh Tiến 13 .Nếu ta khởi gán giá trị đầu cho TLx/THx. . GATE = 1. Để bắt đầu các Timer ta set bit TRx và để kết thúc Timer ta Clear TRx.Mode Timer TMOD là thanh ghi đầu tiên được khởi gán. Giá trị mới xuất hiện trong các thanh ghi Timer trong suốt S5P1 của chu kỳ theo sau một sự chuyển đổi. ta sẽ gọi mode Timer tự động nạp 8 bit của mode 2. được xóa. . thì Timer sẽ bắt đầu đếm từ giá trị khởi gán đó lên nhưng khi tràn từ FFFFH sang 0000H lại đếm từ 0000H lên. . Ví dụ Timer 0 được bắt đầu bởi lệnh SETB TR0 và được kết thúc bởi lệnh CLR TR0 (bit Gate= 0).Trong các ứng dụng đếm các thanh ghi Timer được tăng trong đáp ứng của sự chuyển trạng thái từ 1 sang 0 ở ngõ nhập Tx. Sau đó trong chương trình các Timer được bắt đầu. # 00001000B. CÁC CHẾ ĐỘ TIMER VÀ CỜ TRÀN (TIMER MODES AND OVERFLOW): . khi set bit TRx thì Timer sẽ bắt đầu đếm giá trị khởi gán và khi tràn từ FFH sang 00H trong TLx. . Ngõ nhập bên ngoài được thử trong suốt S5P2 của mọi chu kỳ máy: Do đó khi ngõ nhập đưa tới mức cao trong một chu kỳ và mức thấp trong một chu kỳ kế tiếp thì bộ đếm tăng lên một. kết thúc và sự điều khiển các timer (starting.4. các thanh ghi Timer được đọc và cập nhật … theo yêu cầu của từng ứng dụng cụ thể. sau mỗi tràn ta không cần khởi gán lại cho các thanh ghi Timer mà chúng vẫn đếm được lại từ giá trị ban đầu. . Điều này được dùng để đo các độ rộng xung. 3. Sau khi khởi gán giá trị đầu vào THx. Nói cách khác. Mode Timer 13 bit (MODE 0) : Nhóm: Trịnh Hoàng Long. do đó các Timer bị cấm bằng sự mặc định. Chính vì vậy ta có thể lập trình chờ sau mỗi lần tràn ta sẽ xóa cờ TFx và quay vòng lặp khởi gán cho TLx/THx để Timer luôn luôn bắt đầu đếm từ giá trị khởi gán lên theo ý ta mong muốn.Đặc biệt những sự khởi gán nhỏ hơn 256 µ s. Sau lệnh trên Timer vẫn chưa đếm giờ. Ta dùng ký hiệu TLx và Thx để chỉ 2 thanh ghi byte thấp và byte cao của Timer 0 hoặc Timer 1. cờ TFx tự động được set đồng thời giá trị khởi gán mà ta khởi gán cho Thx được nạp tự động vào TLx và Timer lại được đếm từ giá trị khởi gán này lên. Bởi vì nó chiếm 2 chu kỳ máy (2µ s) để nhận ra sự chuyển đổi từ 1 sang 0.1. Sự khởi động và truy xuất các thanh ghi timer: .Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI . nên tần số bên ngoài lớn nhất là 500KHz nếu dao động thạch anh 12 MHz.Các Timer được khởi động 1 lần ở đầu chương trình để đặt mode hoạt động cho chúng. 3.Bit TRx trong thanh ghi có bit định vị TCON được điều khiển bởi phần mềm để bắt đầu hoặc kết thúc các Timer. sự bắt đầu. 2. Giả sử xung đưa vào chân INT0 ta khởi động Timer 0 cho mode 1 là mode Timer 16 bit với TL0/TH0 = 0000H. Trong lệnh này M1 = 0. . 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.Chú ý rằng cờ tràn TFx tự động được set bởi phần cứng sau mỗi sự tràn và sẽ được xóa bởi phần mềm.Thêm phương pháp nữa để điều khiển các Timer là dùng bit GATE trong thanh ghi TMOD và ngõ nhập bên ngoài INTx. GATE = 0 để cho phép ghi giờ bên trong đồng thời xóa các bit mode của Timer 0. Ví dụ khởi động cho Timer 1 hoạt động ở mode 1 (mode Timer 16bit) và được ghi giờ bằng dao động trên Chip ta dùng lệnh : MOV TMOD. M0 = 1 để vào mode 1 và C/T = 0. nó chỉ bắt đầu đếm giờ khi set bit điều khiển chạy TR1 của nó. . bởi vì đặt mode hoạt động cho các Timer. stopping and controlling the timer) : .

Chức năng chủ yếu là thực hiện 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 sang song song với dữ liệu nhập.Cờ tràn là bit TFx trong thanh ghi TCON mà nó sẽ được đọc hoặc ghi bởi phần mềm. Bit LSB đổi trạng thái ở tần số clock vào được chia 216 = 65. Khi xung clock được nhận vào. . . Phan Thanh Tiến 14 . 3.Timer 1 bị dừng lại ở mode 3. Chỉ có nhược điểm là cờ tràn TF1 của Timer 1 không bị ảnh hưởng bởi các sự tràn của Timer 1 bởi vì TF1 được nối với TH0. Nếu CPU đọc ký tự thứ nhất trước khi ký tự thứ hai được thu đầy đủ thì dữ liệu sẽ không bị mất. .Bit có trọng số lớn nhất (MSB) của giá trị trong thanh ghi Timer là bit 7 của THx và bit có trọng số thấp nhất (LSB) là bit 0 của TLx. bộ đếm Timer tăng lên 0000H. 0001H. 3 bit cao của TLx không dùng. xung clock được dùng với sự kết hợp các thanh ghi cao và thấp (TLx. Bộ đệm port nối tiếp (SBUF) ở điạ chỉ 99H nhận dữ liệu để thu hoặc phát. Thanh ghi điều khiển port nối tiếp (SCON) ở điạ chỉ 98H là thanh ghi có điạ chỉ bit chứa các bit trạng thái và các bit điều khiển. sau đó Timer đếm tiếp.Mode 3 cung cấp 1 Timer ngoại 8 bit là Timer thứ ba của AT89C51. và một sự tràn sẽ xuất hiện khi có sự chuyển trên bộ đếm Timer từ FFFH sang 0000H và sẽ set cờ tràn Time. .2.Timer 0 ở mode 3 được chia là 2 timer 8 bit. 0002H. . Các bit Nhóm: Trịnh Hoàng Long.Mode 0 là mode Timer 13 bit. 3. HOẠT ĐỘNG PORT NỐI TIẾP 1. TL0 và TH0 hoạt động như những Timer riêng lẻ với sự tràn sẽ set các bit TL0 và TF1 tương ứng. Khi bộ đếm tràn từ FFH sang 00H. THx). hoặc nó có thể dùng trong hướng nào đó mà không sử dụng Interrupt. không chỉ cờ tràn được set mà giá trị trong THx cũng được nạp vào TLx : Bộ đếm được tiếp tục từ giá trị này lên đến sự chuyển trạng thái từ FFH sang 00H kế tiếp và cứ thế tiếp tục. Giới thiệu AT89C51 có một port nối tiếp trong chip có thể hoạt động ở nhiều chế độ trên một dãy tần số rộng. Port nối tiếp cho hoạt động song công (full duplex: thu và phát đồng thời) và đệm thu (receiver buffering) cho phép một ký tự sẽ được thu và được giữ trong khi ký tự thứ hai được nhận.3.Mode 3 là mode Timer tách ra và là sự khác biệt cho mỗi Timer.Các thanh ghi Timer TLx và Thx có thể được đọc hoặc ghi tại bất kỳ thời điểm nào bởi phần mềm. . Mode tự động nạp 8 bit (MODE 2) : -Mode 2 là mode tự động nạp 8 bit. 3. Mode này thì phù hợp bởi vì các sự tràn xuất hiện cụ thể mà mỗi lúc nghỉ thanh ghi TMOD và THx được khởi động. tương tự như mode 0 ngoại trừ Timer này hoạt động như một Timer đầy đủ 16 bit. Timer có thể hoạt động hoặc tắt bởi sự ngắt nó ra ngoài và vào trong mode của chính nó hoặc có thể được dùng bởi Port nối tiếp như là một máy phát tốc độ Baud. trong đó byte cao của Timer (Thx) được đặt thấp và 5 bit trọng số thấp nhất của byte thấp Timer (TLx) đặt cao để hợp thành Timer 13 bit. Khi vào Timer 0 ở mode 3.Mode 1 là mode Timer 16 bit. Trần Thanh Hiền.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI . IV. nhưng có thể được khởi động bởi việc ngắt nó vào một trong các mode khác. byte thấp TLx của Timer hoạt động như một Timer 8 bit trong khi byte cao THx của Timer giữ giá trị Reload.4 Mode Timer tách ra (MODE 3) . Mode Timer 16 bit (MODE 1) : .536. …. Hai thanh ghi chức năng đặc biệt cho phép phần mềm truy xuất đến port nối tiếp là: SBUF và SCON.

Việc phát đi được khởi động bằng bất cứ lệnh nào ghi dữ liệu vào SBUF. đưa port nối tiếp vào chế độ thanh ghi dịch 8bit. Dữ liệu nối tiếp vào và ra qua RXD và TXD xuất xung nhịp dịch. được xóa bằng phần mềm Cờ ngắt thu. B it 8 thu. cho phép bộ thu (REN=1) và cờ ngắt phát (TP=1) để bộ phát sẳn sàng hoạt động.5 SCON. Phan Thanh Tiến 15 . Trần Thanh Hiền.2 SCON.3 SCON. Đặt lên 1 khi kết thúc thu ký tự. Ví dụ. 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 các ký tự Bit 8 phát.0) với các xung nhịp được gửi ra đường TXD (P3. Nhóm: Trịnh Hoàng Long.1.7 SCON. bit thứ 9 thu được Cờ ngắt phát. #01010010B Khởi động port nối tiếp cho chế độ 1 (SM0/SM1=0/1).1). Các bit trạng thái có thể được kiểm tra bằng phần mềm hoặc có thể lập trình để tạo ngắt. 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 . tín hiệu xung nhập xuống thấp ở S3P1 và trở về cao ở S6P1.0 Ký hiệu SM0 SM1 SM3 REN TB8 RB8 TI RI Địa chỉ 9FH 9EH 9DH 9CH 9BH 9AH 99H 98H Mô tả Bit 0 của chế độ port nối tiếp Bit 1 của chế độ port nối tiếp Bit 2 của chế độ port nối tiếp .1 SCON. 8 bit được phát hoặc thu với bit đầu tiên là LSB. phải khởi động SCON cho đúng chế độ.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI điều khiển đặt chế độ hoạt động cho port nối tiếp. Cho phép truyền thông xử lý trong các chế độ 2 và 3. được đặt và xóa bằng phần mềm.Sau đây các bản tóm tắt thanh ghi SCON và các chế độ của port nối tiếp: Bit SCON. bit thứ 9 được phát trong chế độ 2 và 3.6 SCON. 2. Chế độ 0 (Thanh ghi dịch đơn 8 bit): Chế độ 0 được chọn bằng các thanh ghi các bit 0 vào SM1 và SM2 của SCON.4 SCON. Tốc độ baud cố định ở 1/12 tần số dao động trên chip. được xóa bằng phần mềm Tóm tắt thanh ghi chế độ port nối tiếp SM0 SM1 Chế độ 0 0 0 0 1 1 1 0 2 1 1 3 Mô tả Thanh ghi dịch UART 8 bit UART 9 bit UART 9 bit Tốc độ baud Cố định (Fosc /12 ) Thay đổi ( đặt bằng timer ) Cố định (Fosc /12 hoặc Fosc/64 ) Thay đổi ( đặt bằng timer ) Các chế độ port nối tiếp Trước khi sử dụng port nối tiếp. Các thanh ghi và các chế độ hoạt động của port nối tiếp: 2. Đặt lên 1 khi kết thúc phát ký tự.2. lệnh sau: MOV SCON. Mỗi bit phát đi hợp lệ (trên RXD) trong một chu kỳ máy. Dữ liệu dịch ra ngoài trên đường RXD (P3. và các bit trạng thái Báo cáo kết thúc việc phát hoặc thu ký tự .

Khởi động và truy xuất các thanh ghi cổng nối tiếp: ♦ Cho Phép Thu Bit cho phép bộ thu (REN=Receiver Enable) Trong SCON phải được đặt lên 1bằng phần mềm để cho phép thu các ký tự thông thường thực hiện việc này ở đầu chương trình khi khởi động cổng nối tiếp.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI Việc thu được khởi động khi cho phép bộ thu (REN) là 1 và bit ngắt thu (RI) là 0. Lệnh: SETB REN .3. Đôi khi xen thêm bit kiểm tra chẵn lẻ giữa bit dữ liệu cuối cùng và bit stop. Tạo xung nhịp và đồng bộ hóa các thanh ghi dịch của port nối tiếp trong các chế độ 1. Những bit đó là: 1 bit start (luôn luôn là 0). timer … Có thể thực hiện việc này theo hai cách. cổng nối tiếp làm việc ở chế độ 2.4. bắt đầu chu kỳ máy kế tiếp và dữ liệu theo xung nhịp ở đường RXD. Quy tắc tổng quát là đặt REN khi bắt đầu chương trình để khởi động port nối tiếp. Phan Thanh Tiến 16 . 2. 2. các xung nhịp được đưa ra đường TXD. 2. bit stop được đưa vào RB8 trong SCON. ngõ ra là xung nhịp tốc độ baud. Tốc độ baud ở chế độ 2 là 1/32 hoặc 1/16 tần số dao động trên chip.Khi thu bit thứ 9 thu được sẽ ở trong RB8. rồi xoá RI để bắt đầu nhận dữ liệu. Khi phát bit thứ 9 là bất cứ gì đã được đưa vào TB8 trong SCON (có thể là bit Parity) . Một UART (Bộ thu phát đồng bộ vạn năng) là một dụng cụ thu phát dữ liệu nối tiếp với mỗi ký tự dữ liệu đi trước là bit start ở mức thấp và theo sau bit stop ở mức cao. Ngõ vào của bộ đếm này được chọn qua phần mềm Tốc độ baud ÷ 16 Xung nhịp tốc độ baud Thanh ghi dịch port nối tiếp 2. đặt REN lên 1 Hoặc lệnh Nhóm: Trịnh Hoàng Long. Trong AT89C51 chế độ baud được đặt bằng tốc độ báo tràn của timer 1.2 và 3 được thiết lập bằng bộ đếm 4 bit chia cho 16. 8 bit dữ liệu (LSB đầu tiên) và 1 bit stop (luôn luôn là 1). 3 rất giống nhau.6. 10 bit được phát trên TXD hoặc thu trên RXD. Lấy xung nhịp cho dữ liệu vào port nối tiếp xảy ra ở cạnh đường của TXD.5. UART 9 bit với tốc độ baud cố định (chế độ 2): Khi SM1=1 và SM0=0. Trần Thanh Hiền. UART 9 bit với tốc độ baud thay đổi được (chế độ 3): Chế độ này giống như ở chế độ 2 ngoại trừ tốc độ baud có thể lập trình được và được cung cấp bởi Timer. Hoạt động chủ yếu của UART là chuyển đổi song song sang nối tiếp với dữ liệu nhập. Cái khác biệt là ở tốc độ baud (cố định trong chế độ 2. Chế độ 1 (UART 8 bit với tốc độ baud thay đổi được): Ở chế độ 1. Với hoạt động thu. như một UART 9bit có tốc độ baud cố định. 2. thay đổi trong chế độ 1 và 3) và ở số bit data (8 bit trong chế độ 1. 8 bit data.9 trong chế độ 2 và 3).Thật ra các chế độ 1. Ở chế độ 1. 1 bit data thứ 9 có thể được lập trình và 1 bit stop. Khi RI bị xoá. 11 bit sẽ được phát hoặc thu:1bit start. port nối tiếp của AT89C51 làm việc như một UART 8 bit với tốc độ baud thay đổi được.

2. Trong chế độ 2. Trần Thanh Hiền. tốc độ baud cũng bị ảnh hưởng bởi 1 bit trong thanh ghi điều khiển nguồn cung cấp (PCON) bit 7 của PCON là bit SMOD. ♦Các cờ ngắt: Hai cờ ngắt thu và phát (RI và TI) trong SCON đóng một vai trò quan trọng trong truyền thông nối tiếp dùng AT89C51/8051. 1.8 Sự định địa chỉ phụ lục (Index Addressing): . Bit dữ liệu thứ 9 thu được đặt ở RB8. nên để đặt bit SMOD lên 1 cần phải theo các lệnh sau: MOV A. nhưng phải được xoá bằng phần mềm. Trong chế độ 0 nó luôn luôn là tần số dao động trên chip được chia cho 12.#XXX1XXXXB .Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI MOV SCON. Như đã nhận xét ở chương trước. tốc độ baud cố định ở các chế độ 0 và 2.Sự định địa chỉ phụ lục dùng một thanh ghi cơ bản (cũng như bộ đếm chương trình hoặc bộ đếm dữ liệu) và Offset (thanh ghi A) trong sự hình thành 1 địa chỉ liên quan bởi lệnh JMP hoặc MOVC. Phan Thanh Tiến 17 . đặt REN lên 1 hoặc xoá các bit khác trên SCON khi cần (các X phải là 0 hoặc 1 để đặt chế độ làm việc) ♦Bit dữ liệu thứ 9: Bit dữ liệu thứ 9 cần phát trong các chế độ 2 và 3 phải được nạp vào trong TB8 bằng phần mềm. đặt bit SMOD lên 1 MOV PCON. Đặt bit SMOD lên 1 làm gấp đôi tốc độ baud trong các chế độ 1.7 . Addr 7 ÷ Addr 0 . tốc độ baud chế độ 2 là tần số bộ dao động chia cho 64. tốc độ baud có thể bị gấp đôi từ giá trị mặc nhiên của 1/64 tần số dao động (SMOD=0) đến 1/32 tần số dao động (SMOD=1) Vì PCON không được định địa chỉ theo bit. Sự phụ thuộc vào vị trí sẽ bất lợi bởi chương trình không thể thực thi tại địa chỉ khác. Tốc độ baud port nối tiếp Như đã nói. bit P trong từ trạng thái chương trình (PSW) được đặt lên 1 hoặc bị xoá bởi chu kỳ máy để thiết lập kiểm tra chẳn với 8 bit trong thanh tích lũy. lấy giá trị hiện thời của PCON SETB ACC. 2 và 3. nhược điểm là các lệnh đó dài 3 byte và vị trí lệ thuộc. Nhóm: Trịnh Hoàng Long.7. Thông thường thạch anh ấn định tần số dao động trên chip nhưng cũng có thể sử dụng nguồn xung nhịp khác. Phần mềm có thể cần hoặc không cần bit dữ liệu thứ 9. Cả hai bit được đặt lên 1 bằng phần cứng. Vì timer hoạt động ở tần số tương đối cao.Ưu điểm của sự định dài là vùng nhớ mã 64K có thể được dùng hết. tràn timer được chia thêm cho 32 (hoặc 16 nếu SMOD =1 ) trước khi cung cấp tốc độ xung nhịp cho port nối tiếp. phụ thuộc vào đặc tính kỹ thuật của thiết bị nối tiếp sử dụng (bit dữ liệu thứ 9 cũng đóng vai trò quan trọng trong truyền thông đa xử lý ) ♦Thêm 1 bit parity: Thường sử dụng bit dữ liệu thứ 9 để thêm parity vào ký tự.PCON . Mặc nhiên sau khi reset hệ thống.A . ghi giá trị ngược về PCON Các tốc độ baud trong các chế độ 1 và 3 được xác định bằng tốc độ tràn của timer 1.

2 TẠI SAO LÀ PIC MÀ KHÔNG LÀ CÁC HỌ VI ĐIỀU KHIỂN KHÁC? Hiện nay trên thị trường có rất nhiều họ vi điều khiển như 8051. Phan Thanh Tiến 18 . 2. Motorola 68HC. dễ dàng tìm được sự chỉ dẫn khi gặp khó khăn.1: Kiến trúc Havard và kiến trúc Von-Neuman Tổ chức phần cứng của PIC được thiết kế theo kiến trúc Havard. Điểm khác biệt giữa kiến trúc Havard và kiến trúc Von-Neuman là cấu trúc bộ nhớ dữ liệu và bộ nhớ chương trình. Họ vi điều khiển này có thể tìm mua dễ dàng tại thị trường Việt Nam. có thể tạm dịch là “máy tính thông minh khả trình” do hãng Genenral Instrument đặt tên cho vi điều khiển đầu tiên của họ: PIC1650 được thiết kế để dùng làm các thiết bị ngoại vi cho vi điều khiển CP1600. họ vi điều khiển này được sử dụng khá rộng rãi. Trần Thanh Hiền. học tập. Hình 1.1 PIC LÀ GÌ ? PIC là viết tắt của “Programable Intelligent Computer”. và các tính năng này không ngừng được phát triển. Ngoài họ 8051 được hướng dẫn một cách căn bản ở môi trường đại học. Nhóm: Trịnh Hoàng Long. Giá thành không quá đắt. Có đầy đủ các tính năng của một vi điều khiển khi hoạt động độc lập. Số lượng người sử dụng họ vi điều khiển PIC. số lượng các ứng dụng mở đã được phát triển thành công.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI CHƯƠNG II: KHẢO SÁT VI ĐIỀU KHIỂN PIC 16F877A 1.… Sự hỗ trợ của nhà sản xuất về trình biên dịch.… Các tính năng đa dạng của vi điều khiển PIC. các công cụ lập trình.. ARM.. AVR.3 KIẾN TRÚC PIC Cấu trúc phần cứng của một vi điều khiển được thiết kế theo hai dạng kiến trúc: kiến trúc Von Neuman và kiến trúc Havard. 3. 4. bản thân người viết đã chọn họ vi điều khiển PIC để mở rộng vốn kiến thức và phát triển các ứng dụng trên công cụ này vì các nguyên nhân sau: 1. 1. dễ dàng trao đổi. Hiện nay tại Việt Nam cũng như trên thế giới. Điều này tạo nhiều thuận lợi trong quá trình tìm hiểu và phát triển các ứng dụng như: số lượng tài liệu. 1. nạp chương trình từ đơn giản đến phức tạp.. Vi điều khiển này sau đó được nghiên cứu phát triển thêm và từ đó hình thành nên dòng vi điều khiển PIC ngày nay. Là một sự bổ sung rất tốt về kiến thức cũng như về ứng dụng cho họ vi điều khiển mang tính truyền thống: họ vi điều khiển 8051.

như vậy tốc độ xử lí của vi điều khiển được cải thiện đáng kể. Ví dụ. bus chương trình và bus dữ liệu. độ dài lệnh luôn là bội số của 1 byte (do dữ liệu được tổ chức thành từng byte). instruction @ address SUB_1 Ở đây ta chỉ bàn đến qui trình vi điều khiển xử lí đoạn chương trình trên thông qua từng chu kì lệnh. Như vậy có thể nói kiến trúc Von-Neuman không thích hợp với cấu trúc của một vi điều khiển. Đặc điểm này được minh họa cụ thể trong hình 1. Nhóm: Trịnh Hoàng Long. lệnh gọi chương trình con … cần hai chu kì xung đồng hồ). Trần Thanh Hiền.4 RISC và CISC Như đã trình bày ở trên.2: Cơ chế pipelining(hinh) TCY0: đọc lệnh 1 TCY1: thực thi lệnh 1. BSF PORTA. vì với cấu trúc đó. Ví dụ ta sử dụng oscillator có tần số 4 MHZ. Do đó trong cùng một thời điểm CPU có thể tương tác với cả hai bộ nhớ.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI Đối với kiến trúc Von-Neuman. Phan Thanh Tiến 19 . đối với vi điều khiển dòng 16F.BIT3 5. CPU có thể cùng một lúc truy xuất cả bộ nhớ chương trình và bộ nhớ dữ liệu. đọc lệnh 3 TCY3: thực thi lệnh 3. Qua việc tách rời bộ nhớ chương trình và bộ nhớ dữ liệu. Giả sử ta có một đoạn chương trình như sau: 1. kiến trúc Havard là khái niệm mới hơn so với kiến trúc Von-Neuman. còn đối với kiến trúc Von-Neuman.5 PIPELINING Đây chính là cơ chế xử lí lệnh của các vi điều khiển PIC. ngắn hơn. 1. bộ nhớ dữ liệu và bộ nhớ chương trình tách ra thành hai bộ nhớ riêng biệt. MOVLW 55h 2. Vi điều khiển được tổ chức theo kiến trúc Havard còn được gọi là vi điều khiển RISC (Reduced Instruction Set Computer) hay vi điều khiển có tập lệnh rút gọn. CALL SUB_1 4. độ dài lệnh luôn là 14 bit (trong khi dữ liệu được tổ chức thành từng byte). MOVWF PORTB 3. Một chu kì lệnh của vi điều khiển sẽ bao gồm 4 xung clock. trong cùng một thời điểm CPU chỉ có thể tương tác với bộ nhớ dữ liệu hoặc bộ nhớ chương trình. Đối với kiến trúc Havard.đơn giản hơn để đáp ứng yêu cầu mã hóa lệnh bằng một số lượng bit nhất định. Khái niệm này được hình thành nhằm cải tiến tốc độ thực thi của một vi điều khiển. Tuy nhiên điều này chỉ có ý nghĩa khi tốc độ xử lí của CPU phải rất cao. bộ nhớ dữ liệu và bộ nhớ chương trình nằm chung trong một bộ nhớ. Và để tiếp tục cải tiến tốc độ thực thi lệnh. tập lệnh của họ vi điều khiển PIC được thiết kế sao cho chiều dài mã lệnh luôn cố định (ví dụ đối với họ 16Fxxxx chiều dài mã lệnh luôn là 14 bit) và cho phép thực thi lệnh trong một chu kì của xung clock ( ngoại trừ một số trường hợp đặc biệt như lệnh nhảy. do đó ta có thể tổ chức. cân đối một cách linh hoạt bộ nhớ chương trình và bộ nhớ dữ liệu. đọc lệnh 2 TCY2: thực thi lệnh 2. Quá trình trên sẽ được thực thi như sau: Hình 1. Điều này có nghĩa tập lệnh của vi điều khiển thuộc cấu trúc Havard sẽ ít lệnh hơn. Đồng thời cấu trúc lệnh không còn phụ thuộc vào cấu trúc dữ liệu nữa mà có thể linh động điều chỉnh tùy theo khả năng và tốc độ của từng vi điều khiển. giúp tăng tốc độ xử lí của vi điều khiển lên gấp đôi. thì xung lệnh sẽ có tần số 1 MHz (chu kì lệnh sẽ là 1 us).1. Vi điều khiển được thiết kế theo kiến trúc Von-Neuman còn được gọi là vi điều khiển CISC (Complex Instruction Set Computer) hay vi điều khiển có tập lệnh phức tạp vì mã lệnh của nó không phải là một số cố định mà luôn là bội số của 8 bit (1 byte). Một điểm cần chú ý nữa là tập lệnh trong kiến trúc Havard có thể được tối ưu tùy theo yêu cầu kiến trúc của vi điều khiển mà không phụ thuộc vào cấu trúc dữ liệu. 1. đọc lệnh 4.

Sau khi đã xác định đúng vị trí lệnh trong thanh ghi PC. Thông thường. các chuẩn giao tiếp bên trong. đây là kí hiệu cũ Bên cạnh đó một số vi điệu khiển có kí hiệu xxFxxx là EEPROM. Có thể sử dụng các mạch nạp được cung cấp bởi nhà sản xuất là hãng Microchip như: PICSTART plus. Phan Thanh Tiến 20 . … Ngoài ra còn có một số ngôn ngữ lập trình được phát triển dành riêng cho PIC như PICBasic. Tiếp theo cần chú ý đến các khối chức năng được tích hợp sẵn trong vi điều khiển. Quá trình này được thực hiện tương tự cho các lệnh tiếp theo của chương trình. Ngoài ra mọi thông tin về cách lựa chọn vi điều khiển PIC có thể được tìm thấy trong cuốn sách “Select PIC guide” do nhà sản xuất Microchip cung cấp.8 MẠCH NẠP PIC Đây cũng là một dòng sản phẩm rất đa dạng dành cho vi điều khiển PIC. 1.… 1. Có thể dùng các sản phẩm này để nạp cho vi điều khiển khác thông qua chương trình MPLAB. Ngoài ra còn có thêm một dòng vi điều khiển PIC mới là dsPIC.6 CÁC DÒNG PIC VÀ CÁCH LỰA CHỌN VI ĐIỀU KHIỂN PIC Các kí hiệu của vi điều khiển PIC: PIC12xxxx: độ dài lệnh 12 bit PIC16xxxx: độ dài lệnh 14 bit PIC18xxxx: độ dài lệnh 16 bit C: PIC có bộ nhớ EPROM (chỉ có 16C84 là EEPROM) F: PIC có bộ nhớ flash LF: PIC có bộ nhớ flash hoạt động ở điện áp thấp LV: tương tự như LF. Sau cùng cần chú ý đến bộ nhớ chương trình mà vi điều khiển cho phép. còn PIC16F877A là flash). Với cơ chế pipelining được trình bày ở trên. Basic. mỗi lệnh chỉ cần một chu kì lệnh để thực thi xong. tuy nhiên giá thành rất cao và thường gặp rất nhiều khó khăn trong quá trình mua sản phẩm. Ngôn ngữ lập trình cấp thấp có MPLAB (được cung cấp miễn phí bởi nhà sản xuất Microchip). PRO MATE II. MPLAB ICD 2. Đối với các lệnh mà quá trình thực thi nó làm thay đổi giá trị thanh ghi PC (Program Counter) cần hai chu kì lệnh để thực thi vì phải thực hiện việc gọi lệnh ở địa chỉ thanh ghi PC chỉ tới. ngoài ra còn có các vi điều khiển 28. ta cần một chu kì lệnh để gọi lệnh đó. Nhóm: Trịnh Hoàng Long. TCY5: thực thi lệnh đầu tiên của SUB_1 và đọc lệnh tiếp theo của SUB_1. 1. nếu có thêm chữ A ở cuối là flash (ví dụ PIC16F877 là EEPROM. các ngôn ngữ lập trình cấp cao hơn bao gồm C. Dòng sản phẩm chính thống này có ưu thế là nạp được cho tất cả các vi điều khiển PIC. thậm chí có vi điều khiển chỉ có 8 chân. Cách lựa chọn một vi điều khiển PIC phù hợp: Trước hết cần chú ý đến số chân của vi điều khiển cần thiết cho ứng dụng. 44. Cần chọn vi điều khiển PIC có bộ nhớ flash để có thể nạp xóa chương trình được nhiều lần hơn. mỗi lệnh xem như chỉ được thực thi trong một chu kì lệnh. Trần Thanh Hiền. Có nhiều vi điều khiển PIC với số lượng chân khác nhau. … chân. MikroBasic. MPLAB PM 3. Như vậy có thể xem lênh 3 cần 2 chu kì xung clock để thực thi.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI TCY4: vì lệnh 4 không phải là lệnh sẽ được thực thi theo qui trình thực thi của chương trình (lệnh tiếp theo được thực thi phải là lệnh đầu tiên tại label SUB_1) nên chu kì thực thi lệnh này chỉ được dùng để đọc lệnh đầu tiên tại label SUB_1. Ở Việt Nam phổ biến nhất là các họ vi điều khiển PIC do hãng Microchip sản xuất. và một chu kì xung clock nữa để giải mã và thực thi lệnh.7 NGÔN NGỮ LẬP TRÌNH CHO PIC Ngôn ngữ lập trình cho PIC rất đa dạng. để thực thi một lệnh. Pascal. 40.

rẻ tiền. bộ postcaler.  Chuẩn giao tiếp nối tiếp USART với 9 bit địa chỉ. và mọi thông tin về sơ đồ mạch nạp.1 SƠ ĐỒ CHÂN VI ĐIỀU KHIỂN PIC16F877A 2. SPI và I2C.2 MỘT VÀI THÔNG SỐ VỀ VI ĐIỀU KHIỂN PIC16F877A Đây là vi điều khiển thuộc họ PIC16Fxxx với tập lệnh gồm 35 lệnh có độ dài 14 bit. Có thể sơ lược một số mạch nạp cho PIC như sau: JDM programmer: mạch nạp này dùng chương trình nạp Icprog cho phép nạp các vi điều khiển PIC có hỗ trợ tính năng nạp chương trình điện áp thấp ICSP (In Circuit Serial Programming). Ông còn thiết kế cả chương trình nạp.  CS ở bên ngoài. tương thích với trình biên dịch MPLAB.  Hai bộ Capture/so sánh/điều chế độ rông xung. Hầu hết các mạch nạp đều hỗ trợ tính năng nạp chương trình này. 2. Các đặc tính ngoại vi bao gồmcác khối chức năng sau:  Timer0: bộ đếm 8 bit với bộ chia tần số 8 bit. Nhóm: Trịnh Hoàng Long. Trần Thanh Hiền. WR.  Timer1: bộ đếm 16 bit với bộ chia tần số. Bộ nhớ chương trình 8Kx14 bit.  Cổng giao tiếp song song PSP (Parallel Slave Port) với các chân điều khiển RD. bên cạnh đó mỗi mạch nạp cần được sử dụng với một chương trình nạp thích hợp.  Các chuẩn giao tiếp nối tiếp SSP (Synchronous Serial Port). Các mạch nạp kể trên có ưu điểm rất lớn là đơn giản. cách thiết kế. chẳng hạn như ICprog. Số PORT I/O là 5 với 33 pin I/O.  Hai bộ so sánh. Tuy nhiên các mạch nạp trên có nhược điểm là hạn chế về số vi điều khiển được hỗ trợ. kiểm tra và chương trình nạp đều dễ dàng tìm được và download miễn phí thông qua mạng Internet. P16PRO40: mạch nạp này do Nigel thiết kế và cũng khá nổi tiếng.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI Ngoài ra do tính năng cho phép nhiều chế độ nạp khác nhau. Tốc độ hoạt động tối đa cho phép là 20 MHz với một chu kì lệnh là 200ns. Mạch nạp Universal của Williem: đây không phải là mạch nạp chuyên dụng dành cho PIC như P16PRO40.  Timer2: bộ đếm 8 bit với bộ chia tần số. hoàn toàn có thể tự lắp ráp một cách dễ dàng. còn có rất nhiều mạch nạp được thiết kế dành cho vi điều khiển PIC. Phan Thanh Tiến 21 . WARP-13A và MCP-USB: hai mạch nạp này giống với mạch nạp PICSTART PLUS do nhà sản xuất Microchip cung cấp. Mỗi lệnh đều được thực thi trong một chu kì xung clock. tuy nhiên ta cũng có thể sử dụng chương trình nạp Icprog. có thể thực hiện chức năng đếm dựa vào xung clock ngoại vi ngay khi vi điều khiển hoạt động ở chế độ sleep. nghĩa là ta có thể trực tiếp dùng chương trình MPLAB để nạp cho vi điều khiển PIC mà không cần sử dụng một chương trình nạp khác. bộ nhớ dữ liệu 368x8 byte RAM và bộ nhớ dữ liệu EEPROM với dung lượng 256x8 byte.  Các đặc tính Analog:  8 kênh chuyển đổi ADC 10 bit. thi công.

 Chức năng bảo mật mã chương trình.000 lần.  Chế độ Sleep.000.  Bộ nhớ EEPROM với khả năng ghi xóa được 1. Nạp được chương trình ngay trên mạch điện ICSP (In Circuit Serial Programming) thông qua 2 chân. Trần Thanh Hiền. Watchdog Timer với bộ dao động trong.  Có thể hoạt động với nhiều dạng Oscillator khác nhau.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI  Bên cạnh đó là một vài đặc tính khác của vi điều khiển như:  Bộ nhớ flash với khả năng ghi xóa được 100.  Dữ liệu bộ nhớ EEPROM có thể lưu trữ trên 40 năm. 2.  Khả năng tự nạp chương trình với sự điều khiển của phần mềm.3 SƠ ĐỒ KHỐI VI ĐIỀU KHIỂN PIC16F877A Nhóm: Trịnh Hoàng Long. Phan Thanh Tiến 22 .000 lần.

Đối với PIC16F877A bộ nhớ dữ liệu được chia ra làm 4 bank. Trần Thanh Hiền. bộ đếm chương trình sẽ chỉ đến địa chỉ 0000h (Reset vector). bộ đếm chương trình có dung lượng 13 bit (PC<12:0>).4 TỔ CHỨC BỘ NHỚ Cấu trúc bộ nhớ của vi điều khiển PIC16F877A bao gồm bộ nhớ chương trình (Program memory) và bộ nhớ dữ liệu (Data Memory). Mỗi bank có dung lượng 128 byte. Như vậy bộ nhớ chương trình có khả năng chứa được 8*1024 = 8192 lệnh (vì một lệnh sau khi mã hóa sẽ có dung lượng 1 word (14 bit). Bộ nhớ stack sẽ được đề cập cụ thể trong phần sau.1 BỘ NHỚ CHƯƠNG TRÌNH Bộ nhớ chương trình của vi điều khiển PIC16F877A là bộ nhớ flash. dung lượng bộ nhớ 8K word (1 word = 14 bit) và được phân thành nhiều trang (từ page0 đến page 3) . bao gồm các thanh ghi có chức năng đặc biệt SFG (Special Function Register) nằm ở các vùng địa chỉ thấp và các thanh ghi mục đích chung GPR (General Purpose Register) nằm ở vùng địa chỉ còn lại trong bank.2 BỘ NHỚ DỮ LIỆU Bộ nhớ dữ liệu của PIC là bộ nhớ EEPROM được chia ra làm nhiều bank.4. Khi có ngắt xảy ra. Bộ nhớ chương trình không bao gồm: Bộ nhớ stack và không được địa chỉ hóa bởi bộ đếm chương trình. Để mã hóa được địa chỉ của 8K word bộ nhớ chương trình.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI 2. bộ đếm chương trình sẽ chỉ đến địa chỉ 0004h (Interrupt vector). Khi vi điều khiển được reset.4. 2. Các thanh ghi SFR thường xuyên được sử dụng (ví dụ như thanh ghi STATUS) sẽ được đặt ở tất cà các bank của bộ nhớ dữ liệu giúp thuận tiện trong quá trình truy xuất và làm giảm bớt lệnh của chương trình. Phan Thanh Tiến 23 . Sơ đồ cụ thể của bộ nhớ dữ liệu PIC16F877A như sau: Nhóm: Trịnh Hoàng Long. 2.

Có thể phân thanh ghi SFR làm hai lọai: thanh ghi SFR liên quan đến các chức năng bên trong (CPU) và thanh ghi SRF dùng để thiết lập và điều khiển các khối chức năng bên ngoài (ví dụ như ADC. PWM.4. trạng thái reset và các bit chọn bank cần truy xuất trong bộ nhớ dữ liệu. 103h. Các thanh ghi dùng để thiết lập và điều khiển các khối chức năng sẽ được nhắc đến khi ta đề cập đến các khối chức năng đó. 181h): thanh ghi này cho phép đọc và ghi.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI 2. Trần Thanh Hiền. cạnh tác động của ngắt ngoại vi và bộ đếm Timer0. …).1 THANH GHI CHỨC NĂNG ĐẶC BIỆT SFR Đây là các thanh ghi được sử dụng bởi CPU hoặc được dùng để thiết lập và điều khiển các khối chức năng được tích hợp bên trong vi điều khiển.2. Thanh ghi OPTION_REG (81h. Nhóm: Trịnh Hoàng Long. Phần này sẽ đề cập đến các thanh ghi liên quan đến các chức năng bên trong. Thanh ghi STATUS (03h. cho phép điều khiển chức năng pull-up của các chân trong PORTB. 83h. Phan Thanh Tiến 24 . 183h):thanh ghi chứa kết quả thực hiện phép toán của khối ALU. xác lập các tham số về xung tác động.

Thanh ghi PIE2 (8Dh): chứa các bit điều khiển các ngắt của các khối chức năng CCP2.3 STACK Stack không nằm trong bộ nhớ chương trình hay bộ nhớ dữ liệu mà là một vùng nhớ đặc biệt không cho phép đọc hay ghi. Phan Thanh Tiến 25 . 2. ngắt của bộ so sánh và ngắt ghi vào bộ nhớ EEPROM. giá trị của bộ đếm chương trình PC tự động được vi điều khiển cất vào trong stack. 18Bh):thanh ghi cho phép đọc và ghi. SSP bus. vi điều khiển sẽ thực hiện tiếp chương trình theo đúng qui trình định trước. các ngắt này được cho phép bởi các bit điều khiển chứa trong thanh ghi PIE2. người sử dụng có thể tùy theo mục đích chương trình mà có thể dùng các thanh ghi này để chứa các biến số. ngắt ngoại vi RB0/INT và ngắt interrput-on-change tại các chân của PORTB. các ngắt này được cho phép bởi các bit điều khiển chứa trong thanh ghi PIE1.10Bh. giá trị PC sẽ tự động được lấy ra từ trong stack. RETLW hat RETFIE được thực thi. Trần Thanh Hiền.2 THANH GHI MỤC ĐÍCH CHUNG GPR Các thanh ghi này có thể được truy xuất trực tiếp hoặc gián tiếp thông qua thanh ghi FSG (File Select Register). 2. 8Bh. Khi một trong các lệnh RETURN. Thanh ghi PIR2 (0Dh): chứa các cờ ngắt của các khối chức năng ngoại vi.4. Nhóm: Trịnh Hoàng Long.4. Thanh ghi PIR1 (0Ch) chứa cờ ngắt của các khối chức năng ngoại vi. chứa các bit điều khiển và các bit cờ hiệu khi timer0 bị tràn. kết quả hoặc các tham số phục vụ cho chương trình. Thanh ghi PIE1 (8Ch): chứa các bit điều khiển chi tiết các ngắt của các khối chức năng ngoại vi. Thanh ghi PCON (8Eh): chứa các cờ hiệu cho biết trạng thái các chế độ reset của vi điều khiển. Khi lệnh CALL được thực hiện hay khi một ngắt xảy ra làm chương trình bị rẽ nhánh.2.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI Thanh ghi INTCON (0Bh. hằng số. Đây là các thanh ghi dữ liệu thông thường.

bộ so sánh. Đây là các chân “hai chiều” (bidirectional pin).2 PORTB PORTB (RPB) gồm 8 pin I/O. ta “set” bit điều khiển tương ứng với chân đó trong thanh ghi TRISA và ngược lại. PORTC. Cần chú ý là không có cờ hiệu nào cho biết trạng thái stack. các thao tác với bộ nhớ stack sẽ hoàn toàn được điều khiển bởi CPU. Bên cạnh đó một số chân của PORTB còn được sử dụng trong quá trình nạp chương trình cho vi điều khiển với các chế độ nạp khác nhau. TRISA (địa chỉ 85h) : điều khiển xuất nhập. Muốn xác lập chức năng của một chân trong PORTA là input. ADCON1 (địa chỉ 9Fh) : thanh ghi điều khiển bộ ADC. Cấu trúc bên trong và chức năng cụ thể của từng chân trong PORTA sẽ được trình bày cụ thể trong Phụ lục 1. Các thanh ghi SFR liên quan đến PORTA bao gồm: PORTA (địa chỉ 05h) : chứa giá trị các pin trong PORTA. Một cổng xuất nhập của vi điều khiển bao gồm nhiều chân (I/O pin). 2. tùy theo cách bố trí và chức năng của vi điều khiển mà số lượng cổng xuất nhập và số lượng chân trong mỗi cổng có thể khác nhau. Chức năng của từng chân xuất nhập trong mỗi cổng hoàn toàn có thể được xác lập và điều khiển được thông qua các thanh ghi SFR liên quan đến chân xuất nhập đó. bao gồm PORTA. đối với PORTC là TRISC.5 CÁC CỔNG XUẤT NHẬP CỦA PIC16F877A Cổng xuất nhập (I/O port) chính là phương tiện mà vi điều khiển dùng để tương tác với thế giới bên ngoài. PORTB còn liên quan đến ngắt ngoại vi và bộ Timer0. ta “clear” bit điều khiển tương ứng với chân đó trong thanh ghi TRISA. một số chân xuất nhập còn có thêm các chức năng khác để thể hiện sự tác động của các đặc tính ngoại vi nêu trên đối với thế giới bên ngoài. nghĩa là có thể xuất và nhập được.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI Bộ nhớ Stack trong vi điều khiển PIC họ 16F87xA có khả năng chứa được 8 địa chỉ và hoạt động theo cơ chế xoay vòng. Nghĩa là giá trị cất vào bộ nhớ Stack lần thứ 9 sẽ ghi đè lên giá trị cất vào Stack lần đầu tiên và giá trị cất vào bộ nhớ Stack lần thứ 10 sẽ ghi đè lên giá tri6 cất vào Stack lần thứ 2. Phan Thanh Tiến 26 . muốn xác lập chức năng của một chân trong PORTA là output. Bên cạnh đó. 2. chức năng của vi điều khiển được thể hiện một cách rõ ràng. Nhóm: Trịnh Hoàng Long. Thanh ghi điều khiển xuất nhập tương ứng là TRISB. PORTB còn được tích hợp chức năng điện trở kéo lên được điều khiển bởi chương trình. đối với PORTB là TRISB. Trần Thanh Hiền. Chức năng I/O này được điều khiển bởi thanh ghi TRISA (địa chỉ 85h). Bên cạnh đó PORTA còn là ngõ ra của bộ ADC. Cấu trúc và chức năng của từng cổng xuất nhập sẽ được đề cập cụ thể trong phần sau. Đặc tính này sẽ được trình bày cụ thể trong phần sau. đối với PORTD là TRISD vàđối với PORTE là TRISE).5. Thao tác này hoàn toàn tương tự đối với các PORT và các thanh ghi điều khiển tương ứng TRIS (đối với PORTA là TRISA. do đó ta không biết được khi nào stack tràn. CVRCON (địa chỉ 9Dh) : thanh ghi điều khiển bộ so sánh điện áp. Cấu trúc bên trong và chức năng cụ thể của từng chân trong PORTB sẽ được trình bày cụ thể trong Phụ lục 1. CMCON (địa chỉ 9Ch) : thanh ghi điều khiển bộ so sánh. ngõ vào analog ngõ vào xung clock của Timer0 và ngõ vào của bộ giao tiếp MSSP (Master Synchronous Serial Port). do vi điều khiển được tích hợp sẵn bên trong các đặc tính giao tiếp ngoại vi nên bên cạnh chức năng là cổng xuất nhập thông thường. Sự tương tác này rất đa dạng và thông qua quá trình tương tác đó. PORTD và PORTE. Vi điều khiển PIC16F877A có 5 cổng xuất nhập.5.1 PORTA PORTA (RPA) bao gồm 6 I/O pin. 2. PORTB. Bên cạnh đó tập lệnh của vi điều khiển dòng PIC cũng không có lệnh POP hay PUSH.

thanh ghi điều khiển xuất nhập tương ứng là TRISD.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI Các thanh ghi SFR liên quan đến PORTB bao gồm: PORTB (địa chỉ 06h.5. ADCON1 : thanh ghi điều khiển khối ADC. Thanh ghi điều khiển xuất nhập tương ứng là TRISC. 2. Các chân của PORTE có ngõ vào analog. Thanh ghi TRISE : điều khiển xuất nhập PORTE và chuẩn giao tiếp PSP.186h) : điều khiển xuất nhập OPTION_REG (địa chỉ 81h. Cấu trúc bên trong và chức năng cụ thể của từng chân trong PORTC sẽ được trình bày cụ thể trong Phụ lục 1.106h) : chứa giá trị các pin trong PORTB TRISB (địa chỉ 86h. Phan Thanh Tiến 27 . 2. 2. TRISE : điều khiển xuất nhập và xác lập các thông số cho chuẩn giao tiếp PSP. bộ PWM và các chuẩn giao tiếp nối tiếp I2C.3 PORTC PORTC (RPC) gồm 8 pin I/O. Thanh ghi điều khiển xuất nhập tương ứng là TRISE. SPI.5 PORTE PORTE (RPE) gồm 3 chân I/O. Cấu trúc bên trong và chức năng cụ thể của từng chân trong PORTE sẽ được trình bày cụ thể trong Phụ lục 1. Bên cạnh đó PORTC còn chứa các chân chức năng của bộ so sánh. SSP. Trần Thanh Hiền. Các thanh ghi liên quan đến PORTD bao gồm: Thanh ghi PORTD : chứa giá trị các pin trong PORTD. USART.5. Các thanh ghi điều khiển liên quan đến PORTC: PORTC (địa chỉ 07h) : chứa giá trị các pin trong PORTC TRISC (địa chỉ 87h) : điều khiển xuất nhập.4 PORTD PORTD (RPD) gồm 8 chân I/O.5. Bên cạnh đó PORTE còn là các chân điều khiển của chuẩn giao tiếp PSP. bộ Timer1. Các thanh ghi liên quan đến PORTE bao gồm: PORTE : chứa giá trị các chân trong PORTE. Cấu trúc bên trong và chức năng cụ thể của từng chân trong PORTD sẽ được trình bày cụ thể trong Phụ lục 1.6 TIMER_0 Sơ đồ khối của Timer0 như sau: Nhóm: Trịnh Hoàng Long. PORTD còn là cổng xuất dữ liệu của chuẩn giao tiếp PSP (Parallel Slave Port).181h) : điều khiển ngắt ngoại vi và bộ Timer0. 2. Thanh ghi TRISD : điều khiển xuất nhập.

Phan Thanh Tiến 28 . Khi giá trị thanh ghi TMR0 từ FFh trở về 00h. Thanh ghi TMR0 cho phép ghi và xóa được giúp ta ấn định thời điểm ngắt Timer0 xuất hiện một cách linh động. TMR0IF= 0 không cho phép ngắt Timer0 tác động. Khi thanh ghi TMR0 bị tràn. Khi đó xung tác động lên bộ đếm được lấy từ chân RA4/TOCK1. Ngắt Timer0 sẽ xuất hiện khi Timer0 bị tràn. Bit TMR0IE (INTCON<5>) là bit điều khiển của Timer0. Khi đối tượng tác động là WDT. tác động lên giá trị thanh ghi TMR0 sẽ xóa prescaler nhưng không làm thay đổi đối tượng tác động của prescaler. ngắt Timer0 sẽ xuất hiện. Muốn Timer0 hoạt động ở chế độ Timer ta clear bit TOSC (OPTION_REG<5>). Cạnh tác động sẽ là cạnh lên nếu TOSE=0 và cạnh tác động sẽ là cạnh xuống nếu TOSE=1. Bit PSA (OPTION_REG<3>) xác định đối tượng tác động của prescaler. Các bit PS2:PS0 (OPTION_REG<2:0>) xác định tỉ số chia tần số của prescaler. Bộ chia tần số (prescaler) được chia sẻ giữa Timer0 và WDT (Watchdog Timer). lệnh CLRWDT sẽ xóa prescaler. OPTION_REG (địa chỉ 81h. Muốn Timer0 hoạt động ở chế độ counter ta set bit TOSC (OPTION_REG<5>). 10Bh. khi đó giá trị thanh ghi TMR0 sẽ tăng theo từng chu kì xung đồng hồ (tần số vào Timer0 bằng ¼ tần số oscillator). 101h) : chứa giá trị đếm của Timer0. 8Bh. Ngắt Timer0 không thể “đánh thức” vi điều khiển từ chế độ sleep. Đây chính là cờ ngắt của Timer0. bit TMR0IF (INTCON<2>) sẽ được set. INTCON (địa chỉ 0Bh. Prescaler được điều khiển bởi thanh ghi OPTION_REG. Nhóm: Trịnh Hoàng Long.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI Đây là một trong ba bộ đếm hoặc bộ định thời của vi điều khiển PIC16F877A. Khi đối tượng tác động là Timer0. Bit TOSE (OPTION_REG<4>) cho phép lựa chọn cạnh tác động vào bột đếm. Timer0 là bộ đếm 8 bit được kết nối với bộ chia tần số (prescaler) 8 bit. Trần Thanh Hiền. Các thanh ghi điều khiển liên quan đến Timer0 bao gồm: TMR0 (địa chỉ 01h. Điều đó có nghĩa là nếu prescaler được sử dụng cho Timer0 thì WDT sẽ không có được hỗ trợ của prescaler và ngược lại. 181h): điều khiển prescaler. đồng thời prescaler sẽ ngưng tác vụ hỗ trợ cho WDT. Cấu trúc của Timer0 cho phép ta lựa chọn xung clock tác động và cạnh tích cực của xung clock. Các lệnh tác động lên giá trị thanh ghi TMR0 sẽ xóa chế độ hoạt động của prescaler. 18Bh): cho phép ngắt hoạt động (GIE và PEIE). Cờ ngắt này phải được xóa bằng chương trình trước khi bộ đếm bắt đầu thực hiện lại quá trình đếm. TMR0IE=1 cho phép ngắt Timer0 tác động. Xem lại thanh ghi OPTION_REG để xác định lại một cách chi tiết về các bit điều khiển trên.

Tương tự như Timer0. PIR1 (địa chỉ 0Ch): chứa cờ ngắt Timer1 (TMR1IF). Khi đó PORTC sẽ bỏ qua sự tác động của hai bit TRISC<1:0> và PORTC<2:1> được gán giá trị 0.7 TIMER_1 Timer1 là bộ định thời 16 bit.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI 2. Timer1 không thể được sử dụng để làm nguồn xung clock cho khối CCP (Capture/Compare/Pulse width modulation). PIE1( địa chỉ 8Ch): cho phép ngắt Timer1 (TMR1IE). 18Bh): cho phép ngắt hoạt động (GIE và PEIE). giá trị của Timer1 sẽ được lưu trong hai thanh ghi (TMR1H:TMR1L). T1CON (địa chỉ 10h): xác lập các thông số cho Timer1. Khi =1 xung đếm lấy từ bên ngoài sẽ không được đồng bộ hóa với xung clock bên trong. Chế độ đếm được quyết định bởi bit điều khiển (T1CON<2>). Khi =0 xung đếm vào Timer1 sẽ được đồng bộ hóa với xung clock bên trong. Timer1 sẽ tiếp tục quá trình đếm khi vi điều khiển đang ở chế độ sleep và ngắt do Timer1 tạo ra khi bị tràn có khả năng “đánh thức” vi điều khiển. Việc lựa chọn xung tác động (tương ứng với việc lựa chọn chế độ hoạt động là timer hay counter) được điều khiển bởi bit TMR1CS (T1CON<1>). Phan Thanh Tiến 29 . Timer1 cũng có hai chế độ hoạt động: chế độ định thời (timer) với xung kích là xung clock của oscillator (tần số của timer bằng ¼ tần số của oscillator) và chế độ đếm (counter) với xung kích là xung phản ánh các sự kiện cần đếm lấy từ bên ngoài thông qua chân RC0/T1OSO/T1CKI (cạnh tác động là cạnh lên). TMR1H (địa chỉ 0Eh): chứa giá trị 8 bit cao của bộ đếm Timer1. Sau đây là sơ đồ khối của Timer1: Ngoài ra Timer1 còn có chức năng reset input bên trong được điều khiển bởi một trong hai khối CCP (Capture/Compare/PWM). TMR1L (địa chỉ 0Eh): chứa giá trị 8 bit thấp của bộ đếm Timer1. 10Bh. Khi bit T1OSCEN (T1CON<3>) được set. Timer1 có hai chế độ đếm là đồng bộ (Synchronous) và bất đồng bộ (Asynchronous). Ở chế độ đếm bất đồng bộ. Timer1 sẽ bắt đầu đếm sau cạnh xuống đầu tiên của xung ngõ vào. Ở chế độ này Timer1 sẽ không hoạt động khi vi điều khiển đang ở chế độ sleep. 8Bh. Bit điều khiển của Timer1 sẽ là TMR1IE (PIE<0>). Cờ ngắt của Timer1 là bit TMR1IF (PIR1<0>). Nhóm: Trịnh Hoàng Long. Timer1 sẽ lấy xung clock từ hai chân RC1/T1OSI/CCP2 và RC0/T1OSO/T1CKI làm xung đếm. Các thanh ghi liên quan đến Timer1 bao gồm: INTCON (địa chỉ 0Bh. Khi clear bit T1OSCEN Timer1 sẽ lấy xung đếm từ oscillator hoặc từ chân RC0/T1OSO/T1CKI. Trần Thanh Hiền.

trong khi Timer2 được kết nối với khối SSP. do đó Timer2 còn đóng vai trò tạo ra xung clock đồng bộ cho khối giao tiếp SSP. Phan Thanh Tiến 30 . Timer0. 18Bh): cho phép toàn bộ các ngắt (GIE và PEIE). PIE1 (địa chị 8Ch): chứa bit điều khiển Timer2 (TMR2IE). PR2 (địa chỉ 92h): thanh ghi hỗ trợ cho Timer2. 10Bh. 1:4 hoặc 1:16 và được điều khiển bởi các bit T2CKPS1:T2CKPS0 (T2CON<1:0>)). TMR2 (địa chỉ 11h): chứa giá trị đếm của Timer2.8 TIMER_2 Timer2 là bộ định thời 8 bit và được hỗ trợ bởi hai bộ chia tần số prescaler va postscaler. Kh I reset thanh ghi PR2 được nhận giá trị mặc định FFh. Bit cho phép ngắt Timer2 tác động là TMR2ON (T2CON<2>).Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI 2. Timer2 được hỗ trợ bởi hai bộ chia tần số prescaler và postcaler độc lập. sau đó được reset về 00h. trong khi Timer1 là bộ đếm 16 bit (giá trị đếm tối đa là FFFFh). Xung tác động lên Timer0 được hỗ trợ bởi prescaler và có thể được thiết lập ở nhiều chế độ khác nhau (tần số tác động. Trần Thanh Hiền. Postscaler được điều khiển bởi 4 bit T2OUTPS3:T2OUTPS0. Xung ngõ vào (tần số bằng ¼ tần số oscillator) được đưa qua bộ chia tần số prescaler 4 bit (với các tỉ số chia tần số là 1:1. Các thanh ghi liên quan đến Timer2 bao gồm: INTCON (địa chỉ 0Bh. Cờ ngắt của Timer2 là bit TMR2IF (PIR1<1>). Thanh ghi chứa giá trị đếm của Timer2 là TMR2. cạnh tác động) trong khi các thông số của xung tác động lên Timer1 là cố định. Một vài so sánh sẽ giúp ta dễ dàng lựa chọn được Timer thích hợp cho ứng dụng. Xung clock có tần số bằng ¼ tần số của oscillator. Ngõ ra của Timer2 được đưa qua bộ chia tần số postscaler với các mức chia từ 1:1 đến 1:16. tuy nhiên cạnh tác động vẫn được cố định là cạnh lên. Nhóm: Trịnh Hoàng Long. Timer2 còn được hỗ trợ bởi thanh ghi PR2. Ta có một vài nhận xét về Timer0. T2CON (địa chỉ 12h): xác lập các thông số cho Timer2. PIR1 (địa chỉ 0Ch): chứa cờ ngắt Timer2 (TMR2IF). Ngõ ra của postscaler đóng vai trò quyết định trong việc điều khiển cờ ngắt. Timer1 và Timer2 như sau: Timer0 và Timer2 là bộ đếm 8 bit (giá trị đếm tối đa là FFh). Timer1 có quan hệ với khối CCP. 8Bh. Timer1 và Timer2 đều có hai chế độ hoạt động là timer và counter. Ngoài ra ngõ ra của Timer2 còn được kết nối với khối SSP. Giá trị đếm trong thanh ghi TMR2 sẽ tăng từ 00h đến giá trị chứa trong thanh ghi PR2.

10). ADCON0 (địa chỉ 1Fh) và ADCON1 (địa chỉ 9Fh): xác lập các thông số cho bộ chuyển đổi AD. Cơ chế hoạt động của bộ Comparator như sau: Nhóm: Trịnh Hoàng Long. Khi không sử dụng bộ chuyển đổi ADC. Thiết lập các thông số cho bộ chuyển đổi ADC: Chọn ngõ vào analog. Đọc kết quả chuyển đổi và xóa cờ ngắt. Thiết lập các cờ ngắt cho bộ AD Clear bit ADIF. Qui trình chuyển đổi từ tương tự sang số bao gồm các bước sau: 1. Hiệu điện thế chuẩn VREF có thể được lựa chọn là VDD. các thanh ghi này có thể được sử dụng như các thanh ghi thông thường khác. 18Bh): cho phép các ngắt (các bit GIE. PORTA (địa chỉ 05h) và TRISA (địa chỉ 85h): liên quan đến các ngõ vào analog ở PORTA. Kiểm tra cờ ngắt. việc lựa chọn cách lưu được điều khiển bởi bit ADFM và được minh họa cụ thể trong hình sau: Các thanh ghi liên quan đến bộ chuyển đổi ADC bao gồm: INTCON (địa chỉ 0Bh. quá trình chuyển đổi đã hoàn tất. Chọnh xung clock cho kênh chuyển đổi AD (thanh ghi ADCON0). Đợi cho tới khi quá trình lấy mẫu hoàn tất. 2. PIE1 (địa chỉ 8Ch): chứa bit điều khiển AD (ADIE). ngõ ra là hai chân RA4 và RA5. PORTE (địa chỉ 09h) và TRISE (địa chỉ 89h): liên quan đến các ngõ vào analog ở PORTE. Phan Thanh Tiến 31 .Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI 2.10 COMPARATOR Bộ so sánh bao gồm hai bộ so so sánh tín hiệu analog và được đặt ở PORTA. gõ vào bộ so sánh là các chân RA3:RA0. PIC16F877A có 8 ngõ vào analog (RA4:RA0 và RE2:RE0). Set bit GIE. Nếu =0. Khi quá trình chuyển đổi hoàn tất. bit (ADCON0<2>) được xóa về 0 và cờ ngắt ADIF được set. 4. 3. PIR1 (địa chỉ 0Ch): chứa cờ ngắt AD (bit ADIF). Thanh ghi điều khiển bộ so sánh là CMCON. VSS hay hiệu điện thể chuẩn được xác lập trên hai chân RA2 và RA3. Set bit ADIE. 5. Cần chú ý là có hai cách lưu kết quả chuyển đổi AD. Set bit PEIE. 6. PEIE). Các bit CM2:CM0 trong thanh ghi CMCON đóng vai trò chọn lựa các chế độ hoạt động cho bộ Comparator (hình 2. Cho phép bộ chuyển đổi AD hoạt động (thanh ghi ADCON0). set bit (nếu cần tiếp tục chuyển đổi). Bắt đầu quá trình chuyển đổi (set bit ). kết quả sẽ được lưu vào hai thanh ghi ADRESH:ADRESL. chọn điện áp mẫu (dựa trên các thông số của thanh ghi ADCON1) Chọnh kênh chuyển đổi AD (thanh ghi ADCON0). 2. 8Bh. ADRESH (địa chỉ 1Eh) và ADRESL (địa chỉ 9Eh): các thanh ghi chứa kết quả chuyển đổi AD. Kết quả chuyển đổi từ tín tiệu tương tự sang tín hiệu số là 10 bit số tương ứng và được lưu trong hai thanh ghi ADRESH:ADRESL. Đợi cho tới khi quá trình chuyển đổi hoàn tất bằng cách: Kiểm tra bit . 10Bh. Trần Thanh Hiền.9 ADC ADC (Analog to Digital Converter) là bộ chuyển đổi tín hiệu giữa hai dạng tương tự và số.

Cực tính của các bộ so sánh có thể thay đổi dựa vào các giá trị đặt vào các bit C2INV và C1INV (CMCON<4:5>). Khi điện áp ở chân VIN+ lớn hơn điện áp ở chân VIN+ ngõ ra sẽ ở mức 1 và ngược lại. Phan Thanh Tiến 32 . Cần chú ý đến khoảng thời gian đáp ứng này khi sử dụng bộ so sánh.và tín hiệu ở ngõ ra bộ so sánh sẽ thay đổi tương ứng như hình vẽ. Nhóm: Trịnh Hoàng Long. Trần Thanh Hiền.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI Tín hiệu analog ở chân VIN + sẽ được só sánh với điện áp chuẩn ở chân VIN. Dựa vào hình vẽ ta thấy đáp ứng tại ngõ ra không phải là tức thời so với thay đổi tại ngõ vào mà cần có một khoảng thời gian nhất định để ngõ ra thay đổi trạng thái (tối đa là 10us).

Thanh ghi PORTA (địa chỉ 05h) và TRISA (địa chỉ 85h): Nhóm: Trịnh Hoàng Long. Thanh ghi PIR2 (địa chỉ 0Dh): chứa cờ ngắt của bộ so sánh (CMIF). Cờ ngắt này phải được reset về 0. 18Bh): chứa các bit cho phép các ngắt (GIE và PEIE).Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI Các chế độ hoạt động của bộ comparator. Phan Thanh Tiến 33 . Cờ ngắt của bộ so sánh là bit CMIF (thanh ghi PIR1). Thanh ghi PIE2 (địa chỉ 8Dh): chứa bit cho phép bộ so sánh (CNIE). 10Bh. Các C2OUT C1OUT bit và (CMCON<7:6>) đóng vai trò ghi nhận sự thay đổi tín hiệu analog so với điện áp đặt trước. Thanh ghi INTCON (địa chỉ 0Bh. 8Bh. Các thanh ghi liên quan đến bộ so sánh bao gồm: CMCON (địa chỉ 9Ch) và CVRCON (địa chỉ 9Dh): xác lập các thông số cho bộ so sánh. Bit điều khiển bộ so sánh là bit CMIE (Tranh ghi PIE). Các bit này cần được xử lí thích hợp bằng chương trình để ghi nhận sự thay đổi của tín hiệu ngõ vào. Trần Thanh Hiền.

Bộ tạo điện áp so sánh này có thể xem như một bộ chuyển đổi D/A đơn giản. Trần Thanh Hiền. Nếu CVRR ở mức logic 1. Phan Thanh Tiến 34 . Mỗi mức có giá trị điện áp khác nhau tùy thuộc vào bit điều khiển CVRR (CVRCON<5>).của 2 bộ so sánh C1 và C2 (xem chi tiết ở hình 2.10). Trong khi đó điện áp đưa vào ngõ VIN+ sẽ được lấy từ một bộ tạo điện áp so sánh. điện trở 8R sẽ không có tác dụng như một thành phần của cầu phân áp (BJT dẫn mạnh và dòng điện không đi qua điện trở 8R). Thanh ghi CMCON (địa chỉ 9Ch): thanh ghi điều khiển bộ Comparator. Nhóm: Trịnh Hoàng Long. Khi đó các pin RA0/AN0 và RA1/AN1 (khi CIS = 0) hoặc pin RA3/AN3 và RA2/AN2 (khi CIS = 1) sẽ là ngõ vào analog của điện áp cần so sánh đưa vào ngõ VIN. Khi đó kết quả chuyển đổi xem như được chứa trong các bit CVR3:CVR0. Sơ đồ khối của bộ tạo điện áp so sánh đựơc trình bày trong hình vẽ sau: Bộ tạo điện áp so sánh này bao gồm một thang điện trở 16 mức đóng vai trò là cầu phân áp chia nhỏ điện áp VDD thành nhiều mức khác nhau (16 mức).Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI 2. Các mức điện áp này được đưa qua bộ MUX cho phép ta chọn được điện áp đưa ra pin RA2/AN2/VREF-/CVREF để đưa vào ngõ VIN+ của bộ so sánh bằng cách đưa các giá trị thích hợp vào các bit CVR3:CVR0. Ngược lại khi CVRR ở mức logic 0.10 BỘ TẠO ĐIỆN ÁP SO SÁNH Bộ so sánh này chỉ hoạt động khi bộ Comparator đựơc định dạng hoạt động ở chế độ ‘110’. Giá trị điện áp cần so sánh ở ngõ vào Analog sẽ được so sánh với các mức điện áp do bộ tạo điện áp tạo ra cho tới khi hai điện áp này đạt được giá trị xấp xỉ bằng nhau. Các thanh ghi liên quan đến bộ tạo điện áp so sánh này bao gồm: Thanh ghi CVRCON (địa chỉ 9Dh): thanh ghi trực tiếp điều khiển bộ so sánh điện áp. dòng điện sẽ qua điện trở 8R và1 mức điện áp có giá trị VDD/32. khi đó 1 mức điện áp có giá trị VDD/24.

Tuy nhiên trong một số trường hợp ngoại lệ CCP1 và CCP2 có khả năng phối hợp với nhau để để tạo ra các hiện tượng đặc biệt (Special event trigger) hoặc các tác động lên Timer1 và Timer2. Cả CCP1 và CCP2 về nguyên tắc hoạt động đều giống nhau và chức năng của từng khối là khá độc lập. PIC16F877A được tích hợp sẵn hai khối CCP : CCP1 và CCP2. Điều chế độ rộng xung PWM (Pulse Width Modulation). Các trường hợp này được liệt kê trong bảng sau: Khi hoạt động ở chế độ Capture thì khi có một “hiện tượng” xảy ra tại pin RC2/CCP1 (hoặc RC1/T1OSI/CCP2). ♦ Mỗi khi có cạnh lên.Mỗi CCP có một thanh ghi 16 bit (CCPR1H:CCPR1L và CCPR2H:CCPR2L). Các chức năng của CCP bao gồm: Capture. Nhóm: Trịnh Hoàng Long. Các “hiện tượng” được định nghĩa bởi các bit CCPxM3:CCPxM0 (CCPxCON<3:0>) và có thể là một trong các hiện tượng sau: ♦ Mỗi khi có cạnh xuống tại các pin CCP. So sánh (Compare).Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI 2. giá trị của thanh ghi TMR1 sẽ được đưa vào thanh ghi CCPR1 (CCPR2). Trần Thanh Hiền.11 CCP CCP (Capture/Compare/PWM) bao gồm các thao tác trên các xung đếm cung cấp bởi các bộ đếm Timer1 và Timer2. Phan Thanh Tiến 35 . pin điều khiển dùng cho khối CCPx là RC2/CCP1 và RC1/T1OSI/CCP2. ♦ Mỗi cạnh lên thứ 4. ♦ Mỗi cạnh lên thứ 16.

CCP còn được tích hợp bộ chia tần số prescaler được điều khiển bởi các bit CCPxM3:CCPxM0. đồng thời cờ ngắt CCPIF cũng sẽ được set. Sự thay đổi trạng thái của pin có thể được điều khiển bởi các bit CCPxM3:CCPxM0 (CCPxCON <3:0>). Xem các thanh ghi điều khiển khối CCP Khi hoạt động ở chế độ Compare. Khi hai thanh ghi chứa giá trị bằng nhau. Nếu hiện tượng tiếp theo xảy ra mà giá trị trong thanh ghi CCPRx chưa được xử lí. cờ ngắt CCPIF nên được xóa bằng phần mềm mỗi khi được set để tiếp tục nhận định được trạng thái hoạt động của CCP. giá trị tiếp theo nhận được sẽ tự động được ghi đè lên giá trị cũ. các pin của CCP được thay đổi trạng thái (được đưa lên mức cao. Một số điểm cần chú ý khi sử dụng CCP như sau: Các pin dùng cho khối CCP phải được ấn định là input (set các bit tương ứng trong thanh ghi TRISC). Trần Thanh Hiền. Nhóm: Trịnh Hoàng Long. việc đưa giá trị vào PORTC cũng có thể gây ra các “hiện tượng” tác động lên khối CCP do trạng thái của pin thay đổi. cờ ngắt CCPIF được set và phải được xóa bằng chương trình. Việc thay đổi đối tượng tác động của prescaler có thể tạo ra hoạt động ngắt. Khi ấn định các pin dùng cho khối CCP là output.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI Sau khi giá trị của thanh ghi TMR1 được đưa vào thanh ghi CCPRx. đưa xuống mức thấp hoặc giữ nguyên trạng thái). Timer1 phải được hoạt động ở chế độ Timer hoặc chế độ đếm đồng bộ. Phan Thanh Tiến 36 . Prescaler được xóa khi CCP không hoạt động hoặc khi reset. giá trị trong thanh ghi CCPRx sẽ thường xuyên được so sánh với giá trị trong thanh ghi TMR1. Tránh sử dụng ngắt CCP bằng cách clear bit CCPxIE (thanh ghi PIE1).

CCP có khả năng tạo ra hiện tượng đặc biệt (Special Event trigger) làm reset giá trị thanh ghi TMR1 và khởi động bộ chuyển đổi ADC. Khi hoạt động ở chế độ PWM (Pulse Width Modulation _ khối điều chế độ rộng xung).16 Các tham số của PWM Trong đó giá trị 1 chu kì (period) của xung điều chế được tính bằng công thức: Bộ chia tần số prescaler của Timer2 chỉ có thể nhận các giá trị 1. Phan Thanh Tiến 37 . Điều khiển các pin của CCP là output bằng cách clear các bit tương ứng trong thanh ghi TRISC. Giá trị thanh ghi CCPR1L (chứa giá trị ấn định độ rộng xung điều chế duty cycle) được đưa vào thanh ghi CCPRxH. Hình 2. 4. Pin của khối CCP được set. khi ở chế độ Compare. Thiết lập giá trị bộ chia tần số prescaler của Timer2 và cho phép Timer2 hoạt động bằng cách đưa giá trị thích hợp vào thanh ghi T2CON.15 Sơ đồ khối CCP (PWM mode). Trần Thanh Hiền. Cho phép CCP hoạt động ở chế độ PWM. Để sử dụng chức năng điều chế này trước tiên ta cần tiến hành các bước cài đặt sau: 1. Độ rộng của xung điều chế (duty cycle) được tính theo công thức: PWM period = [(PR2)+1]*4*TOSC*(giá trị bộ chia tần số của TMR2) PWM duty cycle = (CCPRxL:CCPxCON<5:4>)*TOSC*(giá trị bộ chia tần số TMR2)Như vậy 2 bit Nhóm: Trịnh Hoàng Long. 3. 5. Điều này cho phép ta điều khiển giá trị thanh ghi TMR1 một cách linh động hơn.4 hoặc 16 (xem lại Timer2 để biết thêm chi tiết). Khi giá trị thanh ghi PR2 bằng với giá trị thanh ghi TMR2 thì quá trình sau xảy ra: Thanh ghi TMR2 tự động được xóa. Timer1 phải được ấn định chế độ hoạt động là timer hoặc đếm đồng bộ. 2. Hình 2.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI Tương tự như ở chế độ Capture. Ngoài ra. Thiết lập độ rộng xung cần điều chế (duty cycle) bằng cách đưa giá trị vào thanh ghi CCPRxL và các bit CCP1CON<5:4>. tín hiệu sau khi điều chế sẽ được đưa ra các pin của khối CCP (cần ấn định các pin này là output). Thiết lập thời gian của 1 chu kì của xung điều chế cho PWM (period) bằng cách đưa giá trị thích hợp vào thanh ghi PR2.

nghĩa là các bit truyền đi sẽ bao gồm 1 bit Start. PIC16F877A được tích hợp sẵn bộ tạo tốc độ baud BRG (Baud Rate Genetator) 8 bit dùng cho giao diện USART. Thanh ghi CCPRxL chứa byte cao của giá trị quyết định độ rộng xung. pin của khối CCP lại được đưa về mức thấp. và để đảm bảo tính hiệu quả của dữ liệu thì hai khối truyền và nhận phải dùng chung một định dạng dữ liệu. trong đó RC6/TX/CK dùng để truyền xung clock (baud rate) và RC7/RX/DT dùng để truyền data. Khi giá trị trong thanh ghi CCPRxH bằng với giá trị trong thanh ghi TMR2 và hai bit CCPxCON<5:4> bằng với giá trị 2 bit của bộ chia tần số prescaler. 8 hay 9 bit dữ liệu (thông thường là 8 bit) và 1 bit Stop.1.12. Trong trường hợp này ta phải set bit TRISC<7:6> và SPEN (RCSTA<7>) c0để cho phép giao diện USART.12.14. Trần Thanh Hiền. Các thanh ghi liên quan đến BRG bao gồm: TXSTA (địa chỉ 98h): chọn chế độ đòng bộ hay bất đồng bộ ( bit SYNC) và chọn mức tốc độ baud (bit BRGH).1 USART USART (Universal Synchronous Asynchronous Receiver Transmitter) là một trong hai chuẩn giao tiếp nối tiếp. Ở dạng bất đồng bộ. Tốc độ baud do BRG tạo ra được tính theo công thức sau: Trong đó X là giá trị của thanh ghi RSBRG ( X là số nguyên và 0<X<255).Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI CCPxCON<5:4> sẽ chứa 2 bit LSB.1. • Đồng bộ_ Slave mode. RSBRG (địa chỉ 99h): quyết định tốc độ baud. Tuy nhiên bộ postscaler không được sử dụng trong quá trình điều chế độ rộng xung của khối PWM. Thanh ghi CCPRxH đóng vai trò là buffer cho khối PWM. Có thể sử dụng giao diện này cho các giao tiếp với các thiết bị ngọai vi. 2. Phan Thanh Tiến 38 . với các vi điều khiển khác hay với máy tính. Một số điểm cần chú ý khi sử dụng khối PWM: Timer2 có hai bộ chia tần số prescaler và postscaler.12. như vậy ta có được hình ảnh của xung điều chế tại ngõ ra của khối PWM như hình 2. 2. Bit LSB sẽ được truyền đi trước. 2. Các dạng của giao diện USART ngọai vi bao gồm: • Bất động bộ (Asynchronous). RCSTA (địa chỉ 18h): cho phép hoạt động cổng nối tiếp (bit SPEN). Các khối truyền và nhận data độc lập với nhau sẽ dùng chung tần số tương ứng với tốc độ baud cho quá trình dịch dữ liệu (tốc độ baud gấp 16 hay 64 lần tốc độ dịch dữ liệu tùy theo giá trị của bit BRGH). BRG còn được điều khiển bởi bit BRGH ( TXSTA<2>).12 GIAO TIẾP NỐI TIẾP 1.USART còn được gọi là giao diện giao tiếp nối tiếp nối tiếp SCI (Serial Communication Interface).1 TRUYỀN DỮ LIỆU QUA CHUẨN GIAO TIẾP USART BẤT ĐỒNG BỘ Nhóm: Trịnh Hoàng Long. • Đồng bộ_ Master mode. Hai pin dùng cho giao diện này là RC6/TX/CK và RC7/RX/DT. BRG thực chất là một bộ đếm có thể được sử dụng cho cả hai dạng đồng bộ và bất đồng bộ và được điều khiển bởi thanh ghi PSBRG.1. Ở dạng đồng bộ tác động của bit BRGH được bỏ qua.1 USART BẤT ĐỒNG BỘ Ở chế độ truyền này USART hoạt động theo chuẩn NRZ (None-Return-to-Zero). Nếu thời gian duty cycle dài hơn thời gian chu kì xung period thì xung ngõ ra tiếp tục được giữ ở mức cao sau khi giá trị PR2 bằng với giá trị TMR2.

Đề tài: Điều khiển thiết bị từ xa thông qua máy tính

GVHD: Cô BÙI THỊ KIM CHI

Thành phần quan trọng nhất của khối truyền dữ liệu là thanh ghi dịch dữ liệu TSR (Transmit Shift Register). Thanh ghi TSR sẽ lấy dữ liệu từ thanh ghi đệm dùng cho quá trình truyền dữ liệu TXREG. Dữ liệu cần truyền phải đựơc đưa trước vào thanh ghi TXREG. Ngay sau khi bit Stop của dữ liệu cần truyền trước đó được truyền xong, dữ liệu từ thanh ghi TXREG sẽ được đưa vào thanh ghi TSR, thanh ghi TXREG bị rỗng, ngắt xảy ra và cờ hiệu TXIF (PIR1<4>) được set. Ngắt này được điều khiển bởi bit TXIE (PIE1<4>). Cờ hiệu TXIF vẫn được set bất chấp trạng thái của bit TXIE hay tác động của chương trình (không thể xóa TXIF bằng chương trình) mà chỉ reset về 0 khi có dữ liệu mới được đưa vào thanhh ghi TXREG.

Trong khi cờ hiệu TXIF đóng vai trò chỉ thị trạng thái thanh ghi TXREG thì cờ hiệu TRMT (TXSTA<1>) có nhiệm vụ thể hiện trạng thái thanh ghi TSR. Khi thanh ghi TSR rỗng, bit TRMT sẽ được set. Bit này chỉ đọc và không có ngắt nào được gắn với trạng thái của nó. Một điểm cần chú ý nữa là thanh ghi TSR không có trong bô nhớ dữ liệu và chỉ được điều khiển bởi CPU. Khối truyền dữ liệu được cho phép hoạt động khi bit TXEN (TXSTA<5>) được set. Quá trình truyền dữ liệu chỉ thực sự bắt đầu khi đã có dữ liệu trong thanh ghi TXREG và xung truyền baud được tạo ra. Khi khối truyền dữ liệu được khởi động lần đầu tiên, thanh ghi TSR rỗng. Tại thời điểm đó, dữ liệu đưa vào thanh ghi TXREG ngay lập tức được load vào thanh ghi TSR và thanh ghi TXREG bị rỗng. Lúc này ta có thể hình thành một chuỗi dữ liệu liên tục cho quá trình truyền dữ liệu. Trong quá trình truyền dữ liệu nếu bit TXEN bị reset về 0, quá trình truyền kết thúc, khối truyền dữ liệu được reset và pin RC6/TX/CK chuyển đến trạng thái high-impedance. Trong trường hợp dữ liệu cần truyền là 9 bit, bit TX9 (TXSTA<6>) được set và bit dữ liệu thứ 9 sẽ được lưu trong bit TX9D (TXSTA<0>). Nên ghi bit dữ liệu thứ 9 vào trước, vì khi ghi 8 bit dữ liệu vào thanh ghi TXREG trước có thể xảy ra trường hợp nội dung thanh ghi TXREG sẽ được load vào thanh ghi TSG trước, như vậy dữ liệu truyền đi sẽ bị sai khác so với yêu cầu. Tóm lại, để truyền dữ liệu theo giao diện USART bất đồng bộ, ta cần thực hiện tuần tự các bước sau: 1. Tạo xung truyền baud bằng cách đưa các giá trị cần thiết vào thanh ghi RSBRG và bit điều khiển mức tốc độ baud BRGH. 2. Cho phép cổng giao diện nối tiếp nối tiếp bất đồng bộ bằng cách clear bit SYNC và set bit PSEN. 3. Set bit TXIE nếu cần sử dụng ngắt truyền. 4. Set bit TX9 nếu định dạng dữ liệu cần truyền là 9 bit. 5. Set bit TXEN để cho phép truyền dữ liệu (lúc này bit TXIF cũng sẽ được set). 6. Nếu định dạng dữ liệu là 9 bit, đưa bit dữ liệu thứ 9 vào bit TX9D. 7. Đưa 8 bit dữ liệu cần truyền vảo thanh ghi TXREG.
Nhóm: Trịnh Hoàng Long, Trần Thanh Hiền, Phan Thanh Tiến

39

Đề tài: Điều khiển thiết bị từ xa thông qua máy tính

GVHD: Cô BÙI THỊ KIM CHI

8. Nếu sử dụng ngắt truyền, cần kiểm tra lại các bit GIE và PEIE (thanh ghi INTCON). Các thanh ghi liên quan đến quá trình truyền dữ liệu bằng giao diện USART bất đồng bộ:  Thanh ghi INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép tất cả các ngắt.  Thanh ghi PIR1 (địa chỉ 0Ch): chứa cờ hiệu TXIF. Thanh ghi PIE1 (địa chỉ 8Ch): chứa bit cho phép ngắt truyền TXIE.  Thanh ghi RCSTA (địa chỉ 18h): chứa bit cho phép cổng truyền dữ liệu (hai pin RC6/TX/CK và RC7/RX/DT).  Thanh ghi TXREG (địa chỉ 19h): thanh ghi chứa dữ liệu cần truyền.  Thanh ghi TXSTA (địa chỉ 98h): xác lập các thông số cho giao diện  Thanh ghi SPBRG (địa chỉ 99h): quyết định tốc độ baud.

2.12.1.1.2 NHẬN DỮ LIỆU QUA CHUẨN GIAO TIẾP USART BẤT ĐỒNG BỘ
Dữ liệu được đưa vào từ chân RC7/RX/DT sẽ kích hoạt khối phục hồi dữ liệu. Khối phục hồi dữ liệu thực chất là một bộ dịch dữ liệu ctốc độ cao va có tần số hoạt động gấp 16 lần hoặc 64 lần tần số baud. Trong khi đó tốc độ dịch của thanh thanh ghi nhận dữ liệu sẽ bằng với tần số baud hoặc tần số của oscillator.

Bit điều khiển cho phép khối nhận dữ liệu là bit RCEN (RCSTA<4>). Thành phần quan trọng nhất của khối nhận dữ liệu là thsnh ghi nhận dữ liệu RSR (Receive Shift Register). Sau khi nhận diện bit Stop của dữ liệu truyền tới, dữ liệu nhận được trong thanh ghi RSR sẽ được đưa vào thanh ghi RCGER, sau đó cờ hiệu RCIF (PIR1<5>) sẽ được set và ngắt nhận được kích hoạt. Ngắt này được điều khiển bởi bit RCIE (PIE1<5>). Bit cờ hiệu RCIF là bit chỉ đọc và không thể được tác động bởi chương trình. RCIF chỉ reset về 0 khi dữ liệu nhận vào ở thanh ghi RCREG đã được đọc và khi đó thanh ghi RCREG rỗng. Thanh ghi RCREG là thanh ghi có bộ đệm kép (double-buffered register) và hoạt động theo cơ chế FIFO (First In First Out) cho phép nhận 2 byte và byte thứ 3 tiếp tục được đưa vào thanh ghi RSR. Nếu sau khi nhận được bit Stop của byte dữ liệu thứ 3 mà thanh ghi RCREG vẫn còn đầy, cờ hiệu báo tràn dữ liệu (Overrun Error bit) OERR(RCSTA<1>) sẽ được set, dữ liệu trong thanh ghi RSR sẽ bị mất đi và quá trình đưa dữ liệu từ thanh ghi RSR vào thanh ghi RCREG sẽ bị gián đoạn. Trong trường hợp này cần lấy hết dữ liệu ở thanh ghi RSREG vào trước khi tiếp tục nhận byte dữ liệu tiếp theo. Bit OERR phải được xóa bằng phần mềm và thực hiện bằng cách clear bit RCEN rồi set lại. Bit FERR (RCSTA<2>) sẽ được set khi phát hiện bit Stop dủa dữ liệu được nhận vào. Bit dữ liệu thứ 9 sẽ được đưa vào bit RX9D (RCSTA<0>). Khi đọc dữ liệu từ thanh ghi RCREG, hai bit FERR và RX9D sẽ nhận các giá trị mới. Do
Nhóm: Trịnh Hoàng Long, Trần Thanh Hiền, Phan Thanh Tiến

40

Đề tài: Điều khiển thiết bị từ xa thông qua máy tính

GVHD: Cô BÙI THỊ KIM CHI

đó cần đọc dữ liệu từ thanh ghi RCSTA trước khi đọc dữ liệu từ thanh ghi RCREG để tránh bị mất dữ liệu. Tóm lại, khi sử dụng giao diện nhận dữ liệu USART bất đồng bộ cần tiến hành tuần tự các bước sau: 1. Thiết lập tốc độ baud (đưa giá trị thích hợp vào thanh ghi SPBRG và bit BRGH. 2. Cho phép cổng giao tiếp USART bất đồng bộ (clear bit SYNC và set bit SPEN). 3. Nếu cần sử dụng ngắt nhận dữ liệu, set bit RCIE. 4. Nếu dữ liệu truyền nhận có định dạng là 9 bit, set bit RX9. 5. Cho phép nhận dữ liệu bằng cách set bit CREN. 6. Sau khi dữ liệu được nhận, bit RCIF sẽ được set và ngắt được kích hoạt (nếu bit RCIE được set). 7. Đọc giá trị thanh ghi RCSTA để đọc bit dữ liệu thứ 9 và kiểm tra xem quá trình nhận dữ liệu có bị lỗi không. 8. Đọc 8 bit dữ liệu từ thanh ghi RCREG. 9. Nếu quá trình truyền nhận có lỗi xảy ra, xóa lỗi bằng cách xóa bit CREN. 10. Nếu sử dụng ngắt nhận cần set bit GIE và PEIE (thanh ghi INTCON). Các thanh ghi liên quan đến quá trình nhận dữ liệu bằng giao diện USART bất đồng bộ:  Thanh ghi INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): chứa các bit cho phép toàn bộ các ngắt (bit GIER và PEIE).  Thanh ghi PIR1 (địa chỉ 0Ch): chứa cờ hiệu RCIE.  Thanh ghi PIE1 (địa chỉ 8Ch): chứa bit cho phép ngắt RCIE.  Thanh ghi RCSTA (địa chỉ 18h): xác định các trang thái trong quá trình nhận dữ liệu.  Thanh ghi RCREG (địa chỉ 1Ah): chứa dữ liệu nhận được.

2.12.1.1.2 USART ĐỒNG BỘ
Giao diện USART đồng bộ được kích hoạt bằng cách set bit SYNC. Cổng giao tiếp nối tiếp vẫn là hai chân RC7/RX/DT, RC6/TX/CK và được cho phép bằng cách set bit SPEN. USART cho phép hai chế độ truyền nhận dữ liệu là Master mode và Slave mode. Master mode được kích hoạt bằng cách set bit CSRC (TXSTA<7>), Slave mode được kích hoạt bằng cách clear bit CSRC. Điểm khác biệt duy nhất giữa hai chế độ này là Master mode sẽ lấy xung clock đồng bộ từ bộ tao xung baud BRG còn Slave mode lấy xung clock đồng bộ từ bên ngoài qua chân RC6/TX/CK. Điều này cho phép Slave mode hoạt động ngay cả khi vi điều khiển đang ở chế độ sleep.

2.12.1.2.1 TRUYỀN DỮ LIỆU QUA CHUẨN GIAO TIẾP USART ĐỒNG BỘ MASTER MODÈ
Thanh ghi TXSTA (địa chỉ 98h): chứa các bit điều khiển SYNC và BRGH. Thanh ghi SPBRG (địa chỉ 99h): điều khiển tốc độ baud. Tương tự như giao diện USART bât đồng bộ, thành phần quan trọng nhất của hối truyền dữ liệu là thanh ghi dịch TSR (Transmit Shift Register). Thanh ghi này chỉ được điều khiển bởi CPU. Dữ liệu đưa vào thanh ghi TSR được chứa trong thanh ghi TXREG. Cờ hiệu của khối truyền dữ liệu là bit TXIF (chỉ thị trang thái thanh ghi TXREG), cờ hiệu này được gắn với một ngắt và bit điều khiển ngắt này là TXIE. Cờ hiệu chỉ thị trạng thái thanh ghi TSR là bit TRMT. Bit TXEN cho phép hay không cho phép truyền dữ liệu. Các bước cần tiến hành khi truyền dữ liệu qua giao diện USART đồng bộ Master mode: 1. Tạo xung truyền baud bằng cách đưa các giá trị cần thiết vào thanh ghi RSBRG và bit điều khiển mức tốc độ baud BRGH. 2. Cho phép cổng giao diện nối tiếp nối tiếp đồng bộ bằng cách set bit SYNC, PSEN và CSRC. 3. Set bit TXIE nếu cần sử dụng ngắt truyền. 4. Set bit TX9 nếu định dạng dữ liệu cần truyền là 9 bit.  
Nhóm: Trịnh Hoàng Long, Trần Thanh Hiền, Phan Thanh Tiến

41

 Thanh ghi SPBRG (địa chỉ 99h): điều khiển tốc độ baud. 2. Điểm khác biệt duy nhất là giao diện này cho phép hai chế độ nhận sữ liệu. 3. đưa bit dữ liệu thứ 9 vào bit TX9D. Thanh ghi PIE1 (địa chỉ 8Ch): chứa bit cho phép ngắt RCIE. 9.2 NHẬN DỮ LIỆU QUA CHUẨN GIAO TIẾP USART ĐỒNG BỘ MASTER MODE Cấu trúc khối truyền dữ liệu là không đổi so với giao diện bất đồng bộ. 8. Cho phép cổng giao tiếp USART bất đồng bộ (set bit SYNC. 10. Clear bit CREN và SREN. Đọc 8 bit dữ liệu từ thanh ghi RCREG. ngắt nhận và các thao tác trên các thành phần đó. set bit RCIE.  Thanh ghi TXSTA (địa chỉ 98h): chứa các bit điều khiển SYNC và BRGH. 10Bh. 10Bh. 4. set bit RX9. 8Bh. Trần Thanh Hiền. đó là chỉ nhận 1 word dữ liệu (set bit SCEN) hay nhận một chuỗi dữ liệu (set bit CREN) cho tới khi ta clear bit CREN. 8. Nếu chỉ nhận 1 word dữ liệu. Nếu cả hai bit đều được set. 18Bh): chứa các bit cho phép toàn bộ các ngắt (bit GIER và PEIE). Set bit TXEN để cho phép truyền dữ liệu.  Thanh ghi RCSTA (địa chỉ 18h): chứa bit cho phép cổng truyền dữ liệu (hai pin RC6/TX/CK và RC7/RX/DT).1.  Thanh ghi TXSTA (địa chỉ 98h): xác lập các thông số cho giao diện. Nếu dữ liệu truyền nhận có định dạng là 9 bit. nếu nhận 1 chuỗi word dữ liệu. 7.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI 5. 8Bh.  Thanh ghi PIR1 (địa chỉ 0Ch): chứa cờ hiệu TXIF. 18Bh): cho phép tất cả các ngắt. 11. cần kiểm tra lại các bit GIE và PEIE (thanh ghi INTCON). Nếu quá trình truyền nhận có lỗi xảy ra. Nếu sử dụng ngắt truyền.  Thanh ghi RCREG (địa chỉ 1Ah): chứa dữ liệu nhận được. SPEN và CSRC). Nếu định dạng dữ liệu là 9 bit. Đưa 8 bit dữ liệu cần truyền vào thanh ghi TXREG. 5. Sau khi dữ liệu được nhận.1.  Thanh ghi RCSTA (địa chỉ 18h): xác định các trang thái trong quá trình nhận dữ liệu.3 TRUYỀN DỮ LIỆU QUA CHUẨN GIAO TIẾP USART ĐỒNG BỘ SLAVE MODE Nhóm: Trịnh Hoàng Long. set bit CREN.12. Các thanh ghi liên quan đến quá trình nhận dữ liệu bằng giao diện USART đồng bộ Master mode:  Thanh ghi INTCON (địa chỉ 0Bh.2. 6. Các thanh ghi liên quan đến quá trình truyền dữ liệu bằng giao diện USART đồng bộ Master mode:  Thanh ghi INTCON (địa chỉ 0Bh. Thanh ghi PIE1 (địa chỉ 8Ch): chứa bit cho phép ngắt truyền TXIE.  Thanh ghi SPBRG (địa chỉ 99h): quyết định tốc độ baud.  Thanh ghi PIR1 (địa chỉ 0Ch): chứa cờ hiệu RCIE. Nếu cần sử dụng ngắt nhận dữ liệu. xóa lỗi bằng cách xóa bit CREN.12. Nếu sử dụng ngắt nhận cần set bit GIE và PEIE (thanh ghi INTCON). bit điều khiển CREN sẽ được ưu tiên.  Thanh ghi TXREG (địa chỉ 19h): thanh ghi chứa dữ liệu cần truyền. set bit SREN. 2. 6. Các bước cần tiến hành khi nhận dữ liệu bằng giao diện USART đồng bộ Master mode: 1. Thiết lập tốc độ baud (đưa giá trị thích hợp vào thanh ghi SPBRG và bit BRGH).2. 2. kể cả các cờ hiệu. Phan Thanh Tiến 42 . bit RCIF sẽ được set và ngắt được kích hoạt (nếu bit RCIE được set). Đọc giá trị thanh ghi RCSTA để đọc bit dữ liệu thứ 9 và kiểm tra xem quá trình nhận dữ liệu có bị lỗi không. 7.

4. 18Bh): cho phép tất cả các ngắt. 7.  Thanh ghi RCSTA (địa chỉ 18h): chứa bit cho phép cổng truyền dữ liệu (hai pin  RC6/TX/CK và RC7/RX/DT). Set bit TXEN.1.  Thanh ghi TXREG (địa chỉ 19h): thanh ghi chứa dữ liệu cần truyền. SPEN và clear bit CSRC. ngắt sẽ được thực thi và vi điều khiển được “đánh thức. Set bit CREN để cho phép quá trình nhận dữ liệu bắt đầu. 6. Thanh ghi PIE1 (địa chỉ 8Ch): chứa bit cho phép ngắt truyền TXIE. Nếu định dạng dữ liệu là 9 bit. set bit RX9. 5. 7.4 NHẬN DỮ LIỆU QUA CHUẨN GIAO TIẾP USART ĐỒNG BỘ SLAVE MODE Sự khác biệt của Slave mode so với Master mode chỉ thể hiện rõ ràng khi vi điều khiển hoạt động ở chế độ sleep. Đưa bit dữ liệu thứ 9 vào bit TX9D trước (nếu định dạng dữ liệu là 9 bit). ngắt này sẽ đánh thức vi điều khiển và nếu toàn bộ các ngắt được cho phép hoạt động. Cho phép cổng giao tiếp USART bất đồng bộ (set bit SYNC. Word dữ liệu đầu tiên sẽ ngay lập tức được đưa vào thanh ghi TSR để truyền đi. 5. 4. 1 word dữ liệu vẫn được tiếp tục nhận.  Thanh ghi TXSTA (địa chỉ 98h): xác lập các thông số cho giao diện. Đưa 8 bit dữ liệu vào thanh ghi TXREG. Khi bit CREN (cho phép nhận chuỗi dữ liệu) được set trước khi lệnh sleep được thực thi. Các bước cần tiến hành khi truyền dữ liệu bằng giao diện USART đồng bộ Slave mode: 1. bit RCIF sẽ được set và ngắt được kích hoạt (nếu bit RCIE được set). 3. Sau khi word dữ liệu đầu tiên đã dịch ra khỏi thanh ghi TSR.12. Tuy nhiên khi vi điều khiển đang ở trạng thái sleep. Nếu ngắt truyền được sử dụng. Phan Thanh Tiến 43 . Các thanh ghi liên quan đến quá trình truyền dữ liệu bằng giao diện USART đồng bộ Slave mode:  Thanh ghi INTCON (địa chỉ 0Bh. set bit TXIE. Cờ hiệu TXIF sẽ không được set. 2. sự khác biệt được thể hiện rõ ràng. thanh ghi TXREG tiếp tục truyền word thứ hai vào thanh ghi TSR và cờ hiệu TXIF được set. 2. Trần Thanh Hiền.  Thanh ghi SPBRG (địa chỉ 99h): quyết định tốc độ baud. Nếu cần sử dụng ngắt nhận dữ liệu. Đọc giá trị thanh ghi RCSTA để đọc bit dữ liệu thứ 9 và kiểm tra xem quá trình nhận dữ liệu có bị lỗi không. set bit GIE và PEIE (thanh ghi INTCON). 3. 3. Nếu ngắt truyền được cho phép hoạt động. Nhóm: Trịnh Hoàng Long. 2. sau khi nhận xong bit thanh ghi RSR sẽ chuyển dữ liệu vào thanh ghi RCREG và bit RCIF được set. Nếu bit RCIE (cho phép ngắt nhận) đã được set trước đó. 8Bh. set bit TX9. Word dữ liệu thứ hai vẫn nằm trong thanh ghi TXREG. 5. Ngoài ra chế độ Slave mode không quan tâm tới bit SREN. Clear bit CREN và SREN. SPEN clear bit CSRC).  Thanh ghi PIR1 (địa chỉ 0Ch): chứa cờ hiệu TXIF. 8. set bit RCIE. Các bước cần tiến hành khi nhận dữ liệu bằng giao diện USART đồng bộ Slave mode: 1. Đọc 8 bit dữ liệu từ thanh ghi RCREG. 4. bộ đếm chương trình sẽ chỉ tới địa chỉ chứa chương trình ngắt (0004h). Sau khi dữ liệu được nhận. Nếu dữ liệu truyền nhận có định dạng là 9 bit. bộ đếm chương trình sẽ chỉ đến địa chỉ 0004h và chương trình ngắt sẽ được thực thi. 10Bh. 2.2. Set bit SYNC. Nếu có hai word dữ liệu được đưa vào thanh ghi TXREG trước khi lệnh sleep được thực thi thì quá trình sau sẽ xảy ra: 1. Nếu cần sử dụng ngắt. 6.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI Quá trình này không có sự khác biệt so với Master mode khi vi điều khiển hoạt động ở chế độ bình thường.

Các thông số cần thiết lập bao gồm: Nhóm: Trịnh Hoàng Long. do đó dữ liệu ghi vào thanh ghi SSPBUF sẽ lập tức được ghi vào thanh ghi SSPSR. dữ liệu truyền đi hoặc nhận được sẽ được đưa vào tranh ghi này. Trần Thanh Hiền. SSPBUF không có cấu trúc đệm hai lớp (doubled. chuyển đổi ADC.  Thanh ghi PIE1 (địa chỉ 8Ch): chứa bit cho phép ngắt RCIE. Thanh ghi trạng thái SSPSTAT. Phan Thanh Tiến 44 .buffer).2 MSSP MSSP ( Master Synchronous Serial Port) là giao diện đồng bộ nối tiếp dùng để giao tiếp với các thiết bị ngoại vi (EEPROM. đồng thời ngắt sẽ xảy ra.  Thanh ghi SPBRG (địa chỉ 99h): điều khiển tốc độ baud. Các thanh ghi liên quan đến quá trình nhận dữ liệu bằng giao diện USART đồng bộ Slave mode:  Thanh ghi INTCON (địa chỉ 0Bh. Các thanh ghi điều khiển giao chuẩn giao tiếp này bao gồm thanh ghi trạng thái SSPSTAT và hai thanh ghi điều khiển SSPSON và SSPSON2. xóa lỗi bằng cách xóa bit CREN. 18Bh): chứa các bit cho phép toàn bộ các ngắt (bit GIER và PEIE). Thanh ghi dịch dữ liệu SSPSR dùng để dịch dữ liệu vào hoặc ra. RC3/SCK/SCL: xung đồng bộ nối tiếp (Serial Clock). RA5/AN4/SS/C2OUT: chọn đối tượng giao tiếp (Serial Select) khi giao tiếp ở chế độ Slave mode. 2. Thanh ghi PIR1 (địa chỉ 0Ch): chứa cờ hiệu RCIE. thanh ghi này cho phép đọc và ghi.  Thanh ghi RCSTA (địa chỉ 18h): xác định các trang thái trong quá trình nhận dữ liệu. thanh ghi này chỉ cho phép đọc và ghi ở 2 bit trên. Ta cần sữ dụng 4 pin cho chuẩn giao tiếp này: RC5/SDO: ngõ ra dữ liệu dạng nối tiếp (Serial Data output). Thanh ghi đóng vai trò là buffer truyền nhận SSPBUF.12.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI 8.1 SPI Chuẩn giao tiếp SPI cho phép truyền nhận đồng bộ. MSSP có thể hoạt động dưới hai dạng giao tiếp: SPI (Serial Pheripheral Interface).12. 9. dữ liệu sẽ từ thanh ghi SSPSR chuyển qua thanh ghi SSPBUF và cờ hiệu được set.  Thanh ghi TXSTA (địa chỉ 98h): chứa các bit điều khiển SYNC và BRGH. …) hay các vi điều khiển khác. Nếu quá trình truyền nhận có lỗi xảy ra. Các thanh ghi liên quan đến MSSP khi hoạt động ở chuẩn giao tiếp SPI bao gồm: Thanh ghi điều khiển SSPCON.2.  Thanh ghi RCREG (địa chỉ 1Ah): chứa dữ liệu nhận được. 2. 8Bh. Tùy theo chuẩn giao tiếp được sử dụng (SPI hay I2C) mà chức năng các thanh ghi này được thể hiện khác nhau. ghi dịch. Nếu sử dụng ngắt nhận cần set bit GIE và PEIE (thanh ghi INTCON). Khi 1 byte dữ liệu được nhận hoàn chỉnh. I2C (Inter-Intergrated Circuit). 6 bit còn lại chỉ cho phép đọc. Khi sử dụng chuẩn giao tiếp SPI trước tiên ta cần thiết lập các chế độ cho giao diện bằng cách đưa các giá trị thích hợp vào hai thanh ghi SSPCON và SSPSTAT. RC4/SDI/SDA: ngõ vào dữ liệu dạng nối tiếp (Serial Data Input). 10Bh.

đồng thời cờ ngắt SSPIF (PIR1<3>) cũng được set. Phan Thanh Tiến 45 . Cụ thể như sau: RC4/SDI/SDA sẽ tự động được điều khiển bởi khối giao itếp SPI. Một điều cần chú ý nữa là thanh ghi SSPSR không cho phép truy xuất trực tiếp mà phải thông qua thanh ghi SSPBUF. Khi quá trình truyền nhận dữ liệu đang diễn ra. Cổng giao tiếp của giao diện SPI được điều khiển bởi bit SSPEN (SSPSON<5>). Thao tác ghi dữ liệu này sẽ set bit WCON (SSPCON<7>). Các chế độ của Slave mode. Đối với Master mode. Quá trình truyền dữ liệu cũng hoàn toàn tương tự nhưng ngược lại. Bit BF sẽ tự động reset về 0 khi dữ liệu trong thanh ghi SSPBUF được đọc vào.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI Master mode hay Slave mode. Dữ liệu sẽ được dịch vào hoặc ra qua thanh ghi SSPSR. Khi SPI ở dạng Slave mode. Ngắt sẽ xảy ra khi quá trình dịch dữ liệu hoàn tất. ta không được phép ghi dữ liệu vào thanh ghi SSPBUF. Hai thanh ghi này tạo thành bộ đệm dữ liệu kép (doubled-buffer). Set bit TRISC<4> để cho phép chân nhận tín hiệu điều khiển truy xuất dữ liệu khi SPI ở chế độ Slave mode. Thời điểm xác định mức logic của dữ liệu (ở giữa hay ở cuối thời gian 1 bit dữ liệu được đưa vào). Tuy nhiên ta nên đọc trước dữ liệu từ thanh ghi SSPBUF trước khi nhận byte dữ liệu tiếp theo. Master mode. dữ liệu sẽ được đưa vào thanh ghi SSPBUF. RS5/SDO là ngõ ra dữ liệu. khi dữ liệu đưa vào từ chân RC4/SDI/SDA trong thanh ghi SSPSR đã sẵn sàng (đã nhận đủ 8 bit). do đó cần clear bit TRISC<5>. Tuy nhiên dữ liệu trước khi được đưa ra ngoài phải được cho phép bởi tín hiệu từ chân . khi đó cờ hiệu BF được set. Slave mode và các chế độ của Slave mode được điều khiển bởi các bit SSPM3:SSPM0 (SSPCON<3:0>). xung clock đồng bộ sẽ được nhận từ bên ngoài qua chân RC3/SCK/SCL. Đối với Slave mode. Mức logic của xung clock khi ở trang thái tạm ngưng quá trình truyền nhận (Idle). Dữ liệu cần truyền sẽ được đưa vào thanh ghi SSPBUF đồng thời đưa vào thanh ghi SSPSR. cần clear bit TRISC<3> để cho phép đưa xung clock đồng bộ ra chân RC3/SCK/SCL. Khi SPI ở dạng Master mode. Sơ đồ kết nối của chuẩn giao tiếp SPI như sau: Nhóm: Trịnh Hoàng Long. Chân này đóng vai trò chọn đối tượng giao tiếp khi SPI ở chế độ Slave mode. Bộ đệm kép cho phép đọc tiếp byte tiếp theo trước khi byte dữ liệu trước đó được đọc vào. Tốc độ xung clock (khi hoạt động ở Master mode). bit chỉ thị trạng thái bộ đệm BF (SSPSTAT<0>) sẽ được set để báo hiệu bộ đệm đã đầy. Đây là một trong những điểm khác biệt giữ hai giao diện MSSP và USART (USART dịch bit LSB trước). bit MSB được dịch trước. Cạnh tác động của xung clock đồng bộ (cạnh lên hay cạnh xuống). Trong quá trình nhận dữ liệu. Dữ liệu được dịch từ thanh ghi SSPSR và đưa ra ngoài qua chân RC5/SDO. Trần Thanh Hiền. cần set bit TRISC<3> để cho phép nhận xung clock đồng bộ từ bên ngoài qua chân RC3/SCK/SCL. Bên cạnh đó cần điều khiển chiều xuất nhập của PORTC thông qua thanh ghi TRISC sao cho phù hợp với chiều của giao diện SPI. xung clock đồng bộ sẽ đi ra từ chân RC3/SCK/SCL. MSSP bao gồm một thanh ghi dịch dữ liệu SSPSR và thanh ghi đệm dữ liệu SSPBUF.

2.1 SPI MASTER MODE. khối Master sẽ bắt đầu quá trình truyền nhận dữ liệu bằng cách gửi tín hiệu xung đồng bộ SCK. Sau khi nhận được một byte dữ liệu hoàn chỉnh. ta có thể ấn định chân SDO là ngõ vào (set bit TRISC<5>). bit BF được set và ngắt xảy ra. Ở chế độ Master mode. byte dữ liệu sẽ được đưa dào thanh ghi SSPBUF. Trần Thanh Hiền. Slave mode hoạt động ngay cả khi vi Nhóm: Trịnh Hoàng Long. cờ ngắt SSPIF sẽ được set.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI Theo sơ đồ kết nối này. Dữ liệu sẽ được dịch vào thanh ghi SSPSR theo một tốc độ được định sẵn cho xung clock đồng bộ. Khi truyền nhận xong bit dữ liệu cuối cùng. Phan Thanh Tiến 46 . Cả hai khối Master và Slave nên được ấn định chung các qui tắc tác động của xung clock đồng bộ để dữ liệu có thể dịch chuyển đồng thời.12. trạng thái của quá trình sẽ được giữ nguyên và tiếp tục sau khi vi điều khiển được đánh thức. Dữ liệu sẽ được truyền nhận ngay thời điểm dữ liệu được đưa vào thanh ghi SSPBUF. Nếu chỉ cần nhận dữ liệu.2. Giản đồ xung của Master mode và các tác động của các bit điều khiển được trình bày trong hình vẽ sau: Ở chế độ này SPI sẽ truyền và nhận dữ liệu khi có xung đồng bộ xuất hiện ở chân SCK. Khi lệnh SLEEP được thực thi trong quá trình truyền nhận.1. Dữ liệu sẽ dịch từ cả hai thanh ghi SSPSR đưa ra ngoài nếu có một cạnh của xung đồng bộ tác động và ngưng dịch khi có tác động của cạnh còn lại. vi điều khiển có quyền ấn định thời điểm trao đổi dữ liệu (và đối tượng trao đổi dữ liệu nếu cần) vì nó điều khiển xung clock đồng bộ.

 Thanh ghi PIR1 (địa chỉ 0Ch): chứa ngắt SSPIE. Khi chân ở mức thấp. Các thanh ghi liên quan đến I2C bao gồm:  Thanh ghi SSPCON và SSPCON2: điều khiển MSSP. 2. I2C sẽ sử dụng 2 pin để truyền nhận dữ liệu: `RC3/SCK/SCL: chân truyền dẫn xung clock. Chuẩn giao tiếp I2C cũng có hai chế độ Master. Thanh ghi TRISC (địa chỉ 87h): điều khiển xuất nhập PORTC.  Thanh ghi TRISA (địa chỉ 85h):điều khiển xuất nhập chân . đồng thời SPI được reset (bộ đếm bit dữ liệu được gán giá trị 0). Tuy nhiên I2C còn có thêm khối phát hiện bit Start và bit Stop của dữ liệu (Start and Stop bit detect) và khối xác định địa chỉ (Match detect).  Thanh ghi SSPCON (địa chỉ 14h): điều khiển chuẩn giao tiếp SPI. Phan Thanh Tiến 47 . Khi chỉ cần nhận dữ liệu. chân RC5/SDO được cho phép xuất dữ liệu và khi ở mức cao. Slave mode cho phép sự tác động của chân điều khiển (SSPCON<3:0> = 0100). 10Bh. và ngắt truyền nhận cho phép “đánh thức” vi điều khiển.  Thanh ghi SSPBUF (địa chỉ 13h): thanh ghi đệm dữ liệu. Nhóm: Trịnh Hoàng Long.2 I2C Đây là một dạng khác của MSSP. ta có thể ấn định RC5/SDO là ngõ vào (set bit TRISC<5>).  Thanh ghi SSPSTAT (địa chỉ 94h): chứa các bit chỉ thị trạng thái chuẩn giao tiếp SPI. dữ liệu ra ở chân RC5/SDO bị khóa.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI điều khiển đang ở chế độ sleep. 18Bh): chứa bit cho phép toàn bộ các ngắt (GIE và PEIE).12. Slave và cũng được kết nối với ngắt. RC4/SDI/SDA: chân truyền dẫn dữ liệu. Các thanh ghi liên quan đến chuẩn giao tiếp SPI bao gồm:  Thanh ghi INTCON (địa chỉ 0Bh. 8Bh. Trần Thanh Hiền.  Thanh ghi PIE1 (địa chỉ 8Ch): chứa bit cho phép ngắt SSPIE.2. Các khối cơ bản trong sơ đồ khối của I2C không có nhiều khác biệt so với SPI.

bao gồm:  I2C Master mode. Khi địa chỉ này chỉ đến vi điều khiển.2. các pin SCL và SDA sẽ ở trạng thái cực thu hở. Khi hoạt động ở Master mode. Sau khi nhân được tín hiệu bắt đầu hoạt động (cạnh xuống đầu tiên của pin SDA). I2C của vi điều khiển sẽ được điều khiển bởi một vi điều khiển hoặc một thiết bị ngoại vi khác thông qua các địa chỉ. 6 bit còn lại chỉ cho phép đọc. bên cạnh đó cần ấn định các giá trị phù hợp cho các bit TRISC<4:3> (bit điều khiển xuất nhập các chân SCL và SDA). dữ liệu cần truyền khi được đưa vào thanh ghi SSPBUF cũng sẽ đồng thời đưa vào thanh ghi SSPSR. Do đó trong trường hợp cần thiết ta phải sử dụng điện trở kéo lên ở bên ngoài vi điều khiển.  I2C Slave mode. cho phép ngắt khi phát hiện bit Start và bit Stop. Thanh ghi SSPSTAT chỉ cho phép đọc và ghi ở 2 bit đầu.  I2C Slave mode.  Thanh ghi SSPSR: thanh ghi dịch dùng để truyền nhận dữ liệu. 2. cho phép ngắt khi phát hiện bit Start và bit Stop.  Các thanh ghi SSPCON. Phan Thanh Tiến 48 .12. nó sẽ chờ tín hiệu để bắt đầu hoạt động. 10 bit địa chỉ. Nếu kết quả so sánh bằng nhau. sau khi nhận được 1 byte dữ liệu hoàn chỉnh. quá trình truy xuất thanh ghi này phải thông qua thanh ghi SSPBUF. thanh ghi SSPADD chứa giá trị tạo ra tốc độ baud cho xung clock dùng để truyền nhận dữ liệu. Khi MSSP được kích hoạt. thanh ghi SSPSR sẽ không đưa giá trị vào thanh ghi SSPBUF. tức là I2C Master chỉ định đối tượng giao tiếp là vi điều khiển Nhóm: Trịnh Hoàng Long. còn bit SSPOV phải được xóa bằng chương trình. Trần Thanh Hiền. thanh ghi SSPSR sẽ chuyển dữ liệu vào thanh ghi SSPBUF. khi đó bit BF sẽ tự động được xóa. Khi lựa chọn giao diện I2C và khi set bit SSPEN.1 I2C SLAVE MODE. Thanh ghi SSPSR không đọc và ghi được. nhưng bit SSPIF (PIR1<3>)sẽ được set. Các bit đưa vào sẽ được lấy mẫu tại cạnh lên của xung clock. cần đọc dữ liệu từ thanh ghi SSPBUF vào trước.  I2C Slave mode. Trong các trường hợp trên. Trong quá trình truyền dữ liệu. dữ liệu 8 bit sẽ được dịch vào thanh ghi SSPSR.  Thanh ghi SSPBUF chứa dữ liệu sẽ được truyền đi hoặc nhận được và đóng vai trò như một thanh ghi đệm cho thanh ghi dịch dữ liệu SSPSR.  I2C Firmware Control Master mode. vi điều khiển sẽ tạo ra xung để báo hiệu kết thúc dữ liệu.  Thanh ghi SSPBUF: buffer truyền nhận nối tiếp.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI  Thanh ghi SSPSTAT: thanh ghi chứa các trạng thái hoạt động của MSSP. Giá trị nhận được từ thanh ghi SSPSR sẽ được so sánh với giá trị trong thanh ghi SSPADD tại cạnh xuống của xung clock thứ 8. Việc trước tiên là phải set các pin SCL và SDA là input (set bit TRISC<4:3>). Địa chỉ truyền đi sẽ bao gồm các bit địa chỉ và một bit để xác định thao tác (đọc hay ghi dữ liệu) với đối tượng cần truy xuất dữ liệu. 7 bit địa chỉ.  I2C Slvae mode.  Thanh ghi SSPADD: thanh ghi chứa địa chỉ của giao diện MSSP. thì tại thời điểm này và tại thời điểm dữ liệu đã được truyền nhận xong sau đó. giá trị trong thanh ghi SSPSR sẽ được đưa vào thanh ghi SSPBUF. Trong quá trình nhận dữ liệu.  Thanh ghi SSPADD chứa địa chỉ của thiết bị ngoại vi cần truy xuất dữ liệu của I2C khi hoạt động ở Slave mode. xung clock = fosc/4*(SSPADD+1). 7 bit địa chỉ. Để quá trình truyền nhận dữ liệu được tiếp tục. SSPCON2 cho phép đọc và ghi. I2C có nhiều chế độ hoạt động và được điều khiển bởi các bit SSPCON<3:0>. Bit SSPOV (SSPCON<6>) được set trước khi quá trình truyền nhận xảy ra (SSPOV được set trong trường hợp khi một byte khác được nhận vào trong khi dữ liệu trong thanh ghi SSPBUF trước đó vẫn chưa được lấy ra). Tuy nhiên xung sẽ không được tạo ra nếu một trong các trường hợp sau xảy ra: Bit BF (SSPSTAT<0>) báo hiệu buffer đầy đã được set trước khi quá trình truyền nhận xảy ra. 10 bit địa chỉ.2.

Byte đầu tiên có định dạng là ‘11110 A9 A8 0‘ trong đó A9. 9. Một xung được tạo ra. Bit BF tự động được set.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI đang ở chế độ Slave mode (ta gọi hiện tượng này là address match). Khi bit trong các bit địa chỉ có giá trị bằng 0 (bit này được nhận dạng sau khi các bit địa chỉ đã được nhận xong) và địa chỉ được chỉ định đúng (address match). 2. cờ ngắt SSPIF sẽ được set và phải được xóa bằng chương trình. Nhóm: Trịnh Hoàng Long. Cập nhật vào 8 bit địa chỉ thấp của thanh ghi SSPADD. 4. BF và UA được set. 7. xung clock ở chân SCL được khởi tạo và bit UA được set. Sau đó xung được tạo ra. bit UA sẽ được xóa bởi vi điều khiển để khởi tạo xung clock ở pin SCL sau khi quá trình cập nhật hoàn tất. Từng bit của byte dữ liệu sẽ được dịch ra ngoài tại mỗi cạnh xuống của xung clock. Nhận tín hiệu Start. bit BF và SSPOV sẽ được xóa về 0 và gây ra các tác động sau: 1. bit SSPIF. nếu địa chỉ nhận được là đúng (address match). Xét quá trình truyền dữ liệu. Khi đó I2C Master sẽ không được đưa xung clock vào I2C Slave cho đến khi dữ liệu ở thanh ghi SSPSR ở trạng thái wsẵn sảng cho quá trình truyền dữ liệu (dữ liệu đưa vào thanh ghi SSPBUF sẽ đồng thời được đưa vào thanh ghi SSPSR). Đầu tiên 2 bit MSB của 10 bit địa chỉ được nhận trước. Đọc giá trị thanh ghi SSPBUF (bit BF sẽ được xóa về 0) và xóa cờ ngắt SSPIF. Cập nhật 8 bit địa chỉ đã nhận được vào 8 bit địa chỉ cao của thanh ghi SSPADD. Tiếp theo cho phép xung ở pin RC3/SCK/SCL bằng cách set bit CKP (SSPCON<4>). Khi MSSP ở chế độ I2C Slave mode 10 bit địa chỉ. Đọc giá trị thanh ghi SSPBUF (bit BF sẽ được xóa về 0) và xóa cờ ngắt SSPIF. Trần Thanh Hiền. Bit (SSPSTAT<2>) phải được xóa về 0 để cho phép nhận 2 byte địa chỉ. Xem giản đồ xung của I2C để có được hình ảnh cụ thể hơn về các bước tiến hành trong quá trình nhận dạng địa chỉ. bit BF hoặc bit SSPOV sẽ được set. vi điều khiển cần phải nhận vào 10 bit địa chỉ để so sánh. Cờ ngắt SSPIF được set (ngắt được kích hoạt nếu được cho phép trước đó) tại cạnh xuống của xung clock thứ 9. sau khi 1 byte dữ liệu được nhận. Nhận byte địa chỉ cao (bit SSPIF và BF được set). 6. Khi bit SEN (SSPCON<0>) được set. xung clock từ chân RC3/SCK/SCL sẽ được đưa xuống mức thấp. 4. Nhận 8 bit địa chỉ cao. bit của thanh ghi SSPSTAT được xóa về 0 và đường dữ liệu SDI được đưa về mức logic thấp (xung ). giúp cho I2C Master nhận được dữ liệu tại mỗi cạnh lên của xung clock. xung clock ở chân RC3/SCK/SCL được đưa xuống mức thấp bất chấp trạng thái của bit SEN. muốn khởi tạo lại xung clock ta set bit CKP (SSPCON<4>). A8 là hai bit MSB của 10 bit địa chỉ. các bit địa chỉ sẽ được I2C Master đưa vào trước.9 xảy ra trong quá trình truyền dữ liệu ở chế độ Slave mode. Khi hiện tượng tràn dữ liệu xảy ra. 2. Như vậy dữ liệu sẽ sẵn sàng ở ngõ ra khi xung clock ở mức logic cao. Trong đó các bươc 7.8. bit SSPIF. khi bit trong các bit dữ liệu mang giá trị 1 và địa chỉ được chỉ định đúng (address match). Phan Thanh Tiến 49 . bit của thanh ghi SSPSTAT sẽ được set. BF và UA (SSPSTAT<1>) được set (byte địa chỉ đầu tiên có định dạng là ‘11110 A9 A8 0’) . Giá trị trong thanh ghi SSPSR được đưa vào thanh ghi SSPBUF. Byte thứ 2 là 8 bit địa chỉ còn lại. Đọc giá trị thanh ghi SSPBUF (bit BF được xóa về 0) và xóa cờ ngắt SSPIF. Như vậy trong quá trình truyền dữ liệu bit SEN không đóng vai trò quan trọng như trong quá trình nhận dữ liệu. 8. Điều này sẽ làm cho hiện tượng tràn dữ liệu không xảy ra vì bit SEN cho phép ta điều khiển được xung clock dịch dữ liệu thông qua bit CKP (tham khảo giản đồ xung để biết thêm chi tiết). 3. Quátrình nhận dạng địa chỉ của MSSP ở chế độ I2C Slave mode 10 bit địa chỉ như sau: 1. Các bit địa chỉ được nhận trước và đưa vào thanh ghi SSPBUF. Ngắt sẽ xảy ra khi một byte dữ liệu được nhận xong. Xét quá trình nhận dữ liệu ở chế độ Slave mode. 3. 5.

2 I2C MASTER MODE I2C Master mode được xác lập bằng cách đưa các giá trị thích hợp vào các bit SSPM của thanh ghi SSPCON và set bit SSPEN. các pin SCK và SDA sẽ được điều khiển bởi phần cứng của MSSP. Trong trường hợp xung được chốt bởi I2C Slave. kết thúc bằng điều kiện Stop hoặc bắt đầu và kết thúc với cùng một điều kiện khởi động lặp lại (Repeated Start Condition). Đây là một trong 8 địa chỉ đặc biệt của protocol I2C. giá trị ấn định tần số xung clock nối tiếp được lấy từ 7 bit thấp của thanh ghi SSPADD. I2C Slave sẽ chờ tín hiệu của bit Start để tiếp tục truyền byte dữ liệu tiếp theo (đưa byte dữ liệu tiếp theo vào thanh ghi SSPBUF và set bit CKP. 2.2. thanh ghi SSPSTAT sẽ được reset. Quá trình truyền nhận các bit địa chỉ cho phép I2C Master chọn lựa đối tượng I2C Slave cần truy xuất dữ liệu. pin SCL được giữ nguyên trạng thái trước đó. Khi dữ liệu được đưa vào thanh ghi SSPBUF. dữ liệu đã được dịch hoàn toàn vào I2C Master. I2C Master đóng vai trò tích cực trong quá trình giao tiếp và điều khiển các I2C Slave thông qua việc chủ động tạo ra xung giao tiếp và các điều kiện Start. Bên cạnh đó I2C còn cung cấp thêm một địa chỉ GCA (General Call Address) cho phép chọn tất cả các I2C Slave. Quá trình nhận dạng địa chỉ GCA cũng tương tự như khi nhận dạng các địa chỉ khác và không có sự khác biệt rõ ràng khi I2C hoạt động ở chế độ địa chỉ 7 bit hay 10 bit. Địa chỉ này được định dạng là một chuỗi ‘0’ với =0 và được cho phép bằng cách set bit GCEN (SSPCON2<7>). Stop khi truyền nhận dữ liệu. Khi đó địa chỉ nhận vào sẽ được so sánh với thanh ghi SSPADD và với địa chỉ GCA.12.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI Tại cạnh lên xung clock thứ 9. Ngắt MSSP xảy ra khi một byte dữ liệu kết thúc quá trình truyền. bit BF được set và BRG tự động đếm ngược về 0 và dừng lại. Trần Thanh Hiền. Một byte dữ liệu có thể được bắt đầu bằng điều kiện Start. Mỗi vòng lệnh (có thời gian TCY ) BRG sẽ giảm giá trị 2 lần. Nhóm: Trịnh Hoàng Long. Xung giao tiếp nối tiếp sẽ được tạo ra từ BRG (Baud Rate Generator). Ở chế độ Master. Phan Thanh Tiến 50 .Khi dữ liệu tiếp theo được đưa vào. BRG sẽ cần một khoảng thời gian TBRG tự động reset lại giá trị để tiếp tục quá trình đếm ngược. xung sẽ được tạo ra ở I2C Master. bit SSPIF được set tại cạnh xuống của xung clock thứ 9 và phải được xóa bằng chương trình để đảm bảo sẽ được set khi byte dữ liệu tiếp theo truyền xong.2. đồng thời pin SDA sẽ được giữ ở mức logic cao.

bit SEN được tự động xóa và cờ ngắt SSPIF được set. cờ ngắt BCLIF sẽ được set và I2C sẽ ở trạng thái tạm ngưng hoạt động (Idle). pin SCL được đưa về trạng thái logic thấp trước khi pin SDA được đưa về trang thái logic thấp. Khi đó bit S (SSPSTAT<3>) sẽ được set. BRG lại bắt đầu quá trình đếm. Trong trường hợp pin SCL và SDA ở trạng thái logic thấp. pin Nhóm: Trịnh Hoàng Long.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI Các giá trị cụ thể của tần số xung nối tiếp do BRG tạo ra được liệt kê trong bảng sau: Trong đó giá trị BRG là giá trị được lấy từ 7 bit thấp của thanh ghi SSPADD. thay vào đó chức năng của SSPADD là thanh ghi chứa giá trị của BRG. pin SDA cũng được đưa xuống mức thấp. Sau cạnh xuống của xung clock thứ 9 và với tác động của bit điều khiển PEN. điều kiện Start sẽ không được hình thành. thanh ghi SSPADD sẽ không được sử dụng để chứa địa chỉ. Phan Thanh Tiến 51 . Trạng thái pin SDA ở mức logic thấp và pin SCL ở mức logic cao chính là điều kiện Start của I2C Master mode. Khi đó BRG sẽ tự động đọc giá trị 7 bit thấp của thanh ghi SSPADD và bắt đầu đếm. pin SDA được đưa xuống mức logic thấp. Trần Thanh Hiền. Tín hiệu Stop sẽ được đưa ra pin SDA khi kết thức dữ liệu bằng cách set bit PEN (SSPCON2<2>). Tiếp theo BRG tiếp tục lấy giá trị từ thanh ghi SSPADD để tiếp tục quá trình đếm. trước hết cần đưa hai pin SCL và SDA lên mức logic cao và bit SEN (SSPCON2<0>) phải được set. Do I2C ở chế độ Master mode. Sau một khoảng thời gian TBRG. Để tạo được điều kiện Start. hoặc là trong quá trình tạo điều kiện Start. Sau khoảng thời gian TBRG.

sau đó ta chỉ việc đưa tiếp địa chỉ hoặc dữ liệu tiếp theo vào thanh ghi SSPBUF mỗi khi nhận được tín hiệu từ I2C Slave. pin SDA lại được đưa xuống mức logic thấp trong khi SCL vẫn được giữ ở mức logic cao. Cần chú ý là bất cứ một trình tự nào sai trong quá trình tạo điều kiện Start lặp lại sẽ làm cho bit BCLIF được set và I2C được đưa về trạng thái “Idle”. Lúc này địa chỉ của I2C Slave có thể được đưa vào thanh ghi SSPBUF. BRG lấy giá trị từ thanh ghi SSPADD vào để bắt đầu quá trình đếm.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI SCL được đưa lên mức logic cao và sau một khoảng thời gian TBRG nữa pin SDA cũng được đưa lên mức cao. Để tạo được diều kiện Start lặp lại liên tục trong quá trình truyền dữ liệu. bit BF tự động được set lên 1 và bộ đếm tạo xung clock nối tiếp BRG (Baud Rate Generator) bắt đầu hoạt động. Sau một khoảng thời gian TBRG nữa. pin SCL được đưa xuống mức logic thấp. Ngay thời điểm đó bit S (SSPSTAT<3>) được set để báo hiệu điều kiện Start được hình thành. nghĩa là điều kiện Stop đã được tạo ra. Phan Thanh Tiến 52 . Ngay tại thời điểm đó bit P (SSPSTAT<4>) được set. bộ đếm BRG mang giá trị 0. Trong khoảng thời gian TBRG kế tiếp. pin SDA được đưa lên mức logic cao. Sau khi set bit RSEN. bit PEN tự động được xóa và cờ ngắt SSPIF được set. Đầu tiên các giá trị địa chỉ sẽ được đưa vào thanh ghi SSPBUF. Trần Thanh Hiền. Khi đó từng bit dữ liệu (hoặc địa chỉ và bit ) sẽ được dịch ra ngoài theo từng cạnh xuống của xung clock sau khi cạnh xuống đầu tiên của pin SCL được nhận diện (điều kiện Start). bit RSEN tự động được xóa và cờ ngắt SSPIF sẽ được set sau một khoảng thời gian TBRG nữa. Khi tất cả các bit của byte dữ liệu được đã được đưa ra ngoài. Byte dữ liệu đầu tiên phải là byte địa chỉ xác định I2C Slave cần giao tiếp và bit (trong trường hợp này = 0). BRG bắt đầu đếm ngược về 0. pin SCL cũng được đưa lên mức logic cao trong khoảng thời gian TBRG tiếp theo. I2C Master sẽ tự động tạo tín hiệu Start lặp lại liên tục cho quá trình truyền dữ liệu liên tục. Sau đó. Xét quá trình truyền dữ liệu. tại cạnh xuống của xung clock thứ 8. trước hết cần set bit RSEN (SSPCON2<1>). Sau khoảng thời gian TBRG. I2C Master sẽ ngưng tác động lên pin SDA để chờ đợi tín hiệu từ I2C Slave (tín Nhóm: Trịnh Hoàng Long. xung clock sẽ được đưa ra từ pin SCL và dữ liệu được đưa ra từ pin SDA.

Xét quá trình nhận dữ liệu ở chế độ I2C Master mode. bit BF được tự động clear. dữ liệu hoặc địa chỉ sẽ tiếp tục được truyền đi tại cạnh xuống của xung clock tiếp theo. Phan Thanh Tiến 53 . BRG ngưng đếm và pin SCL được đưa về mức logic thấp. bit cờ hiệu cho phép nhận RCEN tự động được xóa. Tại cạnh xuống của xung clock thứ 8. trạng thái được đưa vào bit ACKSTAT (SSPCON2<6>).Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI hiệu xung ). dữ liệu sẽ được dịch vào I2C Master qua pin SDA tại cạnh xuống của pin SCL. Nhóm: Trịnh Hoàng Long. Trước tiên ta cần set bit cho phép nhận dữ liệu RCEN (SSPCON2<3>). I2C Master sẽ lấy mẫu tín hiệu từ pin SDA để kiểm tra xem địa chỉ đã được I2C Slave nhận dạng chưa. Khi đó BRG bắt đầu quá trình đếm. cờ hiệu BF được set. dữ liệu trong thanh ghi SSPSR được đưa vào thanh ghi SSPBUF. cờ hiệu BF tự động được xóa. Tại cạnh xuống của xung clock thứ 9. Cũng tại thời điểm cạnh xuống của xung clock thứ 9. Sau khi đọc giá trị thanh ghi SSPBUF. Ta còn có thể gửi tín hiệu bằng cách set bit ACKEN (SSPCON2<4>). Khi đó MSSP ở trạng thái tạm ngưng hoạt động để chờ đợi lệnh tiếp theo. Trần Thanh Hiền. cờ ngắt SSPIF được set và BRG tạm ngưng hoạt động cho tới khi dữ liệu hoặc địa chỉ tiếp theo được đưa vào thanh ghi SSPBUF. cờ ngắt SSPIF được set.

5. Trần Thanh Hiền. EECON sẽ điều khiển quá trình ghi lên toàn bộ nhớ chương 10: chỉ chống từ địa chỉ 0000h:00FFh. 54 Nhóm: Trịnh Hoàng Long. 0: Bật chức năng bảo vệ mã.14 TỔNG QUAN VỀ MỘT SỐ ĐẶC TÍNH CỦA CPU. RB7 và RB6 được xem như các pin xuất nhập bình thường. Bit 12. pin RB3/PGM được sử dụng cho chế độ này.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI 2. Phan Thanh Tiến . RB7 và RB6 là các pin được sử dụng cho quá trình debug. Chi tiết về các bit này như sau:          trình. 01: chỉ chống ghi từ địa chỉ 0000h:07FFh.1 CONFIGURATION BIT Đây là các bit dùng để lựa chọn các đặc tính của CPU. Bit 7 LVP Low-Voltage (Single supply) In-Circuit Serial Programming Enable bit 1: Cho phép chế độ nạp điện áp thấp.         Bit 13 CP: (Code Protection) 1: tắt chế độ bảo vệ mã chương trình. Bit 8 CPD Data EEPROM Memory Write Protection bit 1: Tắt chức năng bảo vệ mã của EEPROM.14. Bit 10-9 WRT1:WRT0 Flash Program Memory Write Enable bit 11: Tắt chức năng chống ghi. 4: không quan tâm và được mặc định mang giá trị 0. 2. 00: chỉ chống ghi từ địa chỉ 0000h:0FFFh. Các bit này được chứa trong bộ nhớ chương trình tại địa chỉ 2007h và chỉ có thể được truy xuất trong quá trình lập trình cho vi điều khiển. 0: bật chế độ bảo vệ mã chương trình. Bit 11 DEBUG (In-circuit debug mode bit) 1:không cho phép. 0:cho phép.

 Bit 6 BODEN Brown-out Reset Enable bit  1: cho phép BOR (Brown-out Reset)  0: không cho phép BOR. Các linh kiện sử dụng cho mạch RC oscillator phải bảo đảm các giá trị sau: 3 K < REXT < 100 K CEXT >20 pF 2. XT. pin RB3 là pin I/O bình thường. đó là: LP: (Low Power Crystal). Đối với các loại oscillator LP. Đối với các ứng dụng không cần các loại oscillator tốc độ cao. Brown-out reset (BOR). reset trong quá trình hoạt động. chất lượng của các linh kiện. Trần Thanh Hiền.2 CÁC ĐẶC TÍNH CỦA OSCILLATOR PIC16F877A có khả năng sử dụng một trong 4 loại oscillator. từ chế độ sleep. Bit 1-0 FOSC1:FOSC0 lựa chọn loại oscillator  11: sử dụng RC oscillator.14. điện áp cao được đưa vào từ pin.  00: sử dụng LP oscillator. Phan Thanh Tiến 55 . Tần số tạo ra phụ thuộc vào các giá trị điện áp. bên cạnh đó là sự ảnh hưởng của các yếu tố như nhiệt độ. 2.  10: sử dụng HS oscillator.3 CÁC CHẾ ĐỘRESET Có nhiều chế độ reset vi điều khiển. Ngoại trừ reset POR trạng thái các thanh ghi là không xác định vàWDT wake up không ảnh hưởng đến trạng thái các thanh ghi.  Bit 3 Power-up Timer Enable bit  1: không cho phép PWR.  Bit 2 WDTEN Watchdog Timer Enable bit  1: cho phép WDT.  0: cho phép PWR. Chi tiết về các đặc tính sẽ được đề cập cụ thể trong các phần tiếp theo. bao gồm: Power-on Reset POR (Reset khi cấp nguồn hoạt động cho vi điều khiển). oscillator được gắn vào vi điều khiển thông qua các pin OSC1/CLKI và OSC2/CLKO.  0: không cho phép WDT. WDT reset (reset do khối WDT tạo ra trong quá trình hoạt động). HS.  01: sử dụng XT oscillator.14. giá trị điện trở và tụ điện. RC: (Resistor/Capacitor) dao động do mạch RC tạo ra. WDT wake up từ chế độ sleep. ta có thể sử dụng mạch dao động RC làm nguồn cung cấp xung hoạt động cho vi vi điều khiển.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI  0: Không cho phép chế độ nạp điện áp thấp. XT: Thạch anh bình thường. các chế độ reset còn lại đều đưa giá trị các thanh ghi về Nhóm: Trịnh Hoàng Long. HS: (High-Speed Crystal).

R2 phải lớn hơn 1 K để hạn dòng đi vào vi điều khiển. BOR được kích hoạt và vi điều khiển được đưa về trạng thái BOR reset.  Đến thời điểm này vi điều khiển mới bắt đầu hoạt động bình thường.  OST (nếu được cho phép) tạo ra khoảng thời gian delay bằng 1024 chu kì xung của oscillator để ổn định tần số của oscillator. Khi vi điều khiển đủ điện áp hoạt động.  PWRT (nếu được cho phép hoạt động) tạo ra khoảng thời gian delay TPWRT để ổn định nguồn cung cấp. HS và LP. vi điều khiển sẽ không được reset. vi điều khiển cần được đảm bảo các thông số về dòng điện. PWRT cũng sẽ hoạt động bất chấp trạng thái của bit PWRT. reset: Khi pin ở mức logic thấp. Nếu điện áp cung cấp cho vi điều khiển hạ xuống thấp hơn VBOR trong khoảng thời gian ngắn hơn TBOR. trạng thái reset của vi điều khiển và được điều khiển bởi CPU. reset còn được chống nhiễu bởi một bộ lọc để tránh các tín hiệu nhỏ tác động lên pin .Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI giá trị ban đầu được ấn định sẵn. Nhưng nếu các tham số này không được đảm bảo. Brown-out reset (BOR): Nếu VDD hạ xuống thấp hơn giá trị VBOR (khoảng 4V) và kéo dài trong khoảng thời gian lớn hơn TBOR (khoảng 100 us). vi điều khiển sẽ được đưa về trạng thái reset. Tóm lại để vi điều khiển hoạt động được từ khi cấp nguồn cần trải qua các bước sau:  POR tác động. R1 phải nhỏ hơn 40 K để đảm bảo các đặc tính điện của vi điều khiển. Một điểm cần chú ý là khi BOR reset được cho phép. xung reset do POR tạo ra sẽ đưa vi điều khiển về trạng thái reset và chỉ tiếp tục hoạt động khi nào các tham số trên được đảm bảo. Khi PWRT được kích hoạt.  Thanh ghi điều khiển và chỉ thị trạng thái nguồn cung cấp cho vi điều khiển là thanh ghi PCON Nhóm: Trịnh Hoàng Long. Trần Thanh Hiền. Phan Thanh Tiến 56 . Tín hiệu reset được cung cấp bởi một mạch ngoại vi với các yêu cầu cụ thể sau: Không nối pin trực tiếp lên nguồn VDD. PWRT sẽ tạo ra một khoảng thời gian delay (khoảng 72 ms) để VDD tăng đến giá trị thích hợp. OST chỉ tác động đối với các lọai oscillator là XT. điện áp để hoạt động bình thường. PWRT được kích hoạt để tạo ra một khoảng thời gian delay (khoảng 72ms). Nếu trong khoảng thời gian này điện áp cung cấp cho vi điều khiển lại tiếp tục hạ xuống dưới mức điện áp VBOR. Power-up Timer (PWRT): đây là bộ định thời hoạt động dựa vào mạch RC bên trong vi điều khiển. Tác động của OST còn xảy ra đối với POR reset và khi vi điều khiển được đánh thức từ chế đợ sleep. Khi điện áp cung cấp đủ cho vi điều khiển hoạt động. vi điều khiển sẽ được reset. Các bit và chỉ thị trạng thái hoạt động. Power-on reset (POR): Đây là xung reset do vi điều khiển tạo ra khi phát hiện nguồn cung cấp VDD. Oscillator Start-up Timer (OST): OST cung cấp một khoảng thời gian delay bằng 1024 chu kì xung của oscillator sau khi PWRT ngưng tác động (vi điều khiển đã đủ điều kiện hoạt động) để đảm bảo sự ổn định của xung do oscillator phát ra. Khi hoạt động ở chế độ bình thường. BOR reset sẽ lại được kích hoạt.

Lệnh RETFIE được dùng để thoát khỏi chương trình ngắt và quay trở về chương trình chính. Điều này nên được xử lí bằng chương trình để tránh hiện tượng trên xảy ra. Phan Thanh Tiến 57 . đồng thời bit GIE cũng sẽ được set để cho phép các ngắt hoạt động trở lại. bit GIE tự động được xóa. Các cờ hiệu được dùng để kiểm tra ngắt nào đang xảy ra và phải được xóa bằng chương trình trước khi cho phép ngắt tiếp tục hoạt động trở lại để ta có thể phát hiện được thời điểm tiếp theo mà ngắt xảy ra. Trong một thời điểm chỉ có một chương trình ngắt được thực thi. trong khi một số thanh ghi quan trọng sẽ không được cất và có thể bị thay đổi giá trị trong quá trình thực thi chương trình ngắt. Bit điều khiển ngắt RB0/INT và TMR0 nằm trong thanh ghi INTCON. Nhóm: Trịnh Hoàng Long.14. Bit điều khiển các ngắt nằm trong thanh ghi PIE1 và PIE2. chỉ có giá trị của bộ đếm chương trình được cất vào trong Stack. chương trình ngắt được kết thúc bằng lệnh RETFIE. Cờ ngắt của các ngắt nằm trong thanh ghi PIR1 và PIR2.4 NGẮT (INTERRUPT) PIC16F877A có đến 15 nguồn tạo ra hoạt động ngắt được điều khiển bởi thanh ghi INTCON (bit GIE). việc xác định ngắt nào xảy ra cần 3 hoặc 4 chu kì lệnh tùy thuộc vào thời điểm xảy ra ngắt. Các cờ ngắt vẫn được set bình thường khi thỏa mãn điều kiện ngắt xảy ra bất chấp trạng thái của bit GIE. Bên cạnh đó mỗi ngắt còn có một bit điều khiển và cờ ngắt riêng. địa chỉ lệnh tiếp theo của chương trình chính được cất vào trong bộ nhớ Stack và bộ đếm chương trình sẽ chỉ đến địa chỉ 0004h. Khi chương trình ngắt được thực thi. Đối với các ngắt ngoại vi như ngắt từ chân INT hay ngắt từ sự thay đổi trạng thái các pin của PORTB (PORTB Interrupt on change). Cần chú ý là trong quá trình thực thi ngắt.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI 2. tuy nhiên hoạt động ngắt vẫn phụ thuôc vào bit GIE và các bit điều khiển khác. Trần Thanh Hiền. thanh ghi này còn chứa bit cho phép các ngắt ngoại vi PEIE.

WDT còn được hỗ trợ một bộ chia tần số prescaler được điều khiển bởi thanh ghi OPTION_REG (prescaler này được chia xẻ với Timer0). Một điểm cần chú ý nữa là lệnh sleep sẽ xóa bộ đếm WDT và prescaler.2 NGẮT DO SỰ THAY ĐỔI TRẠNG THÁI CÁC PIN TRONG PORTB Các pin PORTB<7:4> được dùng cho ngắt này và được điều khiển bởi bit RBIE (thanh ghi INTCON<4>). 2.14. Điều đó có nghĩa là WDT vẫn hoạt động ngay cả khi xung clock được lấy từ pin OSC1/CLKI và pin OSC2/CLKO của vi điều khiển ngưng hoạt động (chẳng hạn như do tác động của lệnh sleep). Ngắt này có khả năng đánh thức vi điều khiển từ chế độ sleep nếu bit cho phép ngắt được set trước khi lệnh SLEEP được thực thi. Như vậy WDT có tác dụng reset vi điều khiển ở thời điểm cần thiết mà không cần đến sự tác động từ bên ngoài. WDT sẽ tự động reset vi điều khiển (Watchdog Timer Reset) khi bộ đếm của WDT bị tràn (nếu WDT được cho phép hoạt động). Tuy nhiên khi sử dụng WDT cũng có sự phiền toái vì vi điều khiển sẽ thường xuyên được reset sau một thời gian nhất định.5 WATCHDOG TIMER (WDT) Watchdog timer (WDT) là bộ đếm độc lập dùng nguồn xung đếm từ bộ tạo xung được tích hợp sẵn trong vi điều khiển và không phụ thuộc vào bất kì nguồn xung clock ngoại vi nào.4. Phan Thanh Tiến 58 . vi điều khiển bị “kẹt” ở một chổ nào đó mà không thoát ra đươc. 2.14. Và để việc ấn định thời gian reset được linh động. Nếu vi điều khiển đang ở chế độ sleep thì WDT sẽ đánh thức vi điều khiển (Watchdog Timer Wake-up) khi bộ đếm bị tràn.1 NGẮT INT Ngắt này dựa trên sự thay đổi trạng thái của pin RB0/INT. Ngoài ra lệnh xóa CLRWDT chỉ xóa bộ đếm chứ không làm thay đổi đối tượng tác động của prescaler (WDT hay Timer0). Nhóm: Trịnh Hoàng Long. khi đó vi điều khiển sẽ tự động được reset khi WDT bị tràn ể chương trình hoạt động đúng trở lại. cờ ngắt INTF được set bất chấp trạng thái các bit điều khiển GIE và PEIE. đồng thời bit tự động được xóa. Bit điều khiển của WDT là bit WDTE nằm trong bộ nhớ chương trình ở địa chỉ 2007h (Configuration bit). Cạnh tác động gây ra ngắt có thể là cạnh lên hay cạnh xuống và được điều khiển bởi bit INTEDG (thanh ghi OPTION_ REG <6>). do đói cần tính toán thời gian thích hợp để xóa WDT (dùng lệnh CLRWDT). Trần Thanh Hiền. Khi có cạnh tác động thích hợp xuất hiện tại pin RB0/INT.14. chẳng hạn như trong quá trình thực thi lệnh. Cờ ngắt của ngắt này là bit RBIF (INTCON<0>).Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI 2.4.

 Ngắt Timer1 khi hoạt động ở chế độ đếm bất đồng bộ. Trong trường hợp lệnh tiếp theo không đóng vai trò quan trọng trong chương trình.  Tác động của USART từ các pin RX hay TX khi hoạt động ở chế độ Slave mode đồng bộ. Tạm ngưng hoạt động củ khối A/D và không cho phép các xung clock từ bên ngoài tác động vào vi điều khiển.  Ngõ ra bộ so sánh thay đổi trạng thái. Bit được reset về 0 khi WDT tác động do bộ đếm bị tràn.1 “ĐÁNH THỨC” VI ĐIỀU KHIỂN Vi điều khiển có thể được “đánh thức” dưới tác động của một trong số các hiện tượng sau:  Tác động của reset ngoại vi thông qua pin .6. Trần Thanh Hiền. bit (STATUS<3>) được reset về 0. dòng cung cấp cho vi điều khiển là rất nhỏ nên ta cần thực hiện các bước sau trước khi vi điều khiển thực thi lệnh SLEEP: Đưa tất cả các pin về trạng thái VDD hoặc VSS Cần bảo đảm rằng không cò mạch ngoại vi nào được điều khiển bởi dòng điện của vi điều khiển vì dòng điện nhỏ không đủ khả năng cung cấp cho các mạch ngoại vi hoạt động.  Tác động của WDT khi bị tràn. Tuy nhiên cũng có một số điểm cần lưu ý như sau: Nhóm: Trịnh Hoàng Long.  SSP hoạt động ở chế độ Slave mode khi truyền hoặc nhận dữ liệu. Các tác động ngoại vi khác không có tác dụng đánh thức vi điều khiển vì khi ở chế độ sleep các xung clock cung cấp cho vi điều khiển ngưng hoạt động. ta cần đặt thêm lệnh NOP sau lệnh SLEEP để bỏ qua tác động của lệnh này. Nếu bit GIE mang giá trị 0.  Ngắt CCP khi hoạt động ở chế độ Capture.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI 2.14. bit được set. đồng thời giúp ta dễ dàng hơn trong việc kiểm soát hoạt động của chương trình ngắt.6 CHẾ ĐỘ SLEEP Đây là chế độ hoạt động của vi điều khiển khi lệnh SLEEP được thực thi.  Ngắt SSP khi bit Start/Stop được phát hiện. Nếu bit GIE được set trước khi lệnh SLEEP được thực thi. Ngoài ra còn có một số nguồn tác động khác từ các chức năng ngoại vi bao gồm:  Đọc hay ghi dữ liệu thông qua PSP (Parallel Slave Port). Pin phải ở mức logic cao. vi điều khiển sẽ thực thi lệnh tiếp theo sau lệnh SLEEP của chương trình (vì chương trình ngắt không được cho phép thực thi). Bên cạnh đó cần cho phép các ngắt hoạt động trước khi lệnh SLEEP được thực thi để bảo đảm tác động của các ngắt.  Tác động từ các ngắt ngoại vi từ PORTB (PORTB Interrupt on change hoặc pin INT). Để ý đến chức năng kéo lên điện trở ở PORTB.  Khối chuyển đổi A/D khi nguồn xung clock hoạt động ở dạng RC. oscillator ngưng tác động và các PORT giữ nguyên trạng thái như trước khi lệnh SLEEP được thực thi. Bit được set khi vi điều khiển được cấp nguồn và được reset về 0 khi vi điều khiển ở chế độ sleep. Việc đánh thức vi điều khiển từ các ngắt vẫn được thực thi bất chấp trạng thái của bit GIE.  Các hiện tượng đặc biệt làm reset Timer1 khi hoạt động ở chế độ đếm bất đồng bộ dùng nguồn xung clock ở bên ngoài). 2. vi điều khiển sẽ thực thi lệnh tiếp theo của chương trình và sau đó nhảy tới địa chỉ chứa chương trình ngắt (0004h). Các bit và được dùng để thể hiện trạng thái của vi điều khiển và để phát hiện nguồn tác động làm reset vi điều khiển. Phan Thanh Tiến 59 . bộ đếm của WDT sẽ bị xóa nhưng WDT vẫn tiếp tục hoạt động.14.  Hoàn tất quá trình ghi vào EEPROM. Khi đó nếu được cho phép hoạt động. Do khi ở chế độ SLEEP.

Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI Nếu ngắt xảy ra trước khi lệnh SLEEP được thực thi..mà không phải nói đến một nghĩa rộng hơn nó Ngày nay. Bên cạnh đó ta cần xóa WDT để chắc chắn rằng WDT đã được xóa trước khi thực thi lệnh SLEEP. Mặc dù khái niệm cổng nối tiếp có thể được hiểu theo một nghĩa khác: Các cổng hoạt động theo nguyên lý “nối tiếp”. lệnh SLEEP sẽ không được thực thi và thay vào đó là lệnh NOP.. do tốc độ truyền dữ liệu chậm hơn so với các cổng mới ra đời nên các cổng nối tiếp đang dần bị loại bỏ trong các chuẩn máy tính hiện nay.. chúng được thay thế bằng các cổng có tốc độ nhanh hơn như: USB.Cổng nối tiếp còn có tên gọi khác như: Cổng COM. vi điều khiển lập tức được đánh thức từ chế độ sleep. Nếu bit vẫn mang giá trị 1 tức là lệnh SLEEP đã không được thực thi và thay vào đó là lệnh NOP. Nếu ngắt xảy ra trong khi hay sau khi lệnh SLEEP được thực thi. modem. RS-232.Là một cổng thông dụng trong các máy tính trong các máy tính truyền thống dùng kết nối các thiết bị ngoại vi với máy tính như: bàn phím. đồng thời các tác động của lệnh SLEEP cũng sẽ được bỏ qua. qua đó cho phép ta xác định được thời điểm vi điều khiển được đánh thức do tác động của WDT. CHƯƠNG III: CỔNG NỐI TIẾP I/ Cổng nối tiếp (Serial port) : . FireWire Bảng dưới đây cho thấy công dụng của các chân của một cổng nối tiếp 9 chân (9 pin) theo chuẩn AT. Để kiểm tra xem lệnh SLEEP đã được thực thi hay chưa. communication. Nhóm: Trịnh Hoàng Long. máy quét. Trần Thanh Hiền. ta kiểm tra bit . Phan Thanh Tiến 60 . chuột điều khiển. nhưng bài này chỉ nói đến các loại cổng nối tiếp được hiểu như COM. và lệnh SLEEP sẽ được thực thi ngay sau khi vi điều khiển được đánh thức..

Tuy nhiên.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI Pin 1 2 3 4 5 6 7 8 9 Tín hiệu Mô tả Trạng thái I/O CD Carrier detect In RD Receive data In TD DTR Data terminal ready Out SG Signal ground DSR Data set ready In RTS Request to send Out CTS Clear to send In RI Ring indicator In . chuẩn này được qui định trước khi xuất hiện họ logic TTL (ra đời năm 1968 )nên mức điện áp của nó không tương thích với TTL: .Ứng dụng: Ngày nay rất nhiều máy tính cá nhân nói chung cũng như máy tính xách tay nói riêng đã không còn trang bị cổng nối tiếp nữa. hiện nay bàn phím và chuột sử dụng các cổng PS/2 hoặc USB) • Modem (quay số) Ứng dụng trong các chuyên ngành khác • Kết nối với các thiết bị điều khiển (các cổng RS-232.Máy tính được thiết kế theo chuẩn RS232 (được qui định năm 1960) ..) trong ngành tự động hoá điều khiển. • Kết nối với các điện thoại thông minh II/ RS Max232: . Phan Thanh Tiến 61 . (ngay như đầu bài này đã nói) ngày nay chúng đã dần biến mất khỏi các hệ thống máy tính cá nhân. Chúng thường được tích hợp sẵn trên các bo mạch chủ thông qua chíp Super I/O (thay cho các chíp UART trước đây) để thuận tiện hơn mà không cần sử dụng các bo mạch riêng cho chúng.. Trần Thanh Hiền. (Sự biến mất của các cổng nối tiếp hiện nay trên các máy tính khiến cho nhiều kỹ thuật viên gặp khó khăn với các thiết bị điều khiển cũ) • Kết nối với các thiết bị điện tử dân dụng. RS-422. .Qui định của chuẩn RS232: • “space”(logic 0) có trị số từ +3 đến +25v • “mark”(logic 1) có trị số từ -3 đến -25v • Miền giữa -3v đến +3 v không hợp lệ • Dòng điện ngắn mạch không được vượt quá Nhóm: Trịnh Hoàng Long.Cổng nối tiếp tích hợp trên máy tính Cổng nối tiếp thường được tích hợp sẵn trên các máy tính cá nhân từ giữa năm 1990 trong các hệ thống máy tính cá nhân sử dụng CPU thế hệ thứ tư (486). Ứng dụng trong sử dụng thông thường của một máy tính: • Bàn phím máy tính (trước đây) • Chuột điều khiển (trước đây. đa số các bo mạch chủ trung và cao cấp cũng dần loại bỏ cổng nối tiếp khiến cho một số người sử dụng đã gặp khó khăn khi còn sử dụng các thiết bị cũ (chẳng hạn các modem quay số).

Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI 500mA .Vì vậy ta phải có một mạch lái đường dây để chuyển đổi tín hiệu giữa RS232 và TTL. Phan Thanh Tiến 62 . DS275. thiết bị được sử dụng là MAX232. Trần Thanh Hiền.… PHẦN B: THI CÔNG Nhóm: Trịnh Hoàng Long.

Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI CHƯƠNG I: Mạch nguyên lý I/ Sơ đồ mạch: 1. Phan Thanh Tiến 63 . Trần Thanh Hiền. Mạch giao tiếp giữa AT89C51 và máy vi tính Nhóm: Trịnh Hoàng Long.

Mạch điều khiển chính: Nhóm: Trịnh Hoàng Long. Phan Thanh Tiến 64 .Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI 2. Trần Thanh Hiền.

Trần Thanh Hiền.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI 3. Mạch kich dẫn thiết bị: Nhóm: Trịnh Hoàng Long. Phan Thanh Tiến 65 .

transistor BD139 tắt relay mở. Tính dòng I B : V CC = I B *(R3 + R4) + V B V −V BE 12 −0. Phan Thanh Tiến 66 .Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI Nguyên lý hoạt động . Trần Thanh Hiền. IC = 4.7 (mA) 3 K .7 +1 R3 + R 4 I B * β 2 * 100 = = 66.6 → I B = CC = = 2 (mA) 4.Khi vi xử lí xuất mức thấp thì opto dẫn . nguồn 12v đổ xuống phân cực cho BD139 dẫn relay đóng.Khi vi xử lí xuất mức cao thì opto không dẫn. Mạch cảm biến đèn tự động bật tắt: Nhóm: Trịnh Hoàng Long.

Khi chưa ánh sáng chiếu vào cảm biến . Trần Thanh Hiền.Khi có ánh sáng chiếu vào cảm biến. → V r =0v → transistor C1815 tắt . Phan Thanh Tiến 67 . R5 giảm: a V −<V + . R5 tăng : a V −>V + . → → V r =12V→ transistor C1815 dẫn nên relay đóng bật nguồn đèn sáng Nhóm: Trịnh Hoàng Long.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI Nguyên lý hoạt động: v * R 2 12 * 10 V += cc = =6V R1 + R 2 10 +10 v * R3 12 * 47 V −= cc = R3 + R5 47 + R5 Với 100Ω ≤ R5 ≤ 100 k Ω .

Phan Thanh Tiến 68 . Mạch cảm biến cảnh báo cháy: LCD 1602A Nhóm: Trịnh Hoàng Long.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI 5. Trần Thanh Hiền.

Nó có thể điều khiển đươc sắp xếp nhiệt độ trong khoảng -55oC đến 125oC và với độ chính xác đến +/.0. IC DS18B20: là một loại nhiệt kế số cung cấp từ 9bit-12bit theo đơn vị đo lường là độ C và có một chức năng chuông reo với những chất khó bay hơi chương trình sử dụng với điểm cao hơn hoặc thấp hơn điểm ngưỡng.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI CHƯƠNG II: Một số linh kiện 1.xử lý trung tâm và điều khiển những hệ thống. Trần Thanh Hiền. Nhóm: Trịnh Hoàng Long.Những ứng dụng có thể mang lại lợi ích từ nét đặc biệt này gồm có việc cải tiến điều khiển HVAC.5oC trong khoảng từ -10oC đến +85oC.Nó mặc định yêu cầu chỉ cho một đưỡng truyền dữ liệu (và đất) từ việc truyền thông tin với con vi xử lý trung tâm. Phan Thanh Tiến 69 .Nó thì đơn giản trong việc sử dụng một con vi xử lý để mà diều khiển nhiều con DS18B20s với sự phân bố trong một vùng lớn.Ngoài ra. Một số con DS18B20 có một mã độc nhất 64 bit với việc cho phép nhân DS 18B20s trên những đoạn dây Bus tương tự nhau.DS 18B20 có thể cấp nguồn trực tiếp từ dữ liệu ngoại trừ việc cung cấp từ nguồn ngòai.DS18B20 truyền trong một đường dây Bus tín hiệu.hoặc nhiều bộ phận.nhiệt độ ở trung tâm hệ thống được xây doing.trang bị.

DS18B20 có thể hầu như được cấp nguồn bời nguồn cung cấp ngoài ở VDD. vì vậy họ sẽ giữ lại dữ liệu khi thiết bị được kéo lên.Đặt nhiệt độ đo lường và chuyển đổi từ A đến D.Nguồn thì mặc dù cung cấp diện trở trên Bus qua chân DQ khi dây Bus ở mức cao.10.Ngoài ra.Như một lựa chọn.Việc điều khiển đường dây yêu cầu có một con điện trở tương đối lớn từ thiết bị kết nối đến Bus qua 3 vùng hoặc mở Port(Chân DQ trong trường hợp của DS18B20)Trong hệ thống Bus Vi xử lý (thiết bị chủ) nhận ra và đưa đến những thiết bị trên đường Bus sử dụng một vài thiết bị duy nhất có mã là 64 bit.11 hoặc 12 bit.Mặc định phân giải ở nguồn kéo lên là 12 bit.0625 oC.Việc đăng ký cấu hình đòi hỏi người sử dụng thiết lập độ phân giải số cho cảm biến chuyển đổi đến 9. Tín hiệu dây Bus hầu như có thể chuyển đổi một dung tích chứa nội (C PP). Chân VDD: chân cấp nguồn(=VCC).nó sau nó cung cấp nguồn đến thiết bị khi Bus ở mức thấp. Cấu trúc chung của DS18B20: Chân DQ:chân đưa tín hiệu ra.10.11 hoặc 12 bit tương ứng với việc gia tăng 0.Nó chứa số ngõ vào từ cảm biến nhiệt độ.Theo sự chuyển đổi kết quả của dữ liệu đươc đưa vào 2 byte của đăng ký nhiệt độ trong bộ nhớ hỗn tạp và quay trở lại DS18B20 trong vùng vô hiệu.đăng ký cấu hình là cố định (EEPROM) .125 oC hoặc 0.0.Cách thức của việc bắt nguồn từ một dây Bus đươc qui cho như là “Parasite Power”.25 oC.Giao thức của một Bus.nhiều thiết bị có thể đề dịa chỉ trên một bus là không giới hạn.(tín hiệu diện áp) Chân GND:Chân nối đất.một cách riêng.Độ phân giải của cảm biến nhiệt độ có thể đăng ký đến 9.5oC .Bộ nhớ Rom 64 bit dự trữ mã của những thiết bị độc nhất.Nguồn kéo lên trong vùng nguồn kéo xuống vô hiệu. Trần Thanh Hiền. một vài thiết bị có một mã duy nhất. DS18B20 sử dụng giao thức Maxim cách biệt những đường dây Bus. bao gồm việc giải thích chi tiết lệnh và các vị trí thời gian được nối trong một hệ thống Bus.Thiết bị chủ cần phải phát ra một tập lệnh Conver T[44H].Nếu DS18B20 được cấp nguồn ngoài.Báo mức thấp TL và báo mức cao TH . Mặc khác nét đặc biệt của DS18B20 khả năng điều khiển ngoài điện áp nội nguồn cung cấp. thì chủ có thể phát ra “read time slots” sau đó lệnh Conver T và DS18B20 sẽ phản ứng lại bởi việc chuyển về 0 trong khi sự chuyển đổi nhiệt độ đang trong tiến trình và 1 khi sự chuyển đổi đã được thực Nhóm: Trịnh Hoàng Long.bộ nhớ hỗn tạp còn cung cấp lối vào 1 byte ở ngưỡng trên và dưới của việc đăng kí còi báo động và 1 byte cho việc cấu hình đăng ký.0.Bộ nhớ hỗn tạp chứa 2 bit đăng ký nhiệt độ.Bởi vì.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI Bảng 1 trình bày sơ đồ mạch cấu tạo của con DS18B20 và mô tả chân trong bảng mô tả chân. Việc điều khiển cảm biến nhiệt độ: Lõi chức năng của DS18B20 là cảm biến nhiệt độ trực tiếp từ số.Nó thi hành việc truyền thông Bus sử dụng một tín hiệu điều khiển. Phan Thanh Tiến 70 .

Với độ phân giải 9 bit.nhìn bảng và sự chuyển đổi thường lệ cần phải được dùng.nhữnh ứng dụng độ F. Trần Thanh Hiền.Nếu DS18B20 đăng ký độ phân giải 12 bit .Với độ phân giải 11 bit .bit 2.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI hiện. Dữ liệu nhiệt độ ở ngõ ra DS18B20 ứng dụng trong thang đo độ C.Với cách cấp nguồn này thì chân VDD phải được kết nối với đất.Nguồn parasite power được sử dung phổ biến trong ứng dụng yêu cầu nhiệt độ ở nơi xa. Phan Thanh Tiến 71 . Cung cấp nguồn theo kiểu Parasite cho DS18B20 trong quá trình chuyển đổi nhiệt độ: Nguồn cung cấp cho DS18B20 với nguồn cung cấp ngoài: Nhóm: Trịnh Hoàng Long.Nếu DS18B20 được cấp nguồn với nguồn khác.Với độ phân giải 10 bit thì bit 0 và bit 1 không được mặc định.sự chú ý về kỹ thuật không được sử dụng từ khi Bus đẩy lên mức cao bởi việc đẩy mạnh trong suốt hồi về nhiệt độ chuyển đổi.Bảng biểu diễn ví dụ về dữ liệu số ở ngõ ra và việc đọc nhiệt độ của việc chuyển đổi độ phân giải 12 bit. Bảng biểu diễn mối quan hệ giữa nhiệt dộ và dữ liệu: Có 2 cách để cấp nguồn cho DS18B20: -Ta có thể cấp nguồn trực tiếp từ chân VDD với một nguồn ở phía bean nguồn.Những Sign bit (S) dùng để biểu lộ nếu nhiệt độ âm hay dương.Dữ liệu nhiệt độ được lưu trữ như 16 bit signextended phần bổ sung của hai số trong việc đăng ký nhiệt độ.tất cả các bit trong việc đăng ký nhiệt độ sẽ được chứa trong giá trị của dữ liệu.bit 0 không được mặc định.0 không được mặc định.1.Số dương S=0.Nó có thể điều khiển chế độ “parasite power”.số âm S=1.

Nguồn kéo lên mặc định của những bit là R0=1 và R1=1( độ phân giải 12 bit)Chú ý không có mối liên hệ gián tiếp giữa dộ phân giải với thời gian chuyển đổi. Trần Thanh Hiền.Tất cả các loại bộ nhớ đều đươc mô tả chi tiết trong bảng chức năng loại bộ nhớ. Phan Thanh Tiến 72 .nó được sắp xếp trình tự như trong bảng sau.Việc sử dụng có thể thiết lập dộ phân giải DS18B20 bằng cách sử dụng bit R0 và R1.Chú ý rằng nếu chức năng báo của DS 18B20 không sử dụng việc đăng ký mức cao hay mức thấp có thể đáp ứng như mục đích của những bộ nhớ bình thường.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI Bộ nhớ: Bộ nhớ là sự kết hợp hỗn hợp của SRAM với EEPROM cho việc đăng ký chuông báo mức cao hay mức thấp và cấu hình đăng ký.Bit 7 và bit 0 dến bit 4 trong cấu hình đăng ký được lưu trữ từ việc sử dụng nội bộ bởi thiết bị và khộng thể ghi chồng lên. Cấu hình đăng ký: Nhóm: Trịnh Hoàng Long. Bản đồ bộ nhớ DS18B20: Việc cấu hình đăng ký: 4 bit trong bộ nhớ hỗn tạp chứa cấu hình đăng ký .

Byte dữ liệu đầu tiên được viết vào đăng ký TH (byte 2 of the scratchpad). hoặc dữ liệu có thể được hỏng. tất cả các tớ còn lại trên đường bus sẽ đợi để mà Reset xung.Nếu thiết bị đang sử dụng là chế độ parasite power.và tín hiệu của một dây. READ SCRATCHPAD [BEh] Đây là lệnh cho phép chủ đọc phần chứa bộ nhớ hỗn hợp.Chỉ có tớ mới ngòi một cách chính xác một mã liên tiếp 64 bit sẽ phản ứng lại đến lệnh chức năng được phát ra bởi chủ.Dữ liệu cần phải được chuyển đổi bit ý nghĩa đầu tiên. COPY SCRATCHPAD [48h] Lệnh này copy dữ liệu chứa trong bộ nhớ hỗn tạp TH. byte thứ hai được viết vào đăng ký TL(byte 3).Tất cả các dữ liệu và lệnh đều được chuyển đến bit đầu tiên trên đường bus. Match ROM [55h]: Tập lệnh Match ROM theo bởi một mã liên tiếp ROM 64 bit cho phép bus chủ cho địa chỉ đặc biệt tới thiết bị tớ trên multi Drop hoặc single Drop bus. Nhóm: Trịnh Hoàng Long.Nó theo đường Bus chủ để mà đọc đoạn mã của tớ 64 bit ROM ngoài ra còn sử dụng tìm ROM.TL và đăng ký cấu hình (byte 2. WRITE SCRATCHPAD [4Eh] Lệnh cho phép chủ viết 3 byte dữ liệu đến DS18B20’s scratchpad . Trần Thanh Hiền.Tất cả 3 byte cần phải được viết trước khi chủ phát lệnh Reset. Đọc ROM [33h]: Đây là lệnh chỉ có thể được sử dụng khi có một tớ trên đường Bus.Hệ thống là”Multidrop” nếu có nhiều multi tớ trên đường bus.trong khoảng 10μs (max) sau khi lệnh này được phát chủ cần phải có khả năng kéo lên mạnh trên đường bus ít nhất 10ms.và byte thứ 3 được viết vào đăng ký cấu hình (byte 4). Phan Thanh Tiến 73 .Khi chỉ có một thiết bị tớ ở trên bus.Nếu lệnh này được sử dụng khi có nhiều hơn một tớ hiện hành trên đường bus thì dữ liệu xung đột sẽ xảy ra khi tất cả các tớ cố phản ứng lại trong một vài thời gian.hệ thống được dẫn đến như một hệ thống đơn độc trên cùng. Việc chuyển tiếp thảo luận của một hệ thống bus nếu bị hư trong ba chủ đề:cấu hình phần cứng.3 và 4) đến EEPROM.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI Cấu hình cho độ phân giải cho nhiệt kế: Hệ thống Bus: Một bus hệ thống sử dụng một bus chủ đơn độc để mà điều khiển một hay nhiều thiết bị tớ.Chủ có thể phát lệnh Reset giới han đọc ít thời gian nếu chỉ phần dữ liệu hỗn hợp được cần.Dữ liệu bắt đầu di chuyển với bit ý nghĩa của byte 0 và tiếp tục đọc đến byte thứ 9 (byte 8-CRC) là đọc. sự thực hiện liên tiếp.

Việc truyền dữ liệu qua cổng COM được tiến hành theo cách nối tiếp.VDD=3.5V) o Bảng điện áp ký tự xoay chiều:(-55oC đến +125oC . Nghĩa là các bit dữ liệu được truyền đi nối tiếp nhau trên một đường dẫn. Loại truyền này có khả năng dùng cho những ứng dụng có yêu cầu truyền khoảng cách lớn hơn. Phan Thanh Tiến 74 . Giống như cổng máy in cổng COM cũng được sử dụng một cách thuận tiện cho việc giao tiếp với thiết bị ngoại vi. RS MAX232: Cổng nối tiếp RS232 là một giao diện phổ biến rộng rãi nhất.0V-5.VDD=3.0V-5. bởi vì các khả năng gây nhiễu là nhỏ đáng kể hơn khi dùng một cổng song song (cổng máy in) Cổng COM không phải là một hệ thống bus nó cho phép dễ dàng tạo ra liên kết dưới hình thức điểm với điểm giữa hai máy cần trao đổi thông tin với nhau. một thành viên thứ ba không thể tham gia vào cuộc trao đổi thông tin này. Trần Thanh Hiền. còn cổng COM2 để tự do cho các ứng dụng khác. Người ta còn gọi cổng này là cổng COM1. * Các chân và đường dẫn được mô tả như sau: Nhóm: Trịnh Hoàng Long.5V) 2.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI o Bảng điện áp ký tự một chiều:(-55 C đến +125 C .

và vì thế không phải trong mọi trường hợp ứng dụng đều dùng hết. Vì tín hiệu cổng COM thường ở mức +12V. Trần Thanh Hiền. Trong khi đó các dữ liệu mà máy tính nhận được.GIỚI THIỆU VI MẠCH GIAO TIẾP MAX 232 Vi mạch MAX 232 của hãng MAXIM là một vi mạch chuyên dùng trong giao diện nối tiếp với máy tính. Phan Thanh Tiến 75 . ta chọn vi mạch MAX232 để thực hiện việc tương thích điện áp. -12V nên không tương thích với điện áp TTL nên để giao tiếp KIT Vi điều khiển 8051 với máy tính qua cổng COM ta phải qua một vi mạch biến đổi điện áp cho phù hợp với mức TTL. Chúng có nhiệm vụ chuyển đổi mức TTL ở lối vào thành mức +10V hoặc –10V ở phía truyền và các mức +3…+15V hoặc -3…-15V thành mức TTL ở phía nhận. . Cả hai loại này đều có chung một đặc điểm. Nhóm: Trịnh Hoàng Long. Trên thực tế có hai loại phích cắm.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI Phích cắm COM có tổng cộng 8 đường dẫn. một loại 9 chân và một loại 25 chân. Việc truyền dữ liệu xảy ra ở trên hai đường dẫn. Qua chân cắm ra TXD máy tính gởi dữ liệu của nó đến KIT Vi điều khiển. lại được dẫn đến chân RXD các tín hiệu khác đóng vai trò như là tín hiệu hổ trợ khi trao đổi thông tin. chưa kể đến đường nối đất.

Cách truyền dữ liệu đơn giản nhất là chỉ dùng ba đường dẫn TxD.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI Vi mạch MAX 232 có hai bộ đệm và hai bộ nhận. được nối với chân 9 của vi mạch MAX 232. Đường dẫn điều khiển lối vào CTS. ĐẶC ĐIỂM KỸ THUẬT VỀ ĐIỆN CỦA RS232C Nhóm: Trịnh Hoàng Long. Phan Thanh Tiến 76 . RxD và GND (mass). Thường thì các đường dẫn bắt tay được nối với cổng nối tiếp qua các cầu nối. để khi không dùng đến nữa có thể hở mạch các cầu này. Trần Thanh Hiền. điều khiển việc xuất ra dữ liệu ở cổng nối tiếp khi cần thiết. Còn chân RST (chân 10 của vi mạch MAX ) nối với đường dẫn bắt tay để điều khiển quá trình nhận.

hoặc từ FALSE sang TRUE ) không được vượt qúa 1ms. Các bit dữ liệu được gửi đảo ngược lại. Các đặc điểm về điện khác bao gồm • RL (điện trở tải) được nhìn từ bộ kích phát có giá trị từ 3 ÷ 7k. Mức điện áp đối với mức High nằm giữa –3V và –12V và mức Low nằm giữa +3V và +12V. Các đường báo thiết bị sẵn sàng: .CTS : Modem đáp ứng nhu cầu cần gửi dữ liệu của thiết bị đầu cuối cho thiết bị đầu cuối có thể sử dụng kênh truyền dữ liệu. tuy nhiên các đường điền khiển (ngoại trừ đường TDATA và RDATA) sử dụng logic dương: gía trị TRUE = +5V đến +15V và FALSE =-5V đến –15. Trên hình 2-4 mô tả một dòng dữ liệu điển hình của một byte dữ liệu trên cổng nối tiếp RS-232C. Phan Thanh Tiến 77 . Ngõ ra bộ kích phát khi không tải có điện áp là ± 25V.RTS : Để báo rằng thiết bị đầu cuối yêu cầu phát dữ liệu. .CD : Modem báo cho thiết bị đầu cuối biết rằng đã nhận được một sóng mang hợp lệ từ mạng điện thoại.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI Qui định về chân của RS232C Mức điện áp logic của RS-232C là khoảng điện áp giữa +15V và –15V. CÁC ĐƯỜNG DỮ LIỆU VÀ ĐIỀU KHIỂN CỦA RS232 TxD: Dữ liệu được truyền đi từ Modem trên mạng điện thoại. . .DTR : Để báo rằng thiết bị đầu cuối đã sẵn sàng . Ở chuẩn giao tiếp này. Tiếp đó là các bit dữ liệu riêng lẻ sẽ đến. logic 0 có điện thế giữa +5V và +15V. Đối với các đường dữ liệu. . Còn số của các bit thay đổi giữa 5 và 8. Các đường trạng thái sóng mang và tín hiệu điện thoại: . thời gian chuyển của tín hiệu (từ TRUE sang FALSE. thời gian chuyển (từ 1 sang 0 hoặc từ 0 sang 1) phải không vượt qúa 4% thời gian của 1 bit hoặc 1ms. Các địa chỉ ghi tiếp theo được đặt tới bằng việc cộng thêm số thanh ghi đã gặp của bộ UART vào địa chỉ cơ bản. giữa ngõ ra bộ kích phát và ngõ vào bộ thu có mức nhiễu được giới hạn là 2V. Các đường dữ liệu sử dụng mức logic âm: logic 1 có điện thế giữa –5V và –15V.Mức tín hiệu trên chân ra RxD tùy thuộc vào đường dẫn TxD và thông thường nằm trong khoảng –12 đến +12. Đối với các đường điều khiển.Các đường bắt tay bán song công.DSR : Để báo rằng Modem đã sẵn sàng. Ở cuối của dòng dữ liệu còn có một bit dừng (Stopbit) để đặt trở lại Nhóm: Trịnh Hoàng Long. .Ở trạng thái tĩnh trên đường dẫn có điện áp –12V. RxD: Dữ liệu được thu bởi Modem trên mạng điện thoại.RI : Các Modem tự động trả lời báo rằng đã phát hiện chuông từ mạng điện thoại địa chỉ đầu tiên có thể tới được của cổng nối tiếp được gọi là địa chỉ cơ bản (Basic Address). Trần Thanh Hiền. . trong đó các bit giá trị thấp sẽ được gửi trước tiên. tốc độ thay đổi (Slew rate ) của điện áp không được vượt qúa 30V/µs. Do vậy ngưỡng lớn nhất của ngõ vào là ±3V trái lại mức ± 5V là ngưỡng nhỏ nhất với ngõ ra. Một bit khởi động (Starbit) sẽ mở đầu việc truyền dữ liệu. • CL (điện dung tải) được nhìn từ bộ kích phát không được vượt quá 2500pF. • Để ngăn cản sự dao động quá mức.

Phan Thanh Tiến 78 . Dữ liệu truyền qua cho Port COM dưới dạng nối tiếp từng Bit một. Parity (Kiểm Nhóm: Trịnh Hoàng Long. STOP Bit (Bit kết thúc). Phổ biến nhất là vi mạch 8250 của hãng NSC hoặc các thế hệ tiếp theo. 6 Bit hay 1 byte tùy theo sự cài đặt lúc khởi tạo Port COM. các đường dẫn tín hiệu riêng biệt cũng cho phép trao đổi qua các địa chỉ trong máy tính PC.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI trạng thái ngõ ra (-12V). Ngoài ra để truyền dữ liệu qua Port COM còn cần những tham số sau: Bit mở đầu cho một đơn vị dữ liệu START Bit. Địa chỉ theo bộ nhớ của hai Chip này là 0040:0000 cho UART của ngõ COM1 và 0040:0002 cho UART của ngõ COM2 (Địa chỉ logic do hệ điều hành chỉ định) và địa chỉ theo Port để truy xuất khi sử dụng là 3F8-3FF cho COM1 và 2F8-2FF cho COM2. Địa chỉ cơ bản của cổng nối tiếp của máy tính PC có thể tóm tắt trong bảng các địa chỉ sau: COM 1 COM 2 COM 3 COM 4 (cổng nối tiếp thứ nhất) (cổng nối tiếp thứ hai) (cổng nối tiếp thứ ba) (cổng nối tiếp thứ tư) Địa chỉ cơ bản = 3F8(Hex) Địa chỉ cơ bản = 2F8(Hex) Địa chỉ cơ bản = 3E8(Hex) Địa chỉ cơ bản = 2E8(Hex) Cũng như ở cổng máy in. đơn vị dữ liệu có thể là 5 Bit. Thông thường với các yêu cầu ứng dụng tốc độ thấp người ta giao tiếp qua ngõ nối tiếp. Trần Thanh Hiền. Đối với máy AT cho ta hai ngõ giao tiếp COM1 và COM2. Để giao tiếp nối tiếp với 2 ngõ COM này Bus hệ thống của CPU (Data Bus và Address Bus) hãng IBM sử dụng hai Chip lập trình của Intel là 8250 UART (Universal Asynchronus Receiver Transmitter). Trong một số card I/O ta có thể có đến 4 cổng COM. Ngoài ra cũng có thể dùng giao tiếp với printer hay plotter nhưng không thông dụng lắm bởi tốc độ truyền quá chậm. nó giao tiếp theo tiêu chuẩn RS232C và dùng để giao tiếp giữa máy tính với Modem hoặc Mouse. người ta thường sử dụng những vi mạch có mức độ tích hợp cao để có thể hợp nhất nhiều chức năng trên một chip. Ở máy tính PC thường có một bộ phát/nhận không đồng bộ vạn năng (gọi tắt là UART: Universal Asnchronous Receiver/ Transmitter) để điều khiển sự trao đổi thông tin giữa máy tính và các thiết bị ngoại vi. Trong trường hợp này.

người ta đã chế tạo các IC kích phát và thu. IC 1489 phát hiện các mức vào của RS232C và chuyển chúng thành các ngõ ra có mức TTL. nạp vào thanh ghi DX1 chỉ số chọn kênh (COM1 = 0. Trần Thanh Hiền. : Sử dụng một bit Stop : Sử dụng hai bit Stop Bit D3 D4 : Các Bit parity (chẵn lẻ) 0 0 : Không kiểm tra tính Parity 1 1 : Không kiểm tra tính Parity 0 1 : Odd (lẻ) 1 0 : Even (chẵn) Bit D5D6D7 : 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 : : : : : : : : Cho biết tốc độ truyền (Baud Rate) Tốc độ truyền 110bps (bit per second) Tốc độ truyền 150bps (bit per second) Tốc độ truyền 300bps (bit per second) Tốc độ truyền 600bps (bit per second) Tốc độ truyền 1200bps (bit per second) Tốc độ truyền 2400bps (bit per second) Tốc độ truyền 4800bps (bit per second) Tốc độ truyền 9600bps (bit per second) CÁC IC KÍCH PHÁT VÀ THU CỦA RS232C Nhờ tính phổ biến của giao tiếp. Port COM là một thể khởi tạo bằng BIOS thông qua chức năng 0 của Interrupt 14. Baud Rate (Tốc độ truyền) tạo thành một Frame (Khung truyền). Và MC 1489.Mỗi IC kích phát 1488 nhận một tín hiệu mức TTL và chuyển thành tín hiệu ở ngõ ra tương thích với mức điện áp của RS232C. Hai vi mạch như vậy được Motorola sản xuất là IC kích phát MC 1488 có dạng vỏ vuông. Nhóm: Trịnh Hoàng Long. COM2 = 1). Phan Thanh Tiến 79 . Bit D2 0 1 : Cho biết số Stop Bit.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI tra chẵn lẻ). Bit D0 D1 : Cho biết độ rộng của dữ liệu 0 0 : Dữ liệu có độ rộng 5 Bit 0 1 : Dữ liệu có độ rộng 6 Bit 1 0 : Dữ liệu có độ rộng 7 Bit 1 1 : Dữ liệu có độ rộng 8 Bit. Thanh ghi AL được nạp vào các tham số của việc truyền dữ liệu.

khoảng cách từ máy tính đến thiết bị ngoại vi có thể đạt tới trên 20 mét. Ưu điểm của giao diện này là có khả năng thiết lập tốc độ Baud. Trần Thanh Hiền. Phan Thanh Tiến 80 . Đối với đề tài chỉ yêu cầu truyền dữ liệu từ máy tính qua KIT chứ không truyền dữ liệu từ KIT qua máy tính vì vậy chúng em chọn vi mạch MAX232 để thực hiện biến đổi tương thích mức tín hiệu. Khi dữ liệu từ máy tính được gởi đến KIT Vi điều khiển 8051 qua cổng COM thì dữ liệu này sẽ được đưa vào từng bit (nối tiếp) vào thanh ghi SBUF (thanh ghi đệm).Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI * Sơ đồ kết nối giữa cổng COM với Vi điều khiển 8051 : Sơ đồ thực thực tế Vi mạch này nhận mức RS232 đã được gởi tới từ máy tính và biến đổi tín hiệu náy thành tín hiệu TTL để cho tương thích với IC 8051 và nó cũng thực hiện ngược lại là biến đổi tín hiệu TTL từ Vi điều khiển thành mức +12V. đến khi thanh ghi đệm đầy thì cờ RI trong thanh ghi điều khiển sẽ tự động Set lên 1 và lúc này CPU sẽ gọi chương trình con phục vụ ngắt và dữ liệu Nhóm: Trịnh Hoàng Long. -12V để cho phù hợp hoạt động của máy tính. Giao tiếp theo cách này.

Trần Thanh Hiền.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI sẽ được đưa vào để xử lý. 3. IC 741: Nhóm: Trịnh Hoàng Long. Phan Thanh Tiến 81 .

Start Timer . Giới thiệu ngôn ngữ Assembly: Khi máy tính thực hiện chương trình. chúng hỗ trợ lẫn nhau để hình thành nên hoạt động của hệ thống. Dùng kí tự “A” hay “B”. Từ đó chúng ta nhận thấy rằng. Đây chính là Hợp Ngữ (Assembly Language). chúng ta sẽ vận dụng phần cứng để các chương trình phần mềm phục vụ mụch đích của chúng ta. nó đọc một dãy các số nhị phân chỉ gồm toàn các số 0 và 1 vào bộ nhớ. Assembly là chương trình dịch các chương trình viết bằng hợp ngữ sang mã máy.#0FDH TL1. cỗ máy muốn hoạt động thì phải có công nhân lành nghề điều khiển nó. Như vậy.#01111111B MOV P1. nhưng nếu trong chương trình có một lỗi nào đó. MAIN . Biết được tầm quan trọng của phần mềm. hoặc muốn thêm hoặc xoá một mã lệnh nào đó có điạ chỉ đi kèm như jump. Vì vậy thay vì viết trực tiếp bằng ngôn ngữ máy. Sau đây là chương trình nạp vào vi xử lý: #include <sfr51.inc> .0592MHz .#01111111B LCALL READ Nhóm: Trịnh Hoàng Long.#53H TH1. 2.#20H MOV MOV MOV SETB SCON. Tuy chương trình có thể viết trực tiếp bằng ngôn ngữ máy. người lập trình có thể viết bằng một ngôn ngữ dưới dạng các ký hiệu hình thức hoặc các từ gợi nhớ tương đương với một lệnh của CPU. nó là một cỗ máy.Enable reception .PCON EQU 87H ORG 00H BAUD_RATE: MOV TMOD. nên rất khó cho việc lập. Để cho dễ đọc và dễ viết hơn thường ta viết các số nhị phân dưới dạng các số thập lục phân được gọi là chương trình viết bằng ngôn ngữ máy.Set baudrate to 9600 at 11.để ra lệnh cho vi xử lí thực hiện một chương trình đã được viết sẵn. phần mềm và phần cứng tuy là hai bộ phận hoạt động độc lập nhưng hoạt động của chúng không thể tách rời nhau trong cùng một hệ thống.Set Serial port mode to 8-bit UART . loop … cũng phải được tính toán lại cho đúng địa chỉ. phần cứng muốn hoạt động được đòi hỏi phải có sự can thiệp của con người mà chủ yếu là thông qua phần mềm điều khiển và sự hoạt động mềm dẻo của phần cứng lại phụ thuộc vào trình độ người lập trình. PORT HIEN THI MAIN: MOV P0.#0FDH TR1 .Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI CHƯƠNG III: PHẦN MỀM 1. Trần Thanh Hiền. sửa và bảo trì chương trình. Phan Thanh Tiến 82 . với cùng một cỗ máy nhưng người công nhân có tay nghề cao thì sản phẩm càng có chất lượng. call. Giới thiệu: Phần cứng đó là những gì đã cố định. giải mã rồi hiển thị. Hợp ngữ (Assembly Language) là ngôn ngữ lập trình cấp thấp gần với ngôn ngữ máy.

MOTOR2 .######################MOTOR################### MOTOR: MOV P0.Wait for Receive interrupt flag JNB RI.MO CUA MOV P1.MO CUA XONG CJNE A.#11110111B MOV P1.######################TRIPLE################### TRIPLE1: MOV P0.D1 LCALL TRIPLE10 D1: D2: CJNE A.If falg is set then clear it CLR RI .mo den va dong cua MOV P1.#'C'.LENH SOS GVHD: Cô BÙI THỊ KIM CHI CJNE A.#'S'.LENH MO QUAT LCALL TRIPLE40 MOTOR4: CJNE A.$ .#'C'.LENH MO QUAT .#'S'.LENH MO DEN LCALL TRIPLE20 MOTOR3: CJNE A.MOTOR3 .#11110110B . LENH SOS LCALL SOS S1: LJMP MOTOR1 MOTOR5: MOV P0.#11111011B .#'E'.####################READ########################## READ: .#11111111B LCALL READ .SBUF RET .S LCALL MOTOR S: CJNE A.Then read data from SBUF MOV A.D3 LCALL SOS D3: LJMP MAIN .#11111111B MOV P1.LENH DONG CUA LCALL MOTOR5 MOTOR2: CJNE A. Trần Thanh Hiền.#11110110B LCALL DEL LCALL TRIPLE10 Nhóm: Trịnh Hoàng Long.#'F'.#'A'.#11110111B LCALL DEL LJMP MAIN .D2 LCALL TRIPLE30 .LENH MO CUA . LENH MO DEN . Phan Thanh Tiến 83 .#'A'.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính CJNE A.S1 .#11111011B LCALL DEL LCALL MOTOR1 MOTOR1: MOV P0.MOTOR4 .

#'C'.TRIPLE22 LJMP TRIPLE50 TRIPLE22: CJNE A.TRIPLE33 LCALL SOS TRIPLE33: LJMP TRIPLE30 Nhóm: Trịnh Hoàng Long.#11111010B LCALL DEL LCALL TRIPLE20 TRIPLE20: MOV P0.MO CUA XONG.#'B'. MO QUAT GVHD: Cô BÙI THỊ KIM CHI .S23 LCALL TRIPLE1 S23: CJNE A.#'A'.#'S'.TRIPLE21 LJMP MOTOR1 TRIPLE21: CJNE A.#'C'.MO DEN.S13 LCALL TRIPLE2 S13: CJNE A.#11111110B LCALL READ CJNE A.TRIPLE32 LJMP TRIPLE60 TRIPLE32: CJNE A.#11111010B MOV P1. CON DEN DANG SANG .TRIPLE23 LCALL SOS TRIPLE23: LJMP TRIPLE20 TRIPLE3: MOV P0.#'E'.#'S'.#11111110B MOV P1.#11110101B MOV P1.#'S'.TRIPLE13 LCALL SOS TRIPLE13: LJMP TRIPLE10 TRIPLE2: MOV P0.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính TRIPLE10: MOV P0.TRIPLE11 LJMP MAIN TRIPLE11: CJNE A. Trần Thanh Hiền.DONG CUA.#11111101B LCALL READ CJNE A.TRIPLE31 LJMP MAIN TRIPLE31: CJNE A. DEN VAN SANG .S33 LCALL TRIPLE4 S33: CJNE A.#11111110B MOV P1.TRIPLE12 LJMP TRIPLE60 TRIPLE12: CJNE A.#'F'. Phan Thanh Tiến . MO CUA .DONG CUA XONG.#11111101B MOV P1.#'D'.#11111110B LCALL READ CJNE A. QUAT VAN MO 84 .#'E'.#'B'.#11110101B LCALL DEL LCALL TRIPLE30 TRIPLE30: MOV P0.DONG CUA XONG.

TRIPLE63 LCALL SOS TRIPLE63: LJMP TRIPLE60 .S43 LCALL TRIPLE3 S43: CJNE A.TRIPLE61 LJMP TRIPLE10 TRIPLE61: CJNE A. DONG CUA.TAT DEN. DEN SANG . DONG CUA XONG.#11111100B LCALL READ CJNE A.#11111101B MOV P1.#'B'.#'S'.TRIPLE62 LJMP TRIPLE30 TRIPLE62: CJNE A.#11111100B MOV P1. Trần Thanh Hiền. QUAT VAN CHAY TRIPLE6: MOV P0.#'S'.TRIPLE42 LJMP TRIPLE50 TRIPLE42: CJNE A. QUAT VAN CHAY Nhóm: Trịnh Hoàng Long.TRIPLE51 LJMP TRIPLE20 TRIPLE51: CJNE A.TAT DEN.#'D'.#'F'.#'B'. QUAT.#11111001B LCALL DEL LCALL TRIPLE40 TRIPLE40: MOV P0.S53 LCALL TRIPLE6 S53: CJNE A.#'D'. TAT QUAT.#'S'. den quat van sang .#'D'.S63 LCALL TRIPLE5 S63: CJNE A. TAT QUAT.#11111100B LCALL READ CJNE A.#11111111B . DEN QUAT VAN SANG .TRIPLE41 LJMP MOTOR1 TRIPLE41: CJNE A. QUAT VAN MO .#11110100B MOV P1.#11111101B LCALL READ CJNE A.#11110100B LCALL DEL LCALL TRIPLE60 TRIPLE60: MOV P0.#'E'. DEN SANG .TRIPLE43 LCALL SOS TRIPLE43: LJMP TRIPLE40 TRIPLE5: MOV P0.#'F'.DEN QUAT VAN SANG .MO DEN.#11111100B MOV P1.################### SOS ##################### SOS: MOV P0.#11111000B LCALL DEL LCALL TRIPLE50 TRIPLE50: MOV P0.#'A'. Phan Thanh Tiến 85 . CUA .Đề tài: Điều khiển thiết bị từ xa thông qua máy tính TRIPLE4: MOV P0.#11111000B MOV P1.MO CUA XONG.TRIPLE53 LCALL SOS TRIPLE53: LJMP TRIPLE50 GVHD: Cô BÙI THỊ KIM CHI .#11111001B MOV P1.TRIPLE52 LJMP TRIPLE40 TRIPLE52: CJNE A.MO QUAT MO CUA .

#11111111B LCALL READ CJNE A.################### Delay 3s ##################### DEL: MOV R5.nolvp //Fuses #use delay (clock=4000000) //4. . byte buffer[8].read_ok.noput.DEL3 RET END GVHD: Cô BÙI THỊ KIM CHI 3.noprotect.c> #include <1wire. cập nhật mới . Lập trình cho các họ PIC 12 bit . . dù rằng việc phối hợp sẽ làm cho việc viết chương trình trở nên khó khăn hơn .h> //Device #fuses xt.CCS là trình biên dịch dùng ngôn ngữ C lập trình cho VĐK . 14 bit và PIC 18 . Sau đây là chương trình nạp cho PIC: #include <16f877a.DEL1 DJNZ R5.Nhưng CCS C cho phép bạn phối hợp ASSEMBLY cùnh với C .#150 DEL3: mov r6.nowdt. Trần Thanh Hiền.#100 DEL1: mov r7.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính MOV P1.Chương trình CCS dùng cho tài liệu này là PCW COMPILER version 3. Phiên bản mới nhất là 3. ví dụ như điều chế PWM . . Phan Thanh Tiến //LCD driver 86 .Chọn “Compiler” để biên dịch chương trình bạn đang viết. “Microchip 14 bit” để viết chương trình cho PIC 14 bit . bạn có thể gỡ rối chương trình và nắm được hoạt động của nó .#'O'.227 có nhiều hàm mới và chức năng mới . PCM và PCH . là công cụ rất quan trọng . Giới thiệu ngôn ngữ CCS: . giúp bạn quản lý mã và nắm được các thức mã sinh ra và nó chạy như thế nào . nó sinh mã không theo ý muốn ( dù không sai . . Nhóm: Trịnh Hoàng Long. vào New để tạo 1 file C mới . bao gồm : PCB .#120 DEL2: djnz r7. điều này cho phép chương trình của bạn sẽ trở nên rất uyển chuyển .DEL2 djnz r6.h> int i.Để viết 1 chương trình C mới : chạy CCS .t1. . Đây là ngôn ngữ lập trình đầy sức mạnh .Mặt khác .Chọn “Microchip 12 bit” để viết chương trình cho PIC 12 bit . CallTree hiển thị phân bổ bộ nhớ . SYMBOL hiển thị bộ nhớ cấp phát cho từng biến . kết hợp được sức mạnh của cả 2 ngôn ngữ . . ví dụ như sinh nhiều mã lệnh không quan trọng khi thực thi hàm ngắt ) làm chậm tốc độ thực thi chương trình nếu bạn đòi hỏi chương trình xử lý với tốc độ cao . giúp quản lý bộ nhớ các biến chương trình .CCS cung cấp các công cụ tiện ích giám sát hoạt động chương trình như : C/ASM list : cho phép xem mã ASM của file bạn biên dịch . “Microchip PIC18” để viết chương trình cho PIC18 . . . Trên thanh toolbar : . giúp bạn nhanh chóng trong việc viết chương trình hơn so với ngôn ngữ Assembly .00 MHz #include <mylcd.222 (2004) . float t.07 (2001 ) hoặc 3.SOS1 LJMP MAIN SOS1: LJMP SOS ..

write_1wire(0x44).0) printf(lcd_putc.0.i++) { buffer[i]=read_1wire(). write_1wire(0xcc).php?t=752 địa chỉ tham khảo) function varargout = buttonA(varargin) Nhóm: Trịnh Hoàng Long.0) printf(lcd_putc. được thiết kế bởi công ty MathWorks. else if(t>30. tạo các giao diện người dùng và liên kết với những chương trình máy tính viết trên nhiều ngôn ngữ lập trình khác. Sau đây là chương trình lập trình xuất dự liệu cho MATLAB: ( http://www.1). thực hiện thuật toán.0&&t<40.2). else if(t>=40. Trần Thanh Hiền.0) printf(lcd_putc. } t=make16(buffer[1].1 deg C resolution lcd_gotoxy(2. vẽ đồ thị hàm số hay biểu đồ thông tin.com/forum/showthread."mat! ").1f\'C"."lanh! ").buffer[0]). else if(t<20) printf(lcd_putc.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI main() { lcd_init(). Giới thiệu MATLAB: MATLAB là một môi trường tính toán số và lập trình. if(t>=20&&t<=30."nong! "). if(t>=60) output_c(0b111111).0) output_c(0b000000). //skip ROM write_1wire(0xbe). read_ok=1. } } 4.i<8. //LCD start //skip ROM write_1wire(0xcc). //read scratchpad for(i=0.t). Phan Thanh Tiến 87 ."nhietdo=%3. lcd_gotoxy(1.picvietnam. printf(lcd_putc. //calculate temperature t=(float)t/16."chay! "). while(true) { init_1wire(). else if(t>=20&&t<29. //convert T init_1wire(). else output_c(0b000000). //Calculation 0. delay_ms(1000). Matlab cho phép tính toán số với ma trận.

output = hObject. function pushbutton1_Callback(hObject. @buttonA_OpeningFcn.Executes just before buttonA is made visible.. mfilename. function buttonA_OpeningFcn(hObject.to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to buttonA (see VARARGIN) % Choose default command line output for buttonA handles.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính % Begin initialization code . function varargout = buttonA_OutputFcn(hObject. eventdata.figure1). handles) % varargout cell array for returning output args (see VARARGOUT).DO NOT EDIT % --.. .. % --.. handles). handles. .gui_Callback = str2func(varargin{1}).Outputs from this function are returned to the command line.. eventdata.. varargin) % This function has no output args.output. if nargin && ischar(varargin{1}) gui_State. [] . varargin{:}). @buttonA_OutputFcn.to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles. gui_State = struct('gui_Name'. eventdata. else gui_mainfcn(gui_State. 'gui_OutputFcn'. 'gui_LayoutFcn'. gui_Singleton. varargin{:}).. % UIWAIT makes buttonA wait for user response (see UIRESUME) % uiwait(handles.. .Executes on button press in pushbutton1.DO NOT EDIT gui_Singleton = 1... end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State. []). . % Update handles structure guidata(hObject. % hObject handle to figure % eventdata reserved . 'gui_Singleton'. see OutputFcn. 'gui_OpeningFcn'. % hObject handle to figure % eventdata reserved . end % End initialization code . Trần Thanh Hiền. % --. handles) %function love1 Nhóm: Trịnh Hoàng Long. . Phan Thanh Tiến GVHD: Cô BÙI THỊ KIM CHI 88 . 'gui_Callback'.

function pushbutton3_Callback(hObject. fopen(cong).'BaudRate'. function pushbutton2_Callback(hObject. handles) %function love1 cong=serial('COM5'). fprintf(cong.to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính cong=serial('COM5'). set(cong. eventdata. fprintf(cong.'%c'. function pushbutton4_Callback(hObject.to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --.'BaudRate'.'BaudRate'. set(cong.'BaudRate'. fprintf(cong.to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --.'BaudRate'. % hObject handle to pushbutton1 (see GCBO) % eventdata reserved .to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --. fopen(cong). function pushbutton5_Callback(hObject. eventdata.Executes on button press in pushbutton3.'%c'. % hObject handle to pushbutton4 (see GCBO) % eventdata reserved . Trần Thanh Hiền. eventdata.Executes on button press in pushbutton5. % hObject handle to pushbutton2 (see GCBO) % eventdata reserved . handles) cong=serial('COM5'). fopen(cong).Executes on button press in pushbutton2. fprintf(cong.'%c'. set(cong.9600). fclose(cong). handles) %function love1 cong=serial('COM5').'C').Executes on button press in pushbutton4. eventdata.'%c'.'B'). Nhóm: Trịnh Hoàng Long. fclose(cong). fopen(cong). Phan Thanh Tiến GVHD: Cô BÙI THỊ KIM CHI 89 . % hObject handle to pushbutton3 (see GCBO) % eventdata reserved .9600). fclose(cong).'D').9600).9600). fclose(cong).9600).'A'). handles) %function love1 cong=serial('COM5'). set(cong. set(cong.

'BaudRate'. Trần Thanh Hiền.'O').Executes on button press in pushbutton6.'BaudRate'. handles) cong=serial('COM5').to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) GVHD: Cô BÙI THỊ KIM CHI Nhóm: Trịnh Hoàng Long.'%c'. eventdata.to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --. % hObject handle to pushbutton5 (see GCBO) % eventdata reserved . fclose(cong).to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --.'%c'.'BaudRate'. % hObject handle to pushbutton8 (see GCBO) % eventdata reserved .'F').'%c'. set(cong. eventdata. handles) cong=serial('COM5').'%c'.9600).Đề tài: Điều khiển thiết bị từ xa thông qua máy tính fopen(cong). fclose(cong). % hObject handle to pushbutton6 (see GCBO) % eventdata reserved . fopen(cong).'E'). fprintf(cong. set(cong. fopen(cong). fprintf(cong. fprintf(cong. fclose(cong). set(cong. function pushbutton9_Callback(hObject. Phan Thanh Tiến 90 . function pushbutton6_Callback(hObject. % hObject handle to pushbutton9 (see GCBO) % eventdata reserved . fprintf(cong.Executes on button press in pushbutton8.Executes on button press in pushbutton9. eventdata. handles) cong=serial('COM5').9600).to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --.9600). fclose(cong).'S'). fopen(cong). function pushbutton8_Callback(hObject.

.Chú thích: . Nhóm: Trịnh Hoàng Long. Mô hình điều khiển bao gồm 3 thiết bị: đèn. quạt. Trần Thanh Hiền. Các thành phần phụ trợ: Đèn cửa (tự động bật tắt). cửa. . Nhiệt độ (cảnh báo cháy). Mô hình điều khiển có 2 chế độ : Enable (cho phép điều khiển) và Disable (không cho phép điều khiển).Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI CHƯƠNG IV: ĐIỀU KHIỂN I/ Giao diện MATLAB điều khiển thông qua máy tính: . Phan Thanh Tiến 91 .

Trần Thanh Hiền. Phan Thanh Tiến 92 .Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI III/ Sơ đồ điều khiển thông qua mạng: Nhóm: Trịnh Hoàng Long.

1. Phan Thanh Tiến 93 .4 1.Add : administrator Nhóm: Trịnh Hoàng Long.168. Trần Thanh Hiền.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI III/ Điều khiển thông qua mạng LAN: . Máy Server: .3 .168. Cấu hình trên máy Server: .1.My computer >>> Propertise >>> Remote >>> Check : Allow user to connect remotely to this computer >>> Nhấn : Select Remote user .IP: 192. Máy Client: .IP: 192.

Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI 2.Nhập địa chỉ IP máy cần điều khiển . Phan Thanh Tiến 94 .Nhập Username và Password Nhóm: Trịnh Hoàng Long. Cấu hình trên máy Client: . Trần Thanh Hiền.

Phan Thanh Tiến 95 . cần cấu hình NAT Server trên Modem . Trần Thanh Hiền.com Nhóm: Trịnh Hoàng Long. ở đây ta dùng trang No-ip.Ngoài những bước trên .Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI IV/ Điều khiển thông qua mạng Internet: .Cần đăng ký 1 free host.

Trần Thanh Hiền. Khi cần Request IP ta nhờ Server của NO-ip phân giải Host đã đăng kí Từ đó làm lại các bước đã nêu ở III là có thể Remote Server. Nhóm: Trịnh Hoàng Long.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI .Tải phần mềm Client của No-ip . Phan Thanh Tiến 96 .

************************************************************************************ Nhóm: Trịnh Hoàng Long. Kết quả. đặc biệt là lĩnh vực truyền dữ liệu nên em bắt đầu nghiên cứu lĩnh vực này và thực hiện đề tài : “Điều khiển thiết bị từ xa thông qua máy tính” với những thành quả nhất định trong thi công: _ Viết chương trình giao tiếp giữa Vi Điều Khiển AT89C51 và Máy Vi Tính. Phan Thanh Tiến 97 . đặc biệt là lĩnh vực điện tử và vi tính đã làm tiền đề cho mọi ngành khoa học khác dễ dàng phát triển – sự phát triển vũ bão đó luôn đeo đuổi hoài bảo duy nhất – phục vụ con người. Tuy nhiên. nhằm nâng cao năng suất lao động. Trần Thanh Hiền. mỗi ứng dụng trong cuộc sống con người luôn sẵn sàng thừa hưởng những tinh hoa đó.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI Phần C: Tổng Kết Đánh giá kết quả thi công Với sự phát triển đến mức tiên tiến của KHKT như hiện nay. Đây là lần đầu tiên tiến hành thi công với chương trình giao tiếp khá phức tạp. Mặc dù đã cố gắng nhiều vẫn không tránh được những thiếu sót: chưa hoàn thành được chương trình truyền dữ liệu từ IC sang và chương trình giao diện điều khiển còn rất đơn giản. _ Mạch giao tiếp giữa Vi Điều Khiển AT89C51 và Máy Vi Tính thông qua port giao tiếp nối tiếp. Để tiếp cận với lĩnh vực tự động hoá. kết quả thi công vẫn đạt được những yêu cầu nhất định. nên ý muốn hoàn chỉnh đến mức tối ưu nhưng vẫn chưa đạt được. không ngừng thúc đẩy xã hội về mọi mặt. nâng cao cuộc sống con người.

******************************HẾT******************************* Nhóm: Trịnh Hoàng Long. Trần Thanh Hiền. Phan Thanh Tiến 98 .Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI LỜI CẢM TẠ Xin chân thành cám ơn tập thể thầy cô trường CĐKT Cao Thắng đã tận tình giảng dạy chúng em trong suốt những năm qua. Tuy đó chỉ là một khoảng thời gian ít ỏi nhưng chúng em đã tiếp thu được rất nhiều những kiến thức bổ ích góp phần làm hành trang vào đời cho chúng em sau này.

Phan Thanh Tiến 99 . Trần Thanh Hiền.Đề tài: Điều khiển thiết bị từ xa thông qua máy tính GVHD: Cô BÙI THỊ KIM CHI Nhóm: Trịnh Hoàng Long.

Sign up to vote on this title
UsefulNot useful