Vi điều khiển PIC - Học nhanh đi vào ứng dụng

Tóm tắt Vi điều khiển PIC - Học nhanh đi vào ứng dụng: ... gọi là những thanh ghi đặc biệt của PIC. Tên của chúng, thực ra không có, một thanh ghi chỉ được xác định bằng địa chỉ của thanh ghi mà thôi. Tuy nhiên, chúng ta đã làm động tác include file P16F628A.inc, file này đã định nghĩa sẵn tên các thanh ghi này, và là quy ước của MPLAB, đồng thời cũ... sẽ là 1us, và dùng thạch anh 20MHz, chu kỳ máy sẽ là 200 nano giây. Quay trở lại với việc nếu chúng ta cần thực hiện một việc gì đó giống như nhấp nháy đèn LED, thì chúng ta cần PIC phải dừng lại, không làm gì cả để chờ chúng ta. Nếu như lệnh NOP (lệnh không làm gì) sẽ giúp chúng ta chờ 0....phần đặt biến này vào trong sườn chương trình lần trước đã học, các bạn hoàn thiện hơn sườn một chương trình viết bằng MPASM - Các bạn lại thêm vào sườn chương trình đó phần các chương trình con, vậy tôi thông báo với các bạn rằng các bạn chỉ còn thiếu 2 phần nữa là ngắt (Interrupt) và bảng (T...

pdf28 trang | Chia sẻ: havih72 | Lượt xem: 311 | Lượt tải: 0download
Nội dung tài liệu Vi điều khiển PIC - Học nhanh đi vào ứng dụng, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
áo về việc bán PIC. 
***** &&& ***** 
Bài 3: Ngắt (interrupt) 
Giới thiệu 
 Khái niệm ngắt là một khái niệm rất phổ biến trong tất cả các hệ thống vi điều khiển, vi xử 
lý và máy tính. Vậy ngắt là gì? Các bạn hình dung hình ảnh chúng ta đang đi xe máy trên bờ 
ruộng, con đường đi rất dài và rất thẳng, bỗng nhiên có một con bò chạy ngang, húc chúng ta 
xuống ruộng. Cả xe và người lao xuống ruộng. Chúng ta lồm cồm bò dậy, phủi quần áo, chửi đổng 
lên một cái vì chẳng biết chửi ai, thế là chúng ta đem ông trời ra chửi. Sau đó, chúng ta dắt xe 
máy lên bờ ruộng, tại cái chỗ mà chúng ta bị húc té xuống, rồi chúng ta lấy xe chạy tiếp. Nếu lỡ 
có một con bò nào khác, lại húc chúng ta.. thì....Hoạt động ngắt cũng giống như vậy, khi chúng ta 
đang chạy một chương trình chính nào đó, bỗng nhiên có một sự kiện xảy ra, chúng ta phải dừng 
việc chúng ta đang làm lại, và giải quyết cái sự việc xảy ra đó. Cuối cùng, chúng ta lại quay trở về 
cái chỗ mà chúng ta đã tạm dừng lại lúc nãy và tiếp tục công việc đang làm. 
Khái niệm ngắt chỉ đơn giản như vậy, tuy nhiên, đối với vi điều khiển nói chung, và PIC nói 
riêng, ngắt có thể do rất nhiều nguồn xảy ra, và với mỗi nguồn ngắt khác nhau, chúng ta có thể 
định trước rằng trong ngắt đó chúng ta sẽ làm việc gì. Cũng như khi đi trên bờ ruộng, chúng ta có 
thể bị bò húc, cũng có thể bị trâu húc, cũng có thể bị vấp cục đã, cũng có thể bị lọt ổ gà... Và nếu 
như bị bò húc thì chúng ta chửi ông trời, bị trâu húc chúng ta mắng ông trăng, bị vấp cục đá 
chúng ta tự trách mình xui xẻo, và đến khi vấp ổ gà... thì chúng ta vô nhà thương... 
Các nguồn ngắt trong PIC: 
Số lượng và loại nguồn ngắt trong PIC rất đa dạng, và rất khác nhau ở mỗi dòng PIC. Do vậy 
không thể liệt kê hết ra đây tất cả các dòng PIC và tất cả các loại ngắt trong từng dòng được. 
Chúng ta chỉ đưa ra đây sơ đồ tổng quát của các nguồn ngắt, và đi sâu vào một số loại ngắt phổ 
biến. 
T¸c gi¶: falleaf – DiÔn dµn PICVIETNAM.COM 
S−u tÇm vµ biªn so¹n:linhnc308@yhoo.com 21
Hình 1: Các nguồn ngắt của dòng PIC Midrange 
Chúng ta chú ý đến một số điểm sau: 
1) Trong hình có các ký hiệu cổng logic AND và OR 
Đây là cổng AND, có nghĩa là chỉ khi đầu vào của hai cổng này đều có giá trị là 1, thì đầu ra mới 
có giá trị là 1. Chúng ta quan sát một góc hình bên trái phía dưới TXIF và TXIE, chúng đi qua cổng 
AND, chỉ khi nào bit TXIE bật lên, và bit TXIF cũng được bật lên, thì lúc đó ngõ ra nối vào cổng OR 
phía trên mới có giá trị. 
Đây là cổng OR, có nghĩa là chỉ cần một trong các tín hiệu ngõ vào có giá trị là 1, thì ngõ ra sẽ có 
giá trị là 1. Như vậy, nếu cả TXIE và TXIF đều có giá trị 1, thì ngõ ra sau cổng AND của chúng sẽ 
có giá trị 1 và ngõ ra sau cổng OR cũng có giá trị 1, bởi vì ít nhất cổng OR ở đây cũng có 1 ngõ 
vào có giá trị 1. Chúng ta cứ tiếp tục như vậy mà suy ra. 
2) Điểm thứ hai, là các chữ đuôi IE và IF: 
 IE ở đây là viết tắt của chữ Interrupt Enable, và IF ở đây viết tắt của Interrupt Flag. 
IE có nghĩa là chúng ta cho phép kích hoạt một loại ngắt nào đó xảy ra hay không. Đây là tín hiệu 
mà chúng ta có thể quy định ngay từ ban đầu. Mặc định, tất cả chúng đều có giá trị 0, chỉ khi nào 
chúng ta cho phép một ngắt nào đó xảy ra, thì về sau nó mới xảy ra ngắt đó thôi. 
Cũng giống như, ban đầu trên bờ ruộng có dãy rào chắn, thì con bò không thể nào húc bạn té 
được, nếu bạn bỏ hàng rào ra, thì nếu có con bò húc bạn, bạn sẽ té. Nguyên lý này đơn giản như 
vậy thôi. 
 IF ở đây là các cờ ngắt. Tức là khi bạn bị bò húc, thì có một người cầm cờ giơ lên báo là 
T¸c gi¶: falleaf – DiÔn dµn PICVIETNAM.COM 
S−u tÇm vµ biªn so¹n:linhnc308@yhoo.com 22
bạn đã bị bò húc, để những người dưới ruộng reo hò...hihi... Và tất nhiên, khi bạn không phá rào 
cản thì người trên ruộng vẫn có. Và khi con bò lao vào bạn, thì người ta cũng phất cờ lên như 
thường, nhưng bị cái rào cản nên bạn cứ thoải mái mà đi con đường của bạn, chẳng phải quan 
tâm đến việc té xuống, chửi bới hay trèo lên làm gì. 
Cái rào cản chính là IE và cái sự việc cuối cùng mà bạn vẫn đi hay lồm cồm bò dậy đó chính là cái 
cổng AND mà chúng ta vừa nói trên kia. 
3) Điểm thứ ba, các lớp ngắt: 
Bạn thấy rằng, trong hình, rõ ràng có 2 lớp ngắt. Lớp thứ nhất nằm bên tay trái ngoài cùng, lớp 
thứ hai nằm ở giữa hình. Lớp thứ ba chỉ có một cổng AND nên chúng ta không kể tới làm gì. 
Lớp thứ nhất được gọi là lớp ngắt ngoại vi. 
 Thực chất lớp này vì có quá nhiều nguồn ngắt, và các nguồn ngắt này đều là một số chuẩn 
giao tiếp, hoặc chức năng đặc biệt của PIC, cho nên người ta phân ra làm lớp ngắt ngoại vi. Để 
các ngắt ngoại vi hoạt động, trước tiên chúng ta phải cho phép ngắt ngoại vi, tức là bật bit PIE 
lên. Còn cụ thể muốn cho ngắt ngoại vi nào hoạt động, thì chúng ta bật ngắt đó lên. Trên sơ đồ 
các bạn cũng thấy rõ thông qua các cổng AND và OR. 
Lớp thứ hai tạm gọi là lớp ngắt phổ thông. 
 Khi muốn dùng các nguồn ngắt phổ thông, chúng ta chỉ việc bật các bit IE của nguồn ngắt 
này. Tất nhiên, cuối cùng, chúng ta phải bật ngắt toàn cục GIE thì ngắt mới được phép xảy ra (kể 
cả ngắt ngoại vi và ngắt phổ thông. Khi đó, PIE được coi là một nguồn ngắt phổ thông. Điều này 
cũng giống như khi bạn chạy xe trên bờ ruộng, một hàng rào dài chạy dọc theo con đường, chính 
là ngắt toàn cục GIE. Lớp bên ngoài thứ hai là lớp ngắt phổ thông, bao gồm luôn cả ngắt ngoại vi 
PIE. Và ngoài cùng là các hàng rào thuộc lớp ngắt ngoại vi. 
 Nếu các bạn bật các nguồn ngắt, mà không bật ngắt toàn cục GIE thì cho dù ngắt có xảy 
ra, thì chương trình vẫn không dừng để thực hiện ngắt, giống như con bò có thể lao qua hàng rào 
ngoài cùng đã được mở, nhưng vẫn còn hàng rào trong cùng. 
Như vậy, các bạn đã hiểu một cách tổng quan về hoạt động ngắt của PIC, những nguyên tắc phải 
bật hay tắt ngắt. Điểm lưu ý cuối cùng, đó là tôi muốn giới thiệu với các bạn rằng, chữ ký hiệu 
trong bảng, là tên các bit liên quan đến việc bật tắt ngắt. VD: bit PIE, INTE.. nằm trong thanh ghi 
INTCON (ngắt phổ thông), các bit quy định ngắt ngoại vi nằm trong các thanh ghi PIR và PIE. 
Vectơ ngắt của PIC: 
 Như lần trước đã giới thiệu, vectơ ngắt của PIC nằm ở vị trí 0x0004 các bạn xem lại hình 
sau. Khác với khi bạn bị té ruộng, bạn té xuống ngay tại chỗ bạn bị húc, đối với vi điều khiển, khi 
xảy ra interrupt, nó sẽ nhảy về một địa chỉ cố định, và thực hiện công việc tại đó. Sau khi thực 
hiện xong, nó sẽ quay trở về vị trí mà từ đó nó đã thoát ra. Vị trí cố định mà nó sẽ nhảy về khi 
xảy ra ngắt là vị trí 0x0004. 
Chương trình ngắt: 
 Lại quay về thí dụ té ruộng, có lẽ tôi thích cái thí dụ này vì nó có thể giúp bạn hình dung 
mọi thứ. Bây giờ các bạn hãy chia giai đoạn từ khi bị bò húc, té xuống ruộng, rồi bạn chửi đổng 
lên, rồi bạn lồm cồm bò lên. Vậy cho dù bạn bị bò húc, hay bị vấp ổ gà, thì chỉ có giai đoạn bạn 
chửi đổng lên là khác nhau, còn lại, giai đoạn bạn té xuống ruộng là té xuống ruộng, và sau đó thì 
bạn cũng bò lên. Vậy ngắt cũng giống thế, khi nhảy vào ngắt, bạn sẽ có một giai đoạn cần phải 
nhảy vào ngắt, và một giai đoạn nhảy ra khỏi ngắt, còn bên trong ngắt đó các bạn làm cái gì là 
nội dung cần thực hiện của từng nguồn ngắt. Tôi cung cấp ra đây đoạn chương trình ngắt chuẩn, 
từ nay về sau, các bạn chỉ cần copy đoạn chương trình này và sử dụng: 
Code: 
;================================================= ================== 
 ORG 0x0000 
 GOTO MAIN 
 ORG 0x0004 
 GOTO INTERRUPT 
 ORG 0x0005 
MAIN 
; đây là phần chương trình chính của các bạn 
;================================================= ================== 
T¸c gi¶: falleaf – DiÔn dµn PICVIETNAM.COM 
S−u tÇm vµ biªn so¹n:linhnc308@yhoo.com 23
INTERRUPT 
 RETFIE 
;================================================= ================== 
; Các chương trình con được viết ở đây 
;================================================= ================== 
 GOTO $ 
 END 
;================================================= ================== 
Như vậy, một lần nữa, chúng ta bổ sung sườn chương trình của chúng ta một cách chi tiết hơn. 
Chúng ta vừa thêm vào một đoạn chương trình con INTERRUPT. Thực ra, gọi INTERRUPT là một 
chương trình con cũng không sai, nhưng vì nó khá đặc biệt, nên chúng ta cứ tách rời nó ra. 
Khởi tạo và kết thúc ngắt: 
Tôi cung cấp dưới đây đoạn chương trình khởi tạo và kết thúc ngắt đầy đủ cho PIC, từ nay về sau, 
khi muốn sử dụng ngắt, các bạn chỉ cần copy và paste đoạn code này lại, hoàn toàn không cần 
sửa chữa gì và cứ thế sử dụng. Tôi sẽ dành cho các bạn đặt câu hỏi về phần này để từ các câu 
hỏi, có thể giải thích rõ hơn vì sao chúng ta lại viết như vậy, từng điểm một. Nếu không, tôi không 
thể có thời gian để viết tất cả mọi vấn đề về ngắt ra đây được. 
Code: 
;================================================= 
=========================================== 
INTERRUPT 
;------------------------------------------- 
;Doan ma bat buoc de vao ngat 
;------------------------------------------- 
 MOVWF W_SAVE ;W_SAVE(bank unknown!) = W 
 SWAPF STATUS, W 
 CLRF STATUS ; force bank 0 
for remainder of handler 
 MOVWF STAT_SV ; STAT_SV = swap_nibbles( 
STATUS ) 
 ; STATUS = 0 
 MOVF PCLATH, W 
 MOVWF PCH_SV ; PCH_SV = PCLATH 
 CLRF PCLATH ; PCLATH = 0 
 MOVF FSR, W 
 MOVWF FSR_SV ; FSR_SV = FSR 
 ; 10 cycles from interrupt to 
here! 
;----------------------------------- 
;Doan chuong trinh ngat 
;----------------------------------- 
; cac ban se viet chuong trinh ngat o day 
;-------------------------------------------------- 
;Doan ma bat buoc de ket thuc ngat 
;-------------------------------------------------- 
 MOVF FSR_SV, W 
 MOVWF FSR ; FSR = FSR_SV 
 MOVF PCH_SV, W 
 MOVWF PCLATH ; PCLATH = PCH_SV 
 SWAPF STAT_SV, W 
T¸c gi¶: falleaf – DiÔn dµn PICVIETNAM.COM 
S−u tÇm vµ biªn so¹n:linhnc308@yhoo.com 24
 MOVWF STATUS ; STATUS = swap_nibbles( 
STAT_SV ) 
 SWAPF W_SAVE, F 
 SWAPF W_SAVE, W ; W = swap(swap( W_SAVE )) (no change 
Z bit) 
 BSF INTCON, GIE 
 RETFIE 
;================================================= 
================================================== = 
Như vậy, chương trình ngắt được chia làm 3 phần chính. 
Phần thứ nhất là phần bắt đầu vào ngắt, đây là đoạn chương trình bắt buộc, tất nhiên không hoàn 
toàn nghiêm ngặt như vậy, vì thực tế nhiều khi bạn không dùng đến tất cả các lệnh này, nhưng vì 
mục đích cung cấp các khái niệm cơ sở, và công cụ làm việc đầy đủ, tôi cung cấp cho bạn chương 
trình ngắt chi tiết. Phần thứ hai là phần chương trình ngắt của bạn. Khi xảy ra ngắt, bạn muốn 
làm cái gì, thì bạn bắt đầu viết từ phần này trở đi. Phần thứ ba là phần kết thúc ngắt, bạn cứ viết 
nguyên bản như vậy không cần sửa đổi. Tạm thời, sẽ không có các phân tích chi tiết giống như 
các bài học trước, các bạn có thể tự tìm hiểu thêm, nếu không, có thể đặt câu hỏi, và chúng ta sẽ 
từ từ tìm hiểu rõ hơn về ngắt của PIC. Thời gian tới đây, có lẽ tôi hơi bận, cho nên tôi không thể 
viết bài liên tục được, mong rằng các bạn cố gắng tìm hiểu và học tốt PIC. Đến giai đoạn này, các 
bạn đã có thể dùng con PIC, giống như một con 89C51 thông thường. Và các bạn thấy đấy, thực 
sự PIC chỉ cần 1 ngày để học. 
 Chúng ta vừa học xong 3 bài học cơ bản nhất của một con vi điều khiển: Điều khiển port, 
viết hàm delay và viết chương trình ngắt. 
Phần thứ tư của bài viết chương trình ngắt, sẽ đi chi tiết vào các ngắt và giải thích rõ nghĩa từng 
ngắt. Nhưng thiết nghĩ, tôi nên kết hợp bài học này ở đây, và kết hợp phần thứ tư vào bài học 
sau: Nút bấm và các ngõ vào của PIC. 
Tài liệu tham khảo: 
011006 
Bài 4. Nút bấm 
Các bạn vừa biết khái niệm ngắt, và đã biết chương trình ngắt được viết như thế nào. Vậy 
bây giờ chúng ta chuyển đến bài tiếp theo về nút bấm. 
Công dụng của nút bấm 
Nút bấm là một hình thức ra lệnh phổ biến nhất trên thế giới. Bạn gọi một cái thang máy, bạn 
bấm nút, bạn kêu cửa thì bấm chuông, bạn bật đèn thì bấm nút công tắc, và tôi đang ngồi viết 
cho bạn bằng cách bấm nút bàn phím... 
 Như vậy, bạn đã biết công dụng của cái nút bấm. Bây giờ các bạn sẽ học cách làm một cái 
nút bấm!!! Điều này có vẻ buồn cười, nhưng với vi điều khiển, và máy tính, khả năng xử lý các 
lệnh rất đa đạng. Bạn có thể bấm cùng một nút, nhưng lệnh sẽ khác nhau ở mỗi thời điểm, và mỗi 
trạng thái. Ví dụ, như bạn nhấp chuột máy tính, thực ra cũng là bạn nhấp nút bấm, nhưng bạn 
thấy rõ ràng rằng, ở những vị trí di chuyển chuột khác nhau, nút bấm của chuột sẽ đưa ra các 
mệnh lệnh khác nhau cho máy tính thực hiện. 
Một số trạng thái nút bấm thông dụng 
 Trạng thái nút bấm ra lệnh tức thời, đó là khi bạn bấm nút, lập tức mọi trạng thái phải 
được kiểm tra và chương trình dừng lại để thực hiện lệnh từ nút bấm của bạn. Có nghĩa là bạn ra 
lệnh tại thời điểm bấm nút, và máy hiểu rằng bạn đã bấm nút. Còn việc xử lý thế nào thì hồi sau 
phân giải. Trạng thái chờ nút bấm, đó là chương trình bạn đang chạy, đến một giai đoạn nào đó, 
nó cần phải có sự ra lệnh của bạn bằng nút bấm, và chương trình chờ bạn bấm nút để chạy tiếp, 
hoặc bắt đầu một công việc nào đó sau khi chờ. Nhắc lại thao tác bấm nút một chút, cái nút của 
bạn đang ở trên cao, bạn bấm nó xuống thì nó sẽ có một giai đoạn nút bấm đi xuống, khi chạm 
vào mạch điện, hiển nhiên bạn muốn hay không muốn thì cũng phải có một khoảng thời gian bạn 
giữ cho nút bấm tiếp xúc với mạch điện, sau đó là giai đoạn bạn thả nút bấm ra. 
T¸c gi¶: falleaf – DiÔn dµn PICVIETNAM.COM 
S−u tÇm vµ biªn so¹n:linhnc308@yhoo.com 25
Theo dõi hình trên, chúng ta thấy. Khi bấm nút, có quá trình đi xuống của nút bấm, và quá trình 
đi lên của nút bấm. Nhưng thực tế, đối với mạch điện trong nút bấm, nó chỉ có thể nhận được 
trạng thái tiếp xúc hoặc không tiếp xúc, nên tín hiệu nhận được sẽ như đường màu xanh trong 
hình dưới. Chúng ta chỉ quan tâm đến trạng thái của đường màu xanh trong các ứng dụng của nút 
bấm. 
 Vậy, trạng thái nút bấm lại có thêm 3 trạng thái nữa là trạng thái bấm xuống, trạng thái 
giữ nút bấm, và trạng thái nhả nút bấm lên. Kết hợp với 2 trạng thái điều khiển trên, chúng ta có 
6 trạng thái phổ biến của nút bấm. Các bạn lưu ý rằng, chúng ta có 6 trạng thái chứ không phải 
chỉ có 4 trạng thái, vì thực ra rất nhiều người cho rằng chỉ có 4 trạng thái khi cho rằng trạng thái 
chờ trong lúc giữ nút bấm không phải là trạng thái phổ biến. Nhưng nếu các bạn đã từng dùng 
điện thoại di động thì các bạn thấy số người dùng trạng thái chờ của nút bấm cũng không phải là 
con số nhỏ. 
 Ở đây, tôi muốn tán dóc một chút rằng, khi các bạn làm việc về khoa học kỹ thuật, và đến 
một khi các bạn khó có thể tìm ra đường hướng suy nghĩ để giải quyết một vấn đề khoa học kỹ 
thuật, hãy tìm mối liên hệ với nó trong khoa học xã hội. Chính vì vậy, các bạn thường thấy tôi hay 
đưa ra những ví dụ xã hội để minh hoạ cho vấn đề kỹ thuật cần được giải quyết. 
 Tôi sẽ dành việc ứng dụng từng trạng thái nút bấm phổ biến trong các ứng dụng cho các 
bạn, còn ở đây, tôi chỉ muốn nhân bài học này để tiếp tục bài học về interrupt mà chúng ta đã bỏ 
dở trước đó. Vậy chúng ta chỉ xét trạng thái khi bấm nút, lập tức lệnh sẽ được thực hiện, tức trạng 
thái tức thời của nút bấm. 
 Các bạn hãy làm bài tập thực hành, thực hiện một mạch điện tử như hình sau để chuẩn bị 
cho bài học của chúng ta. 
T¸c gi¶: falleaf – DiÔn dµn PICVIETNAM.COM 
S−u tÇm vµ biªn so¹n:linhnc308@yhoo.com 26
Trong mạch điện này, chúng ta thấy có một vài điểm đặc biệt khi có 1 nút bấm nối giữa chân của 
PIC và nguồn, còn các nút bấm khác lại nối chân của PIC với đất. 
Giữa nguồn và đất luôn có một điện trở 10K. Vì sao chúng ta phải nối mạch điện như vậy? Chúng 
ta tạm dừng bài học về nút bấm ở đây và theo dõi bài học cơ bản về điện tử tiếp theo. 
T¸c gi¶: falleaf – DiÔn dµn PICVIETNAM.COM 
S−u tÇm vµ biªn so¹n:linhnc308@yhoo.com 27
Điện tử cơ bản 
Giới thiệu 
 Đây là phần rất cơ bản về điện tử, mà các bạn khi bắt đầu làm việc với vi điều khiển cần 
phải nắm rõ. Như đã nói, PIC tạo ra dòng điện khoảng 20mA và điện áp khoảng 5V, tương tự như 
vậy, nếu dòng ngõ vào quá cao so với 20mA và điện áp ngõ vào quá cao so với 5V, thì PIC sẽ bị 
hư. Vì vậy, bài học này trang bị cho các bạn một số khái niệm cơ bản về điện tử, để các bạn có 
thể nắm vững nguyên lý thiết kế mạch và tính toán các giá trị điện trở cần thiết. Đáng lẽ bài học 
này cần được thực hiện ngay từ đầu, tuy nhiên, tôi cho rằng bài tập đèn LED quá đơn giản, các 
bạn chưa biết gì cũng có thể hiểu được, nhưng nay, nếu như các bạn mới học về điện tử và vi điều 
khiển không được trang bị kiến thức cơ bản này, có thể làm cho các bạn lúng túng vì một số điểm 
không được làm rõ trong mạch điện tử. 
Hiện tượng trôi điện áp 
 Các bạn xem hình sau: 
Chúng ta cho rằng ngõ vào của PIC, cũng giống như ngõ vào của một linh kiện điện tử thông dụng 
là 74HC04. Thay vì vẽ một cái chân PIC, thì chúng tôi vẽ hình một con 74HC04 cho nó đơn giản, 
và để các bạn dễ hình dung. Nếu để một con PIC lên một hình thì quá phức tạp hình ảnh, và lại 
không cần thiết. Hơn nữa, bài viết này được tham khảo từ tài liệu Very Basic Circuits của Encoder, 
và trong trang web này, người ta sử dụng 74HC04 để làm thí dụ, tôi tôn trọng ví dụ này nên khi 
viết lại bài viết cũng sử dụng 74HC04 giống như họ. 
Các bạn thấy, nếu như nút bấm được nhấn xuống, thì ngõ vào của 74HC04 hay PIC được nối với 
Mass. Như vậy, lúc đó PIC có thể đọc giá trị 0. Tuy nhiên, nếu nút nhấn được thả ra, chúng ta 
thấy rằng ngõ vào của PIC chẳng được nối với một linh kiện nào, vậy là điện áp ở chân của PIC sẽ 
trôi nổi không xác định được. Nếu không may mắn, điện áp trôi nổi này rơi vào vùng logic 0, rồi 
lại nhảy sang vùng logic 1... thì các bạn thấy rõ ràng chúng ta không thể xác định được nút bấm 
có được bấm hay không?!! 
Vì vậy, để đảm bảo, nếu khi không bấm nút, PIC phải có điện áp tham khảo là 5V, sau khi bấm 
nút thì điện áp sẽ giảm xuống 0V, như vậy mức logic mới thật rõ ràng, không thể để trôi nổi như 
hình trên. Vậy chúng ta có hình dưới đây 
Công dụng của điện trở kéo lên 
 Các bạn lại thấy, nếu bây giờ không bấm nút, thì điện áp ngõ vào của PIC sẽ là 5V. Nhưng 
nếu bấm nút một cái, rõ ràng chúng ta gây ra ngắn mạch khi nối trực tiếp từ nguồn xuống đất. 
Chính vì vậy, chúng ta phải đưa thêm vào một điện trở giữa đất, nút bấm và nguồn. 
T¸c gi¶: falleaf – DiÔn dµn PICVIETNAM.COM 
S−u tÇm vµ biªn so¹n:linhnc308@yhoo.com 28
Có hai vấn đề đặt ra, đó là điện trở sẽ đặt ở đâu, và giá trị của nó bằng bao nhiêu. 
Chúng ta xem hình này: 
Các bạn sẽ bực mình ngay rằng, đúng là thằng ngốc mới đặt điện trở như thế này, bởi vì nếu đặt 
điện trở như vậy, dù bạn có bấm nút hay không bấm nút thì điện áp ngõ vào vẫn luôn luôn là 5V, 
vậy nút bấm trở nên vô nghĩa. 
Thế thì chỉ còn một cách đặt điện trở như hình tiếp theo đây(H.a): 
 (H.a) (H.b) 
Vậy vấn đề còn lại là giá trị điện trở bẳng bao nhiêu? 
Các bạn sẽ thấy, PIC hoạt động ở 20mA và 5V trên các chân. Vì vậy, khi chưa bấm nút, nguồn 5V 
được nối với điện trở và đi vào chân của PIC. Nếu như trong một trường hợp nào đó chân của PIC 
chuyển từ chế độ input sang output, thì vấn đề xảy ra là dòng trên chân phải đảm bảo nhỏ hơn 
hoặc bằng 20mA. Như vậy, trong thiết kế trên, chúng ta xem dòng tại chân PIC nếu PIC đặt ở 0V 
là: 
I = U/R = 5V/ 10000 Ohm = 5mA 
Như vậy, thiết kế này đảm bảo cho hoạt động của PIC được an toàn. 
Khi đóng nút bấm dòng 5mA này sẽ đi xuống đất, và chân của PIC được nối với đất. 
Các bạn xem tiếp hình sau(H.b) 
Trường hợp này, nút bấm được nối với nguồn 5V. Điện trở nối giữa chân của PIC với đất sẽ không 
làm cho PIC có hiện tượng trôi nổi điện áp, và khi đóng nút bấm thì dòng vẫn ở 5mA. 
Tổng kết: 
Qua bài học này, các bạn đã hiểu được cơ bản về khái niệm điện trở kéo lên (trường hợp điện trở 
nối với nguồn), và điện trở kéo xuống (trường hợp điện trở nối với đất). Giá trị điện trở được đặt ở 
đây nhằm loại bỏ hiện tượng ngắn mạch, và đảm bảo ngõ vào của PIC khoảng 20mA. Khi an toàn, 
cần thiết kế sao cho ngõ vào nhỏ. 
 To be continue  

File đính kèm:

  • pdfvi_dieu_khien_pic_hoc_nhanh_di_vao_ung_dung.pdf