Các nhiệm vụ chủ yếu của Tổng công ty Đường sắt Việt nam được quy định tại Quyết định 34/ QĐ-TTg như sau: - Trực tiếp kinh doanh vận tải, đóng vai trò của một doanh nghiệp dịch vụ vận tả
Trang 1MỤC LỤC
LỜI MỞ ĐẦU 9
Chương dẫn nhập 10
1.1 Đặt vấn đề 10
1.2 Giới hạn đề tài 10
1.3 Mục đích nghiên cứu 10
1.4 Đối tượng nghiên cứu 10
CHƯƠNG 2 : TỔNG QUAN VỀ NGÀNH ĐƯỜNG SẮT VIỆT NAM 11
2.2 Thực trạng về hệ thống cảnh báo an toàn của ngành đường sắt ở Việt Nam hiện nay 13
CHƯƠNG 3: CƠ SỞ THIẾT KẾ 15
3.1 Thiết kế hệ thống cảnh báo tàu lửa 15
3.2 Một số loại cảm biến được sử dụng 15
3.2.1 Cảm biến quang 15
3.2.2 Cảm biến địa chấn 16
3.2.3 cách thức nhận biết tàu đến 16
Chương 4: KHẢO SÁT VI ĐIỀU KHIỂN PIC 16F877A 17
4.1 Vi điều khiển PIC 16F877A 17
4.2 Sơ lược về vi điều khiển PIC 16F877A 18
Nhận xét 19
4.3 Cấu trúc phần cứng của PIC 16F877A 24
4.3.1 Một số chế độ đặt biệt của vi điều khiển PIC 16F877A 26
4.3.2 Reset 27
4.3.3 MCLR 27
4.3.4 Interrupts 28
4.3.5 Chế độ nguồn thấp Sleeep (Power Down Mode) 29
4.3.6 Bộ định thời giám sát (Watch Dog Timer – WDT) 29
4.4 Tổ chức bộ nhớ 31
4.4.1 Bộ nhớ chương trình 31
4.4.2 Bộ nhớ dữ liệu 32
4.5 Các thanh ghi chức năng đặt biệt 38
4.5.1 Thanh ghi trạng thái (Status Register) 38
4.5.2 Thanh ghi tùy chọn (Option Reg Register) 38
4.5.3 Thanh ghi điều khiển ngắt INTCON (Interrupt Control Register) 39
4.3.4 Thanh ghi cho phép ngắt ngoại vi 1 (PIE1 Register) 40
4.3.5 Thanh ghi cờ của các ngắt ngoại vi 1 (PIR1 Register) 41
4.5.6 Thanh ghi cho phép ngắt ngoại vi 2 (PIR2 Register) 42
4.5.8 Thanh ghi Work và tập lệnh của PIC 16F877A 43
4.6 Khái quát về chức năng các Port trong vi điều khiển PIC 16F877A 44
4.6.1 Port A và thanh ghi TRIS A 45
4.6.2 PORT B và thanh ghi TRISB 47
4.6.3 Port C và thanh ghi TRISC 48
Trang 24.6.4 Port D và thanh ghi TRISD 50
3.6.5 PortE và thanh ghi TRISE 51
4.7 Bộ định thời của PIC 16F877A 52
4.7.2 Bộ định thời Timer 1 54
4.7.3 Bộ định thời Timer 2 57
4.8 Module CCP 59
4.8.1 Thanh ghi điều khiển CCP 61
4.8.2 Chế độ Capture 62
4.8.3 Chế độ Campare 62
4.8.4 Chế độ điều chế xung PWM 63
4.9 Module ADC 66
4.9.1 Giới thiệu Module ADC 10 bit 66
4.9.2 Các thanh ghi điều khiển 67
4.9.3 Hoạt động của Module ADC 68
4.9.4 Thời gian lấy mẫu: 70
4.9.5 Lựa chọn xung Clock cho biến đổi ADC 70
4.9.6 Cấu hình các chân Analog 71
4.9.7 Chuyển đổi ADC 71
4.9.8 Hoạt động của Module ADC trong chế độ ngủ 72
4.9.9 Ảnh hưởng của Reset 73
4.10 Giao tiếp nối tiếp 74
4.10.1 USART bất đồng bộ 75
4.10.2 USART đồng bộ 79
4.11 Lập Trình CCS 83
4.11.1 Giới thiệu CCS 83
4.11.2 Khai báo và sử dụng biến hằng và mảng 83
4.11.2.1 Kiểu dữ liệu 83
4.11.2.2 Biến 84
4.11.2.3 Hằng 84
4.11.2.4 Hàm 84
4.11.3 Các cấu trúc cơ bản 85
4.11.3.1 Cấu trúc if… else 85
4.11.3.2 Cấu trúc Switch… Case 85
4.11.3.3 Cấu trúc for 86
4.11.3.4 Cấu trúc while 86
4.11.3.5 Cấu trúc do… while 86
4.11.4 Các hàm cơ bản 87
4.11.4.1 Delay 87
4.11.4.2 ADC 88
4.11.4.3 Capture compare pwm (ccp) 90
4.11.4.4 interrupts 91
4.11.4.5 value = get_timer1() 92
4.11.4.6 set_timer1() 93
4.11.4.7 Enabel_interrupts 93
CHƯƠNG 5: MỘT SỐ LINH KIỆN KHÁC 94
5.1 IC TL082 94
5.1.1 Hình dạng TL 082 94
Trang 35.1.2 Cấu tạo của TL082 94
5.1.3 Một số thông số của TL 082 94
5.2 RELAY 97
5.2.1 Hình dạng của relay 97
5.2.2 Cấu tạo bên trong của relay 97
5.2.3 Một số thông số kỹ thuật của relay 98
5.3 Cảm biến quang 98
5.3.1 Hình dạng của cảm biến quang 98
5.3.2 Cấu tạo bên trong 99
5.3.3 Một số thông số kỹ thuật của cảm biến quang 99
5.4 Động cơ DC 100
5.4.1 Hình dạng động cơ DC 100
5.4.2 Cấu tạo 100
CHƯƠNG 6 :THIẾT KẾ VÀ THI CÔNG MẠCH 103
6.1 Sơ đồ nguyên lý 103
6.2 Sơ đồ khối 104
6.3 sơ đồ vị trí lắp đặt cảm biến 104
6.4 Giải thích hoạt động của mạch 105
6.5 Khối nguồn 105
6.6 Khối cảm biến hồng ngoại 106
6.7 khối công suất động cơ 109
6.8 Khối xử lý trung tâm 110
6.9 Phần code chương trình của vi xử lý 112
6.9.1 Lưu đồ giải thuật 112
6.9.2 Chương trình cho vi xử lý 113
CHƯƠNG 7: TỔNG KẾT 118
Trang 4LỜI MỞ ĐẦU
Ngày nay Khoa hoc kỹ thuật nói chung cũng như ngành Công Nghệ Điện
Tử nói riêng đang rất phát triển và có những đóng góp lớn lao vào nhiều mặt của đời sống xã hội Các phát minh khoa học kỹ thuật kỹ thuật không ngừng ra đời phục vụ cho nhu cầu cho nhu cầu ngày càng cao của con người (nhu cầu về giải trí, về công việc, về đi lại ).Sau một thời gian tìm hiểu và nghiên điều kiện thực tế về tình hình của ngành đường sắt ở Việt Nam vẫn còn nhiều vụ tai nạn nghiêm trọng và đáng thương tiếc xảy ra cũng như vấn đề về an toàn giữa những nơi giao cắt giữa đường bộ và đường sắt Nhóm chúng em quyết định
thực hiện đề tài “Hệ thống cảnh báo giao nhau giữa đường bộ và đường sắt dùng PIC16F877A”.Đây là một đề tài có khả năng ứng dựng thực tế và có
tính kinh tế
Những kiến thức và năng lực đạt được trong ba năm học tập tại trường sẽ được đánh giá qua việc thực hiện đồ án này Chúng em em sẽ cố gắng vận dụng tất cả những kiến thức đã được học ở trường cùng với sự tìm tòi nghiên cứu và sự chì dẫn của thầy NGUYỄN HỮU PHƯỚC , để cố gắng hoàn thành tốt đề tài này
Nhưng vì trình độ chuyên môn của chúng em còn hạn chế nên đề tài sẽ còn nhiều thiếu xót và chưa toàn diện, mong quý thầy cô xem xét và đưa ra những đánh giá để chúng em có hướng phát triển đề tài cao hơn nữa và được ứng dụng vao thực tế cuộc sống Chúng em rất mong nhận được những ý kiến đóng góp tận tình của quý thầy cô và các bạn Cuối cùng em xin chân thành cảm ơn quý thầy cô và các bạn
Trang 5Chương dẫn nhập 1.1 Đặt vấn đề
Với những nhu cầu về khoa học kỹ thuật và nhu cầu của con người ngày càng cao đòi hỏi ngày càng nhiều những ứng dụng trong lĩnh vực điện tử vào thực tế cuộc sống , đồng thời giúp cuộc sống con người ngày càng hoàn thiện hơn.Trong đó, vấn đề về tai nạn giao thông là một trong những vấn đề nóng bỗng ( ngày càng có nhiều vụ tai nạn nghiêm trọng tại những chốt giao nhau giữa đường bộ và đường sắt xày ra) Tìm hiểu về vấn đề này nhóm quyết định thực hiện đồ án của mình là “ hệ thống cảnh báo tàu lửa điểm giao nhau giữa đường bộ và đường sắt”
1.2 Giới hạn đề tài
Yêu cầu đề tài đòi hỏi rất nhiều về phần thiết kế cơ khí do đó về phần
mô hình nhóm làm chưa hoàn chỉnh.Quy mô của đè tài chỉ dừng lại ở mức
độ khi phát hiện tàu thì sẽ có tín hiệu cảnh báo bằng đèn, chuông và thiết lặp rào chắn an toàn
Tuy nhiên, trong giới hạn về thời gian và trình độ, khó khăn trong việc tìm kiếm linh kiện thi công, nên khoảng cách điều khiển bị giới hạn và độ chính xác chưa cao của mạch Đồng thời, thi công sản phẩm bằng các thiết
bị đơn giản và thiếu thốn nên chưa đạt yêu cầu về tính thẩm mỹ và những yêu cầu phức tạp chưa thực hiện được
1.3 Mục đích nghiên cứu
Trong quá trình nghiên cứu và thực hiện đề tài này nhằm giúp người học:
- Tăng khả năng tự nghiên cứu cũng như tự học
- Bước đầu tiếp xúc với thực tế
- Vận dụng những kiến thức đã có đồng thời tìm tòi những kiến thức mới để hiểu sâu sắc hơn trong lĩnh vực này Để thiết kế được một mạch điều khiển như đã nêu ở trên thì người nghiên cứu phải nắm vững kiến thức chuyên ngành điện tử, tìm hiểu, nghiên cứu qua sách vở, tài liệu nước ngoài và dạng mạch thực tế để thi công phần cứng
1.4 Đối tượng nghiên cứu
- Tìm hiểu vi điều khiển PIC 16F877A
- Các mạch cảm biến hồng ngoại
Trang 6- Cách đảo chiều động cơ một chiều
CHƯƠNG 2 : TỔNG QUAN VỀ NGÀNH ĐƯỜNG SẮT VIỆT
NAM
2.1 Lịch sử ra đời của ngành đường sắt Việt Nam
Tuy ra đời không sớm so với các phương tiện giao thông vận tải khác nhưng Đường sắt mau chóng trở thành phương tiện chủ lực trong vận tảI và trong sự phát triển kinh tế - xã hội của mỗi quốc gia Vai trò quan trọng của vận tải đường sắt là khả năng kết nối giữa các phương tiện vận tảI khác nhau để hình thành nên vận tải đa phương thức Vận tải đường sắt là cầu nối giữa các vùng dân cư lãnh thổ, là phương tiện chuyên chở tốt nhất nguyên vật liệu cho sản xuất công nghiệp, phục vụ giao lưu giữa các địa phương, phục vụ quốc phòng, vận chuyển ứng cứu các vùng bị lũ lụt, vận chuyển hành khách nội đô, đồng thời là phương tiện vận chuyển liên quốc gia thuận lợi, an toàn và hiệu quả Ngành đường sắt Việt Nam trong quá trình hình thành và phát triển đã có bề dày lịch sử 129 năm (1881- 2010), gắn liền với những năm tháng thăng trầm của đất nước, gắn bó máu thịt với ý chí chiến đấu kiên cường bất khuất của dân tộc, của cuộc đấu tranh dựng nước và giữ nước
Sau thắng lợi của cuộc kháng chiến chống thực dân Pháp, miền Bắc bước vào thời kỳ hoà bình, xây dựng Ngày 6/4/1955, Tổng cục Đường sắt được thành lập theo quyết định số 505/TTg của Chính phủ Từ đó cho đến khi cuộc kháng chiến chống Mỹ cứu nước thắng lợi hoàn toàn (30/4/1975), ngành Đường sắt luôn hoàn thành nhiệm vụ được Đảng và Nhà nước giao: xây dựng, khai thác, bảo vệ và phát triển đường sắt, với những đóng góp xứng đáng vào sự nghiệp cách mạng vĩ đại của dân tộc Sau ngày miền Nam giải phóng, cả nước bước vào thời kỳ xây dựng và bảo vệ Tổ quốc xã hội chủ nghĩa Cùng với công cuộc đổi mới của cả nước, ngày 14/5/1990, Chủ tịch Hội đồng Bộ trưởng (nay là Thủ tướng Chính phủ) đã có quyết định số 158/QĐ-TTg chuyển Tổng cục đường sắt thành Liên hiệp Đường sắt Việt nam, thực hiện nhiệm vụ sản xuất
Trang 7kinh doanh theo cơ chế của liên hiệp xí nghiệp đặc thù, có tư cách pháp nhân,
là doanh nghiệp Nhà nước hạch toán tổng hợp toàn ngành, riêng khối vận tải hạch toán tập trung Tiếp đó, để phù hợp với tình hình sản xuất kinh doanh mới, ngày 4/3/2003, Thủ tướng Chính phủ đã ra quyết định số 34/QĐ- TTg, chuyển Liên hiệp Đường sắt Việt nam thành Tổng công ty
Đường sắt Việt Nam, thực hiện nhiệm vụ sản xuất kinh doanh theo mô hình Tổng công ty Nhà nước (Tổng công ty 91) Các nhiệm vụ chủ yếu của Tổng công ty Đường sắt Việt nam được quy định tại Quyết định 34/ QĐ-TTg như sau:
- Trực tiếp kinh doanh vận tải, đóng vai trò của một doanh nghiệp dịch vụ vận tải;
- Quản lý, sửa chữa, bảo trì cơ sở hạ tầng đường sắt; chế tạo, đóng mới, đại tu, sửa chữa lớn và sản xuất các phương tiện vận tải, thiết bị, phụ tùng chuyên ngành; Quản lý, sửa chữa, bảo trì cơ sở hạ tầng đường sắt;
- Đại lý, môi giới, cung ứng lao động và dịch vụ vận tải đường sắt; xuất nhập khẩu lao động, phương tiện, vật tư, thiết bị chuyên ngành;
- Hợp tác liên doanh, liên kết với các tổ chức kinh tế trong và ngoài nước
Hội đồng quản trị, Ban kiểm soát;
Tổng giám đốc và bộ máy giúp việc;
Các đơn vị thành viên
Các đơn vị thành viên thuộc 7 khối sản xuất, kinh doanh khác nhau như: Vận tải, cơ sở hạ tầng, xây dựng cơ bản, công nghiệp, dịch vụ, quản lý dự án và trường học Trong đó, hoạt động quan trọng nhất có thể nói là hoạt động vận tải, do 5 đơn vị chính phụ trách, đó là:
Công ty vận tải hành khách đường sắt Hà Nội
Trang 8 Công ty vận tải hành khách đường sắt Sài Gòn
Công ty vận tải hàng hoá đường sắt
Liên hiệp Sức kéo Đường sắt
Trung tâm điều hành vận tải đường sắt
Xuyên suốt chiều dài lịch sử xây dựng và phát triển, đến nay, một mạng lưới Đường sắt từ Bắc tới Nam với chiều dài 3.143km đã được hình thành, trong đó có 2632 km đường sắt chính tuyến, 403 km đường ga, 108 km đường nhánh Phân bổ của mạng lưới đường sắt theo chiều dài đất nước và theo hình xương cá, gồm có 15 tuyến chính và nhánh đi qua 35 tỉnh thành (trong đó tuyến Bắc - Nam có chiều dài khai thác lớn nhất) trải dài khắp đất nước từ Bắc xuống Nam, từ Tây sang Đông và có hàng chục tuyến đường sắt chuyên dùng phục vụ phát triển kinh tế xã hội của địa phương Bên cạnh đó, Đường sắt Việt Nam cũng đang nỗ lực không ngừng trong việc triển khai các
dự án xây dựng những tuyến đường sắt mới, hiện đại hơn Trong tương lai không xa, những tuyến đường sắt trên cao, đường sắt cao tốc sẽ được xây dựng
và đưa vào hoạt động
Với truyền thống quý báu về đoàn kết, thống nhất ý chí và hành động, lại được sự quan tâm giúp đỡ của Đảng, Chính phủ, của các bộ ngành và các địa phương, CBCNV ngành ĐS luôn phấn đấu đưa Ngành đường sắt thành một ngành kinh tế mũi nhọn của đất nước, nhanh chóng hội nhập đường sắt trong khu vực và trên thế giới
2.2 Thực trạng về hệ thống cảnh báo an toàn của ngành đường sắt ở Việt Nam hiện nay
Hiện nay tình hình tai nạn giao thông ngày càng nhiều,mỗi năm hàng ngàn
vụ tai nạn giao thông xảy ra.Trong đó tai nạn nghành đường sắt chiếm khoảng 20%.tai nan đường sắt xảy ra chủ yếu do ý thức chấp hành luật lệ giao thông của người đi đường,đồng thời cũng do hệ thống cảnh báo an toàn đường sắt không làm tốt chức năng cảnh báo của mình
Trang 9Hệ thống cảnh báo tự động giao giữa đường bộ và đường sắt nhằm cảnh báo cho người tham gia giao thông lưu hành qua đường ngang mỗi khi có đoàn tàu qua lại,tự động cảnh báo và lập rào chắn để ngăn người đi đường vượt đường
ngang mỗi khi tàu chạy qua.Góp phần đảm bảo an toàn cho người tham gia giao thông
Ở Việt Nam hiện nay hệ thống cảnh báo đường ngang hiện nay có hai loại Một là đường ngang có rào chắn, có người gác ghi Hai là đường ngang lắp đặt thiết bị cảnh báo tự động Về lý thuyết, thiết bị cảnh báo tự động sẽ hoạt động trước khi đoàn tàu
đi qua đường ngang một khoảng thời gian đủ an toàn để phương tiện dừng lại quan sát Động tác cảnh báo này cũng có hai hình thức, hoặc chỉ có chuông reo
và đèn đỏ bật sáng, hoặc có thêm cần chắn tự động Trên tuyến đường sắt Thống Nhất thuộc địa bàn Hà Nội có 83 đường ngang hợp pháp, trong đó 26 đường ngang được lắp đặt hệ thống cảnh báo tự động Mô hình này xuất hiện đầu tiên từ năm 2001, được xem như giải pháp giúp giảm gánh nặng ngân sách cho những đường ngang có người gác
Nếu hệ thống cảnh báo này được lắp đặt hoàn thiện và hoạt động tốt nó sẽ là một phương án tốt vừa giảm được gánh nặng về ngân sách cho nhà nước và hệ thống đường sắt nhà nước trở nên hiện đại và an toàn hơn
Trang 10CHƯƠNG 3: CƠ SỞ THIẾT KẾ
3.1 Thiết kế hệ thống cảnh báo tàu lửa
Thiết kế hệ thống cảnh báo có các chức năng cảnh báo cho người đi đường nhận biết được sự nguy hiểm,phải chắc chắn,đảm bảo được sự an toàn tuyệt đối,không được sai xót.vi nếu sai xót có thể để xảy ra tai nạn giao thông gây thiệt hại về người và tài sản
Hệ thống cảnh báo bao gồm:hệ thống đèn tín hiệu giao thông,còi báo động,và
Cảm biến quang có thể được sử dụng là cảm biến hồng ngoại.nếu sử dụng
cảm biến hồng ngoại để thiết kế hệ thống nhận biết tín hiệu tàu đến thì thiết kế một bộ phát tín hiệu hồng ngoại tại đầu của mỗi đoàn tàu,còn bộ thu tín hiệu hồng ngoại sẽ được đặt ở các trạm nhận tín hiệu từ cảm biến.khi tàu đến thì bộ thu tin hiệu sẽ nhận được tín hiệu hồng ngoại do bộ phát ở dầu tàu phát ra
Trang 11Tuy nhiên do điều kiện khí hậu ,môi trường và tác động của con người nên cảm biến hồng ngoại là một giải pháp không mang tính thực tế vì độ tin cậy không cao Dễ bị hư hỏng va có thể bộ phận thu tín hiệu bi che khuất bởi một tác nhân bên ngoài làm cho bộ phận thu nhận tín hiệu không thể hoạt động dẫn đến không cảnh báo được cho người tham gia giao thông.vì vậy cảm biến hồng ngoại ít được sử dụng ngoài thực tiễn
3.2.2 Cảm biến địa chấn
Đây là loại cảm biến được công ty cadpro nghiên cứu và phát triển để chuyên
sử dụng cho hệ thống nhận biết tàu hoả.cảm biến địa chấn cho phép nhận biết một cách chính xác tín hiệu tàu hoả đến mà không nhầm lẫn với các dạng chuyển động khác
Cảm biến được chôn sâu dưới long đất khoảng 2m nên tránh được các tác dộng từ bên ngoài,
yêu cầu đặt ra để hệ thống hoạt dộng ổn dịnh là vận tốc của tàu là phải từ
13km/h trở lên
do khả năng tránh được tác động bên ngoài và khả năng chống nhiễu nên cảm biến địa chấn được sử dụng trong việc nhận biết tàu đến rất hiệu quả và có độ tin cậy rất cao
Trang 12Chương 4: KHẢO SÁT VI ĐIỀU KHIỂN PIC 16F877A
4.1 Vi điều khiển PIC 16F877A
Đâ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 Mỗi lệnh đều được thực thi trong một chu kì xung clock Tốc độ
hoạt động tối đa cho phép là 20 MHz
PIC 16F877A là dịng PIC phổ biến nhất hiện nay (đủ mạnh về tính năng, 40
chân,
bộ nhớ đủ cho hầu hết các ứng dụng thơng thường) Cấu trúc tổng quát của
PIC16F877A như sau:
- 8 K Flash ROM
- 368 Bytes RAM
- 256 Bytes EEPROM
- 5 ports (A, B, C, D, E) vào ra với tín hiệu điều khiển độc lập
- 2 bộ định thời 8 bits (Timer 0 và Timer 2)
- Một bộ định thời 16 bits (Timer 1) cĩ thể hoạt động trong chế độ tiết kiệm năng lượng (SLEEP MODE) với nguồn xung Clock ngồi
- 2 bơ CCP( Capture / Compare/ PWM)
- 1 bộ biến đổi AD 10 bits, 8 ngõ vào
- 2 bộ so sánh tương tự (Compartor)
- 1 bộ định thời giám sát (WatchDog Timer)
- Một cổng song song 8 bits với các tín hiệu điều khiển
- Một cổng nối tiếp
- 15 nguồn ngắt
- Cĩ chế độ tiết kiệm năng lượng
- Nạp chương trình bằng cổng nối tiếp ICSP(In-Circuit Serial
Programming)
- Được chế tạo bằng cơng nghệ CMOS
- 35 tập lệnh cĩ độ dài 14 bits
- Tần số hoạt động tối đa 20MHz
CÁC ĐẶC TÍNH NGOẠI VI BAO GỒM CÁC KHỐI CHỨC NĂNG
SAU
Ø Timer0: bộ đếm 8 bit với bộ chia tần số 8 bit
Ø Timer1: bộ đếm 16 bit với bộ chia tần số, 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
Ø Timer2: bộ đếm 8 bit với bộ chia tần số, bộ postcaler
Trang 13Ø Hai bộ Capture/so sánh/điều chế độ rông xung
Ø Các chuẩn giao tiếp nối tiếp SSP (Synchronous Serial Port), SPI và I2C
Ø Chuẩn giao tiếp nối tiếp USART với 9 bit địa chỉ
Ø Cổng giao tiếp song song PSP (Parallel Slave Port) với các chân điều khiển RD, WR,
Ø CS ở bên ngoài
Ø Các đặc tính Analog:
Ø 8 kênh chuyển đổi ADC 10 bit
Ø Hai bộ so sánh
Ø 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.000 lần
Ø Bộ nhớ EEPROM với khả năng ghi xóa được 1.000.000 lần
Ø Dữ liệu bộ nhớ EEPROM có thể lưu trữ trên 40 năm
Ø Khả năng tự nạp chương trình với sự điều khiển của phần mềm 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 Watchdog Timer với bộ dao động trong
Ø Chức năng bảo mật mã chương trình
Ø Chế độ Sleep
Có thể hoạt động với nhiều dạng Oscillator khác nhau
4.2 Sơ lược về vi điều khiển PIC 16F877A
Sơ đồ chân
Hình 2.1 Sơ đồ khối PIC 16F877A
Trang 15chan thạch anh và một chân dùng để RESET vi điều khiển
- 5 port của PIC16F877A bao gồm :
Trang 16Mỗi chân của vi điều khiển PIC 16F877A có một chức năng khác nhau Trong
đó có một số chân đa công dụng: mỗi chân có thể hoạt động như một đường xuất nhập hoặc là một chân chức năng đặc biệt dùng để giao tiếp với các thiết
bị ngoại vi
Trang 18Hình 4.3 Sơ đồ khối cấu trúc bên trong PIC 16F877A
Trang 194.3 Cấu trúc phần cứng của PIC 16F877A
PIC là tên viết tắt của “ Programmable Intelligent computer” do hãng General Instrument đặt tên cho con vi điều khiển đầu tiên của họ Hãng
Micrchip tiếp tục phát triển sản phầm này và cho đến hàng đã tạo ra gần 100 loại sản phẩm khác nhau
PIC16F887A là dòng PIC khá phổ biến, khá đầy đủ tính năng phục vụ cho hầu hết tất cả các ứng dụng thực tế Đây là dòng PIC khá dễ cho người mới làm quen với PIC có thể học tập và tạo nền tản về họ vi điều khiển PIC của mình Cấu trúc tổng quát của PIC16F877A như sau :
- 8K Flash Rom
- 368 bytes Ram
- 256 bytes EFPROM
- 5 port vào ra với tín hiệu điều khiển độc lập
- 2 bộ định thời Timer0 và Timer2 8 bit
- 1 bộ định thời Timer1 16 bit có thể hoạt động ở cả chế độ tiết kiệm năng lượng với nguồn xung clock ngoài
- 2 bộ Capture/ Compare/ PWM
- 1 bộ biến đổi Analog -> Digital 10 bit, 8 ngõ vào
- 2 bộ so sánh tương tự
- 1 bộ định thời giám sát (Watch Dog Timer)
- 1 cổng song song 8 bit với các tín hiệu điều khiển
- 1 cổng nối tiếp
- 15 nguồn ngắt
Trang 20Sơ đồ khối
Hình 4.4 Sơ đồ khối bên trong của vi điều khiển 16F877A
Trang 214.3.1 Một số chế độ đặt biệt của vi điều khiển PIC 16F877A
Hình 2.6 Giá trị tụ trong dao động thạch anh
Tụ có giá trị lớn sẽ mang tính ổn định của dao động nhưng làm tăng thời
Trang 22gian khởi động
Cách tính chu kỳ máy: Ví dụ ta sử dụng thạch anh 10Mhz Khi đó: Tần số dao động của thạch anh là Fosc = 10Mhz thì chu kỳ dao động của thạch anh là Tosc = 1/Fosc= 1/10*106(s)
Chu kỳ máy:
T_instruction = 4*Tosc = 4/10*10 6 (s) = 0.4 µs = 400 ns
4.3.2 Reset
PIC16F877A có thể bị reset bởi nhiều nguyên nhân khác nhau:
• Power-on Reset (POR)
• MCLR Reset during sleep
• MCLR Reset during normal operation
• WDT Reset (during normal operation)
• WDT Wake-up (during sleep)
• Brown-out Reset (BOR)
Hình 4.7 Các chế độ reset
4.3.3 MCLR
PIC16F877A có một bộ lọc nhiễu ở phần MCLR Bộ lọc nhiễu này
sẽ phát hiện và bỏ qua các tín hiệu nhiễu Ngõ vào MCLR trên chân 4 của PIC16F877A Khi đưa chân này xuống thấp thì các thanh ghi bên trong VĐK
sẽ được tải những giá trị thích hợp để khởi động lại hệ thống (Lưu ý: Reset do WDT không làm chân MCLR xuống mức thấp)
Trang 23Hình 2.8 Mạch MCLR
4.3.4 Interrupts
PIC16F877A có nhiều nguồn ngắt khác nhau Đây là một số ngắt tiêu biểu:
- Ngắt ngoài xảy ra trên chân INT
* Các thanh ghi chức năng ngắt: INTCON, PIE1, PIR1, PIE2, PIR2 (các
thanh ghi này sẽ được nghiên cứu ở các phần sau)
Trang 24Hình 4.9 Các chế độ ngắt
4.3.5 Chế độ nguồn thấp Sleeep (Power Down Mode)
Đây là chế độ hoạt động của VĐK khi lệnh sleep được thực thi Khi đó nếu được cho phép hoạt động, bộ đếm của WDT sẽ bị xóa nhưng WDT vẫn tiếp tục hoạt động bit PD (STATUS <3>) được reset về không, bit TO được set, oscillator ngưng hoạt động và các PORT giữ nguyên trạng thái như trước khi lệnh sleep được thực thi
Do khi chế độ sleep dòng cung cấp cho VĐK là rất nhỏ nên ta cần thực hiện các bước sau trước khi VĐK thực thi lệnh sleep
• Đưa tất cả các chân về trạng thái VDD hoặc VSS.
• Cần đảm bảo 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 VĐK 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ạm ngưng hoạt động của khối A/D và không cho phép các xung clock bên
ngoài tác dụng vào VĐK
• Để ý chức năng điện trở kéo lên của PORTB
• Pin MCLR phải ở mức logic cao
4.3.6 Bộ định thời giám sát (Watch Dog Timer – WDT)
Giả sử bạn viết một chương trình, bạn mong đợi chương trình này sẽ chạy nếu không có gì trục trặc xảy ra thì nó sẽ không bao giờ dừng lại, như vậy bạn phải làm
Trang 25một vòng lặp để khi chương trình chạy đến điểm cuối thì nó lại quay trở về điểm bắt đầu
Nhưng mà hãy xem một trường hợp: Giả sử chương trình kiểm tra một chân input, nếu nó lên mức cao thì Pic16f877A sẽ tiếp tục kiểm tra một chân input thứ hai có lên mức cao hay không, nếu chân input thứ hai không lên mức cao, con Pic sẽ ngồi đó chờ và nó sẽ chỉ thoát ra khỏi chỗ ngồi của nó nếu chân input thứ hai lên mức cao
Bây giờ hãy xem một trường hợp khác, giả sử như bạn viết một chương trình, bạn compiled nó thành công, và ngay cả bạn đã cho chạy mô phỏng từng bước, từng bước một trên máy tính, bằng MPLAB chẳng hạn, có vẻ như mọi chuyện đều tốt, bạn đem nạp vào con Pic Sau một thời gian chạy thử, con Pic thình lình bị kẹt vào nơi nào đó trong chương trình mà không thể thoát ra được trạng thái hiện tại Điều gì là cần thiết để giải quyết hai trường hợp trên, reset lại hay vẫn để cho nó bị kẹt không thoát ra được, đó là mục đích của mạch Watchdog Mạch Watchdog thì không phải là mới mẽ gì, có rất nhiều microprocessors và microcontrollers đã có mạch Watchdog, nhưng mà nó làm việc ra sao ?
Bên trong vi xử lí Pic có một mạch RC, mạch này cung cấp 1 xung Clock độc lập với bất kỳ xung Clock nào cung cấp cho Pic Khi Watchdog Timer (viết tắt
là WDT) được cho phép (enabled), nó sẽ đếm bắt đầu từ 00 và tăng lên 1 cho đến FFh, khi nó tăng từ FFh đến 00 ( FFh+1) thì con Pic sẽ bị Reset bất kể đang làm gì, chỉ có 1 cách là ngăn không cho WDT đếm tới 00
Khi Pic16F877A bị kẹt không thể thoát ra khỏi tình trạng hiện tại thì WDT vẫn tiếp tục đếm mà không bị bất kỳ điều gì ngăn cấm nó đếm tới FF và đến FF+1,
vì vậy nó sẽ reset làm cho chương trình phải khởi động lại từ đầu
Để Sử Dụng WDT Chúng Ta Cần Làm 3 Việc
• Thứ nhất, cần thời gian bao lâu để reset WDT ?
• Thứ hai, làm sao xoá WDT ?
• Cuối cùng, chúng ta phải nói cho Pic biết chương trình cho phép WDT hoạt động
Hình 4.10 Bộ định thời giám sát WDT
Trang 264.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)
4.4.1 Bộ nhớ chương trình
Hình 4.11 Bộ nhớ chương trình PIC 16F877A
Bộ nhớ chương trình của vi điều khiển PIC16F877A là bộ nhớ Flash, dung lượng 8K word (1 word chứa 14bit) và được phân thành nhiều trang như hình trên
Để mã hóa được địa chỉ 8K word bộ nhớ chương trình, thanh ghi đếm chương trình PC có dung lượng 13 bit
Khi vi điều khiển reset, bộ đếm chương trình sẽ trỏ về địa chỉ 0000h Khi có ngắt xảy ra thì thanh ghi PC sẽ trỏ đến địa chỉ 0004h
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
Trang 274.4.2 Bộ nhớ dữ liệu
Bộ nhớ dữ liệu của PIC l bộ nhớ EEPROM được chia ra lm nhiều bank
Bộ nhớ dữ liệu của PIC16F877A được chia thành 4 bank Mỗi bank có dụng lượng 128 byte
Nếu như 2 bank bộ nhớ dữ liệu của 8051 phân chia riêng biệt : 128 byte đầu tiên thuộc bank1 là vùng Ram nội chỉ để chứa dữ liệu, 128 byte còn lại thuộc bank 2 là cùng các thanh ghi có chức năng đặc biệt SFR mà người dùng không được chứa dữ liệu khác trong đây thì 4 bank bộ nhớ dữ liệu của PIC16F877A được tổ chức theo cách khác
Mỗi bank của bộ nhớ dữ liệu PIC16F877A bao gồm cả các thanh ghi có chức năng đặc biệt SFR nằm ở các các ô nhớ địa chỉ thấp và các thanh ghi mục đích dùng chung GPR nằm ở vùng địa chỉ còn lại của mỗi bank thanh ghi Vùng ô nhớ các thanh ghi mục đích dùng chung này chính là nơi người dùng sẽ lưu dữ liệu trong quá trình viết chương trình Tất cả các biến dữ liệu nên được khai báo chứa trong vùng địa chỉ này
Trong cấu trúc bộ nhớ dữ liệu của PIC16F877A, các thanh ghi SFR nào mà thường xuyên được sử dụng (như thanh ghi STATUS) sẽ được đặt ở tất cả các bank để thuận tiện trong việc truy xuất Sở dĩ như vậy là vì, để truy xuất một thanh ghi nào đó trong bộ nhớ của 16F877A ta cần phải khai báo đúng bank chứa thanh ghi đó, việc đặt các thanh ghi sử dụng thường xuyên giúp ta thuận tiên hơn rất nhiều trong quá trình truy xuất, làm giảm lệnh chương trình
Trang 28Hình 4.12 Bộ nhớ dữ liệu PIC 16F877A
Trang 29Dựa trên sơ đồ 4 bank bộ nhớ dữ liệu PIC16F877A ta rút ra các nhận xét như sau :
- Bank0 gồm các ô nhớ có địa chỉ từ 00h đến 77h, trong đó các thanh ghi dùng chung để chứa dữ liệu của người dùng địa chỉ từ 20h đến 7Fh Các thanh ghi PORTA, PORTB, PORTC, PORTD, PORTE đều chứa ở bank0, do đó để truy xuất dữ liệu các thanh ghi này ta phải chuyển đến bank0 Ngoài ra một vài các thanh ghi thông dụng khác ( sẽ giới thiệu sau) cũng chứa ở bank0
- Bank1 gồm các ô nhớ có địa chỉ từ 80h đến FFh Các thanh ghi dùng chung
có địa chỉ từ A0h đến Efh Các thanh ghi TRISA, TRISB, TRISC, TRISD, TRISE cũng được chứa ở bank1
- Tương tự ta có thể suy ra các nhận xét cho bank2 và bank3 dựa trên sơ đồ trên
Cũng quan sát trên sơ đồ, ta nhận thấy thanh ghi STATUS, FSR… có mặt trên
cả 4 bank Một điều quan trọng cần nhắc lại trong việc truy xuất dữ liệu của PIC16F877A là : phải khai báo đúng bank chứa thanh ghi đó Nếu thanh ghi nào mà 4 bank đều chứa thì không cần phải chuyển bank
• Vùng Ram đa mục đích
Vùng RAM đa mục đích có chiều rộng 8 bit và có thể được truy nhập trực tiếp hoặc gián tiếp thông qua thanh ghi FSR Vùng RAM đa mục đích được phân phối ở các Bank như sau:
- Bank 0: 96 Bytes từ địa chỉ 20h đến địa chỉ 7Fh
- Bank 1: 80 Bytes từ địa chỉ A0h đến địa chỉ EFh
- Bank 2: 96 Bytes từ địa chỉ 110h đến địa chỉ 16Fh
- Bank 3: 96 Bytes từ địa chỉ 190h đến địa chỉ 1EFh
• Vùng thanh ghi chức năng đặc biệt
Các thanh ghi chức năng đặc biệt được sử dụng bởi bộ xử lý trung tâm CPU hoặc các module ngoại vi để điều khiển hoạt động của VĐK Các thanh ghi chức năng đặc biệt
này được chia làm 2 loại: loại thứ nhất dùng cho các chức năng của CPU, loại thứ 2 dùng
Trang 30cho các chức năng ngoại vi
Bảng tóm tắt các thanh ghi chức năng đặc biệt:
Trang 32Hình 4.13-4.14-4.15 Các thanh ghi chức năng đặt biệt PIC 16F877A
Trang 334.5 Các thanh ghi chức năng đặt biệt
4.5.1 Thanh ghi trạng thái (Status Register)
Thanh ghi này có mặt ở cả 4 bank thanh ghi ở các địa chỉ 03h, 83h, 103h và 183h : chứa kết quả thực hiện phép toán của khối ALU, trạng thái reset và các bit chọn bank cần truy xuất trong bộ nhớ dữ liệu
Each bank is 128 bytes
Bit 4 TO: Bit báo hiệu hoạt động của WDT
1: Lệnh xóa WDT hoặc Sleep xảy ra
0: WDT hoạt động
Bit 3 PD: Bit báo công suất thấp ( Power down bit)
1: Sau khi nguồn tăng hoặc có lệnh xóa WDT
0: Thực thi lệnh Sleep
Bit 2 Z: bit Zero
1: Khi kết quả của một phép toán bằng 0
0: Khi kết quả của một phép toán khác 0
Bit 1 DC: Digit Carry
1: Có một số nhớ được sinh ra bởi phép cộng hoặc phép trừ 4 bit thấp
0: Không có số nhớ sinh ra
Bit 0 C: cờ nhớ (Carry Flag)
1: Có một số nhớ sinh ra bởi phép cộng hoặc phép trừ
0: Không có số nhớ sinh ra
4.5.2 Thanh ghi tùy chọn (Option Reg Register)
Thanh ghi tùy chọn chứa các bit điều khiển để cấu hình cho các chứa năng như: ngắt ngoài, Timer 0 chức năng kéo lên Vdd của các chân Port B, và thời gian chờ của WDT
Trang 34Hình 4.17 Option-Reg Register
Bit 7 RBPU : Bit cho phép PORTB được kéo lên nguồn
1: Không cho phép PORTB kéo lên nguồn
0: Cho phép PORTB kéo lên nguồn
Bit 6 INTEDG: Bít lựa chọn cạnh tác động ngắt (INTERRUPT EDGE) 1: Ngắt sẽ được tác động bởi cạnh lên của chân RB0/INT
0: Ngắt sẽ được tác động bởi cạnh xuống của chân RB0/INT
Bit 5 T0CS: Bit lựa chọn nguồn xung Clock cho Timer 0
1: Xung Clock cung cấp bởi nguồn ngoài qua chân RA4/T0CKI
0: Xung Clock cung cấp bởi nguồn dao động nội
Bit 4 T0SE: Bit lựa chọn cạnh nào của xung clock tác động lên timer 0
Bit 2-0 PS2:PS0: Dùng để lựa chọn tốc độ đếm của timer hay WDT
4.5.3 Thanh ghi điều khiển ngắt INTCON (Interrupt Control Register)
Hình 4.18 Intcon Register
Bit 7 GIE: Bit cho phép ngắt toàn cục
1: Cho phép ngắt toàn cục
0: Không cho phép ngắt
Trang 35Bit 6 PEIE: Bit cho phép ngắt khi ghi vào EEPROM hoàn tất
1: Cho phép ngắt ghi vào EEPROM hoạt động
0: Không cho phép ngắt ghi vào EEPROM hoạt động
Bit 5 TMR0IE: Bit cho phép ngắt khi timer 0 tràn
1: Cho phép ngắt khi timer 0 tràn
0: Không cho phép ngắt khi timer 0 tràn
Bit 4 INTE: Bit cho phép ngắt ngoại vi trên chân RB0/INT
1: Cho phép ngắt ngoại vi
0: Không cho phép ngắt ngoại vi
Bit 3 RBIE: Cho phép ngắt khi trạng thái PORTB thay đổi
0: Không có thay đổi xảy ra trên PORTB
4.3.4 Thanh ghi cho phép ngắt ngoại vi 1 (PIE1 Register)
Trang 36Bit 7 PSPIF: Cờ ngắt đọc/ ghi của Port song song
1: Một hoạt động đọc/ghi đã diễn ra (phải xóa bằng phần mềm)
0: Không có hoạt động đọc/ghi
Bit 6 ADIF: Cờ báo ngắt chuyển đổi A/D
1: Một quá trình chuyển đổi A/D đã hoàn thành
0: Chuyển đổi A/D chưa hoàn tất
Bit 5 RCIF: Cờ báo ngắt nhận USART
1: Buffer nhận USART đầy
0: Buffer nhận USART trống
Bit 4 TXIF: Cờ báo ngắt phát USART
1: Buffer truyền USART trống
0: Buffer truyền USART đầy
Bit 3 SSPIF: Cờ báo ngắt port nối tiếp đồng bộ (ngắt SSP)
1: Ngắt SSP xảy ra và phải được xóa bằng phần mềm trước khi trở lại
chương trình chính từ chương trình phục vụ ngắt
0: Không có ngắt xảy ra
Bit 2 CCP1IF: Cờ báo ngắt CCP1
Trang 37Chế độ Capture (Bắt giữ):
1: Một Capture thanh ghi TMR1 xảy ra( phải được xóa bằng phần mềm)
0: Không xảy ra Capture thanh ghi TMR1
Chế độ Compare ( So sánh):
1: Khi các giá trị so sánh trong thanh ghi TMR1 được thỏa ( phải được xóa
bằng phần mềm)
0: Khi các giá trị so sánh trong thanh ghi TMR1 không được thỏa
Chế độ PWM: Không sử dụng trong chế độ này
Bit 1 TMR2IF: Cờ báo ngắt xảy ra khi giá trị trong thanh ghi TMR2 bằng trong thanh ghi PR2
1: Giá trị trong thanh ghi TMR2 bằng thanh ghi PR2 (phải được xóa bằng
phần mềm)
0: Giá trị trong thanh ghi TMR2 chưa bằng thanh ghi PR2
Bit 0 TMR1IF: Cờ báo tràn thanh ghi TMR1
1: Thanh ghi TMR1 tràn (phải được xóa bắng phần mềm)
0: Thanh ghi TMR1 chưa tràn
4.5.6 Thanh ghi cho phép ngắt ngoại vi 2 (PIR2 Register)
Hình 4.21 PIE2 Register
Chú ý: Bit PEIE (INTCON<6>) phải được set để cho phép bất kì ngắt ngọai
vi nào xảy ra
Bit 7,5,2,1 Unimplemented : read as ‘0’
Bit 6 CMIE: Bit cho phép ngắt do bộ so sánh điện thế
Trang 380: Không cho phép
4.5.7 Thanh ghi cờ của các ngắt ngoại vi 2 (PIR2 Register)
Hình 4.22 PIR2 Register
Bit 7,5,2,1 Unimplemented : read as ‘0’
Bit 6 CMIF: Cờ báo ngắt do bộ so sánh
1: Ngõ vào bộ so sánh đã thay đổi (phải được xóa bằng phần mềm)
0: Ngõ vào bộ so sánh không thay đổi
Bit 4 EEIF: Cờ báo ngắt ghi EEPROM
1: Ghi EEPROM hoàn tất (phải được xóa bằng phần mềm)
0: Ghi EEPROM chưa hoàn tất
Bit 3 BCLIF: Cờ báo ngắt do xung đột bus
1: Xung đột bus đã xuất hiện trong chế độ SSP
0: Không có xung đột bus xảy ra
Bit 0 CCP2IF: Cờ báo ngắt CPP2
0: Không xảy ra thuật toán so sánh
4.5.8 Thanh ghi Work và tập lệnh của PIC 16F877A
Đây là thanh ghi rất đặc biệt trong PIC16F877A Nó có vai trò tương tự như thanh ghi Accummulator của 8051, tuy nhiên tầm ảnh hưởng của nó rộng hơn rất nhiều
Tập lệnh của PIC16F877A có tất cả 35 lệnh thì số lệnh có sự “góp mặt” của thanh ghi W là 23 lệnh Hầu hết các lệnh của PIC16F877A đều liên quan đến thanh ghi W Ví dụ như, trong PIC chúng ta không được phép chuyển trực tiếp giá trị của một thanh ghi này qua thanh ghi khác mà phải chuyển thông qua thanh ghi W
Trang 39Thanh ghi W có 8 bit và không xuất hiện trong bất kỳ bank thanh ghi nào của
bộ nhớ dữ liệu của 16F877A Mỗi dòng lệnh trong PIC16F877a được mô tả trong 14
bit Khi ta thực hiện một lệnh nào đó, nó phải lưu địa chỉ của thanh ghi bị tác động (chiếm 8 bit) và giá trị một hằng số k nào đó (thêm 8 bit nữa) là 16 bit, vượt quá giới hạn 14 bit Do vậy ta không thể nào tiến hành một phép tính toàn trực tiếp nào giữa 2 thanh ghi với nhau hoặc giữa một thanh ghi với một hằng
số k Hầu hết các lệnh của PIC16F877A đều phải liên quan đến thanh ghi W cũng vì lý do đó Khi thực hiện một dòng lệnh nào đó, thì PIC sẽ không phải tốn 8 bit để lưu địa chỉ của thanh ghi W trong mã lệnh ( vì được hiểu ngầm)
Có thể xem thanh ghi W là thanh ghi trung gian trong quá trình viết chương trình cho PIC16F877A
PIC16F877A có tất cả 35 lệnh và được trình bày khá rõ trong datasheet Em sẽ đính kèm tập lệnh ở phần cuối cùng của bài báo cáo
Trong chương trình, em sử dụng ngôn ngữ asembly để viết Trình biên dịch là Mplab được Microchip cung cấp miễn phí cho người dùng
4.6 Khái quát về chức năng các Port trong vi điều khiển PIC
16F877A
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 Sự tương tác này rất đa dạng và thông qua quá trình tương tác đó, chức năng của vi điều khiển được thể hiện một cách
rõ ràng
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), 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 Bên cạnh đó, 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, 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 Chức năng của từng chân xuất nhập trong
Trang 40mỗ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 đó
Vi điều khiển PIC16F877A có 5 cổng xuất nhập, bao gồm PORTA, PORTB, PORTC, PORTD và PORTE
4.6.1 Port A và thanh ghi TRIS A
PORTA gồm có 6 chân Các chân của PortA, ta lập trình để có thể thực hiện được chức năng “hai chiều” : xuất dữ liệu từ vi điều khiển ra ngoại vi và nhập
dữ liệu từ ngoại vi vào vi điều khiển
Hình 4.23 Block diagram of RA3:RA0 Pins
Port A gồm 6 chân từ RA0 đến RA5 Việc ghi giá trị vào thanh ghi TRISA sẽ qui
định các chân của Port A là input hay output(nếu là 1 thì là input, là output nếu
là 0) Việc đọc thanh ghi Port A sẽ đọc trạng thái của các chân ở Port A Việc ghi giá trị vào thanh ghi Port A sẽ thay đổi trạng thái của các chân Port A Riêng chân RA4 được tích hợp chức năng là chân cung cấp xung clock ngoài cho Timer 0 (RA4/T0CKI) Những chân khác của Port A được đa hợp với các chân ngõ vào Analog của ADC và chân ngõ vào điện thế so sánh của bộ so