PIC 16F887

Trang

  • Home
  • Bài Viết mới nhất
  • Games
  • Music
  • Chat
  • Thư Viện
  • Photo
  • Music Fountain
  • English
  • Góc Quê Hương
  • About me

PIC 16F887

Mình rất thích dòng vi điều khiển PIC , việc lập trình PIC đối với người chưa biết gì như mình rất khó, với những ai giống mình , bài viết này sẽ cung cấp cho bạn những kiến những cơ bạn , học tới đâu thì tìm hiểu thêm về nó! Hi vọng bài viết này sẽ có ích cho các bạn, mình chọn chip 16f887 để thực hành : 1,

Module I/O PORT của PIC16F887

Hình 1. Sơ đồ chân PIC16F887Module I/O của PIC16F887 có 35I/O trong đó có 1 input. Tất cả các chân của PIC có khả năng cấp và rút dòng khoảng 25mA, đủ điều khiển 2 LED mắc song song. Tuy nhiên, giới hạn của mỗi PORT (8 chân) chỉ là 90mA mà thôi. Do đó, khi thiết kế cần tính toán tránh quá tải cho từng chân (vượt quá 25mA) và tránh quá tải cho toàn PORT (90mA). Các PORT của PIC16F887 lần lượt được đặt tên theo chữ cái là PORTA, PORTB, PORTC, PORTD và PORTE, tương ứng với mỗi chân I/O ngoài chứng năng Input và Output logic ra còn tích hợp thêm nhiều tính năng khác, như RX, TX cho module USART, SDO, SDI, SCK, SS cho module SPI …. Ngoài ra, trên Hình 1, những chân ANx được tô vàng là những chân có tính năng Analog, nghĩa là ngõ và của module ADC.Ứng với mỗi chân sẽ có 1 bit cấu hình chế độ Analog hay Digital trong 2 thanh ghi ANSEL và ANSELH. Hình 2. Thanh ghi ANSEL Hình 3. Thanh ghi ANSELHTương ứng với mỗi chân ANx (tô vàng trong Hình 1) mỗi bit ANSx (x = 0 – 13) sẽ quyết định chân ANx đó có tính năng Analog hay Digital, trong Hi-Tech C có thể dùng các định nghĩa của Datasheet để gán/đọc giá trị các thanh ghi này. Với giá trị được xóa về không (0) thì chân AN tương ứng sẽ là chân Digital (có thể xuất, đọc mức logic từ PORT), nếu ANSx được gán bằng Một (1) thì chân AN tương ứng sẽ là chân Analog, chỉ có tính năng Analog input cho ADC. Lưu ý cách đọc giá trị thanh ghi trong datasheet, dòng chữ trên cùng R/W-1 có nghĩa là bit này có thể Read/Write và khi Reset sẽ có giá trị là 1. Điều đó cũng có nghĩa là mặc định những chân có kỹ hiệu AN sẽ có tính năng Analog, muốn bật tắt 1 con LED trên những chân này,hãy cấu hình bit AN tương ứng trước nhé. Một ví dụ trong Hi-Tech C: view sourceprint?
1ANSEL = 0; /* Cấu hình cho các chân AN0 -> AN7 là chân Digital */
2ANSELH = 0; /* Cấu hình cho các chân AN8 -> AN13 là chân Digital */
Hay có thể cấu hình theo từng bit (từng chân) view sourceprint?
1ANS0 = 0; /* Cấu hình chân AN0 là chân Digital (chân RA0) */
2ANS5 = 1; /* Cấu hình chân AN5 là chân Analog (Chân RE0) */
Ứng với mỗi PORT sẽ có 2 thanh ghi chính để điều khiển là TRIS PORT, tương ứng với PORTA, PORTB, PORTC, PORTD và PORTE có các thanh ghi TRISA, TRISB, TRISC, TRISD và TRISE để điều khiển hướng xuất nhận của PORT. Lưu ý, TRIS cấu hình cho PORT là input thì lúc này, chân được cấu hình input có trở kháng cao, có thể đọc được logic điện áp trên chân đó, và có thể coi như chân đó cách ly với mạch bên ngoài. Không phải tất cả các PORT đều có đầy đủ 8 bit. PORTB còn có thêm tính năng Interrupt On Change và Internet Pull-Up Ví dụ PORTA, có thanh ghi TRISA và thanh ghi PORTA Hình 4. Thanh ghi PORTAHình 5. Thanh ghi TRISANhư vậy để cấu hình I/O PORT để sử dụng, cần 3 bước: + Xác định xem chân sử dụng có tính năng Analog hay không, nếu có, cấu hình là Analog (ADC) hay Digital (I/O) tùy thuộc vào mục đích + Cần xác định xem I/O cần dùng là ngõ vào hay ngõ ra, nếu ngõ vào điều khiển TRIS tương ứng bằng 1 (số 1 giống chứ i trong input) và ngược lại là 0 (giống chư o trong output) + Xuất ra I/O mức cao hay mức thấp tùy thuộc vào yêu cầu mà xuất trên PORT Ví dụ: Cấu hình RE1 là ngõ ra digital điều khiển LED và RB0 là ngõ vào đọc giá trị nút nhấn: view sourceprint?
ANS6 = 0; //RE1 là chân Digital
ANS12 = 0; //RB0 là chân Digital
TRISE1 = 0; //RE1 là Digital Output, có thể điều khiển LED
TRISB0 = 1; //RB0 là Digital Input, có thể đọc giá trị của nút nhấn
RE1 = 1; //Xuất mức cao ra RE1
if(RB0 == 0) {
RE1 = 0; //Đọc giá trị của RB0, kiểm tra nếu RB0 = 0 thì xuất mức 0 ra RE1
}
(tiếp theo …) WEAK PULL-UP trên PORTB IOC trên PORTB Ví dụ về bật tắt LED trên chân RE1 trong mỗi 500ms view sourceprint?
#include
//Cấu hình sử dụng dao động nội 4MHz
__CONFIG(INTOSC & WDTDIS & PWRTEN & MCLREN & UNPROTECT & DUNPROTECT &
BORDIS & IESODIS & FCMDIS & LVPDIS);
__CONFIG(BORV40) ;
/* Hàm delay một khoảng ms mili giây */
void delay_ms(int ms);
void main()
{
ANSEL = ANSELH = 0; //Cấu hình tất cả các chân AN là chân Digital
TRISE1 = 0; //Cấu hình chân RE1 là chân Digital Output
while(1){
RE1 ^= 1; //Đảo trạng thái của RE1 ( dấu "^" nghĩa là XOR, Nếu RE1 = 1,
//thì 1^1 = 0, gán lại cho RE1=0, nếu RE1 = 0, 0^1=1, gán lại RE1 = 1;)
delay_ms(500); //Chờ trong khoảng 500mili giây
}
}
void delay_ms(int ms)
{
int i;
for(i=0; i
_delay(1000);//Dao động 4MHz,
///tần số Clock là 1Mhz, => delay 1000 chu kỳ máy = 1mili giây
}
}

No comments:

Newer Post Older Post Home Subscribe to: Post Comments (Atom) Related Posts Plugin for WordPress, Blogger...

Cùng tôi học Điện Tử ..(http://ilovec.tk)..

Loading... Billnee Nguyen

Bài xem nhiều

  • Code ví dụ cho 89c51 .ASM 1. Viết chương trình hiển thị các led tắt dần D1 đến D8; lặp lại quá trình 10 lần; thời gian delay giữa các led là 250ms d...
  • Canh sat ky tai 5,6,7 (Cực kì vui nhộn)   Cảnh sát kỳ tài (Kochikame-7/16 volume) Cảnh sát kỳ tài Là bộ manga dài nhất từ trước đến na...
  • PIC 16F887 Mình rất thích dòng vi điều khiển PIC , việc lập trình PIC đối với người chưa biết gì như mình rất khó, với những ai giống mình , bài viết n...
  • Hướng dẫn lập trình nhận dạng hình khối sử dụng Open CV trên Raspberry Hình ảnh test run Đầu tiên cấu trúc của project : | -- - ngonnguc |      | -- - __init__ .py |      | -- - nhandien .py ...
  • Bài tập vòng lặp l Mình xin giới thiệu một số bài tập. Các bạn tham ra giải và góp ý cho mình. Thanks! Bài 1 : Viết chương trình nhập vào số tự nhiên n và i...
  • Làm mạch cảm biến ánh sáng sử dụng quang trở LDR Đây là một số DIY  chuyển mạch sử dụng  LDR  trên mạng. LDR thiết bị chuyển mạch được sử dụng để cấp nguồn cho relay hoặc thiết bị khác khi ...
  • Truyện cười Trung Quốc Hãy để chế độ xem: View mode Slideshow Hãy để chế độ xem: View mode Slideshow
  • Phần mềm mã nguồn mở H iện nay, với trào lưu phát triển mạnh mẽ của các nền tảng hệ điều hành mở dựa trên Linux (Fedora, Ubuntu, SuSE, OpenSolaris…) Các ứng dụ...
  • Truyện cười Vova Hãy để chế độ xem: View mode Slideshow Hãy để chế độ xem: View mode Slideshow
  • 2 cuốn sách hay để học Mạch Điện Tử 1 và Mạch Điện Tử 2 Microelectronic Circuits : includes CD-ROM (The Oxford Series in Electrical and Computer Engineering) Author: Adel S. Sedra Publisher...

Số lượt người xem

Are you from ...

Kết nối bạn bè

Từ khóa » Datasheet Pic16f887 Tiếng Việt