Đánh giá chủ đề:
  • 5 Vote(s) - Trung bình 2
  • 1
  • 2
  • 3
  • 4
  • 5
HƯỚNG DẪN LẬP TRÌNH PIC16F877A TRÊN MPLAB XC8
Bài viết: #1
Lightbulb 
BÀI 1 : CHỚP TẮT LED PIC16F877A XC8
Chào các bạn trong bài đăng này mình sẽ hướng dẫn các bạn về I/O của PIC16F877A cụ thể là chớp tắt led. Nhưng trước tiên chúng ta tìm hiểu về các PORT của PIC16F877A.
Chức năng các chân của PORTA
1. Chân RA0/AN0
- RA0: xuất/ nhập số - bit thứ 0 của port A.
- AN0: ngõ vào tương tự của kênh thứ 0.
2. Chân RA1/AN1 
- RA1: xuất/nhập số - bit thứ 1 của port A.
- AN1: ngõ vào tương tự của kênh thứ 1.
3. Chân RA2/AN2/VREF-/CVREF
- RA2: xuất/nhập số - bit thứ 2 của port A.
- AN2: ngõ vào tương tự của kênh thứ 2.
- VREF-: ngõ vào điện áp chuẩn (thấp) của bộ ADC.
- CVREF: điện áp tham chiếu VREF ngõ vào bộ so sánh.
4. Chân RA3/AN3/VREF+
- RA3: xuất/nhập số - bit thứ 3 của port A.
- AN3: ngõ vào tương tự kênh thứ 3.
- VREF+: ngõ vào điện áp chuẩn (cao) của bộ A/D.
5. Chân RA4/TOCKI/C1OUT 
- RA4: xuất/nhập số – bit thứ 4 của port A.
- TOCKI: ngõ vào xung clock từ bên ngoài cho Timer0.
- C1OUT: ngõ ra bộ so sánh 1.
6. Chân RA5/AN4/ SS/ C2OUT 
- RA5: xuất/nhập số – bit thứ 5 của port A.
- AN4: ngõ vào tương tự kênh thứ 4.
- SS : ngõ vào chọn lựa SPI tớ (Slave SPI device).
- C2OUT: ngõ ra bộ so sánh 2.

Chức năng các chân của PORTB
1 Chân RB0/INT
 -  RB0: xuất/nhập số – bit thứ 0 của port B.
 - INT: ngõ vào nhận tín hiệu ngắt ngoài.
2. Chân RB1
 -  RB1: xuất/nhập số – bit thứ 1 của port B.
3. Chân RB2
 -  RB2: xuất/nhập số – bit thứ 2 của port B.
4. Chân RB3
 -  RB3: xuất/nhập số – bit thứ 3 của port B.
5. Chân RB4
 -  RB4: xuất/nhập số – bit thứ 4 của port B.
6. Chân RB5
 -  RB5: xuất/nhập số – bit thứ 5 của port B.
7.Chân RB6
 -  RB6: xuất/nhập số.
8. Chân RB7
 -  RB7: xuất/nhập số.

Chức năng các chân của PORC
1. Chân RC0/T1OSO/T1CKI (15): có 3 chức năng:
 -  RC0: xuất/nhập số – bit thứ 0 của port C.
 -  T1OSO: ngõ ra của bộ dao động Timer1.
 -  T1CKI: ngõ vào xung clock từ bên ngoài Timer1.
2. Chân RC1/T1OSI/CCP2 (16): có 3 chức năng:
 - RC1: xuất/nhập số – bit thứ 1 của port C.
 - T1OSI: ngõ vào của bộ dao động Timer1.
 - CCP2: ngõ vào Capture2, ngõ ra compare2, ngõ ra PWM2.
3. Chân RC2 /P1A/CCP1 (17): có 3 chức năng:
 - RC2: xuất/nhập số – bit thứ 2 của port C.
 - P1A: ngõ ra PWM.
 - CCP1: ngõ vào Capture1, ngõ ra compare1, ngõ ra PWM1 .
4. Chân RC3/SCK/SCL (18): có 3 chức năng:
 - RC3: xuất/nhập số – bit thứ 3 của port C.
 - SCK: ngõ vào xung clock nối tiếp đồng bộ/ngõ ra của chế độ SPI.
 - SCL: ngõ vào xung clock nối tiếp đồng bộ/ngõ ra của chế độ I2C.
5. Chân RC4/SDI/SDA (23): có 3 chức năng:
 - RC4: xuất/nhập số – bit thứ 4 của port C.
 - SDI: ngõ vào dữ liệu trong truyền dữ liệu kiểu SPI.
 - SDA: xuất/nhập dữ liệu I2C.
6. Chân RC5/SDO (24): có 2 chức năng:
 - RC5: xuất/nhập số – bit thứ 5 của port C.
 - SDO: ngõ xuất dữ liệu trong truyền dữ liệu kiểu SPI.
7. Chân RC6/TX/CK (25): có 3 chức năng:
 - RC6: xuất/nhập số – bit thứ 6 của port C.
 - TX: ngõ ra phát dữ liệu trong chế độ truyền bất đồng bộ USART.
 - CK: ngõ ra cấp xung clock trong chế độ truyền đồng bộ USART.
8. Chân RC7/RX/DT
 - RC7: xuất/nhập số – bit thứ 7 của port C.
 -  RX: ngõ vào nhận dữ liệu trong chế độ truyền bất đồng bộ EUSART.
 - DT: ngõ phát và nhận dữ liệu ở chế độ truyền đồng bộ EUSART.

Chức năng các chân của PORD
1. Chân RD0
 - RD0: xuất/nhập số – bit thứ 0 của port D.
 - Chân RD1
2.RD1: xuất/nhập số – bit thứ 1 của port D.
3. Chân RD2
 - RD2: xuất/nhập số – bit thứ 2 của port D.
4.Chân RD3
 - RD3: xuất/nhập số – bit thứ 3 của port D.
5. Chân RD4
 - RD4: xuất/nhập số – bit thứ 4 của port D.
6. Chân RD5
 - RD5: xuất/nhập số – bit thứ 5 của port D.
 -  ngõ ra PWM.
7. Chân RD6
 -  RD6: xuất/nhập số – bit thứ 6 của port D.
8. Chân RD7
 - RD7: xuất/nhập số – bit thứ 7 của port D.

Chức năng các chân của PORE
1 Chân RE0/AN5 (8): có 2 chức năng:
- RE0: xuất/nhập số.
- AN5: ngõ vào tương tự 5.
2.Chân RE1/AN6 (9): có 2 chức năng:
- RE1: xuất/nhập số.
- AN6: ngõ vào tương tự kênh thứ 6.
3. Chân RE2/AN7 (10): có 2 chức năng:
- RE2: xuất/nhập số.
- AN7: ngõ vào tương tự kênh thứ 7.

Trong bài này thì mình sẽ hướng dẫn các bạn mắc led theo 2 kiểu đó là Anode chung theo hình bên dưới.
[Image: Anode.JPG]
Nếu nối led theo kiểu này thì muốn led sáng ta phải xuất ra mức 0 thì led mới sáng được.
Còn đây là cách nối led theo kiểu Cathode chung.
[Image: Cathode.JPG]
Nếu nối led theo kiểu này thì muốn led sáng ta phải xuất ra mức 1 thì led mới sáng được.
Dưới đây là ảnh mô phỏng Protues.
[Image: blink_led.JPG]
Đây là code chương trình.
Code:
#include <stdio.h>
#include <stdlib.h>
#define _XTAL_FREQ 4000000
#include <xc.h>
// CONFIG
#pragma config FOSC = XT        // Oscillator Selection bits (XT oscillator)
#pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF      // Power-up Timer Enable bit (PWRT disabled)
#pragma config BOREN = OFF      // Brown-out Reset Enable bit (BOR disabled)
#pragma config LVP = OFF        // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming)
#pragma config CPD = OFF        // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)
#pragma config WRT = OFF        // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)
#pragma config CP = OFF         // Flash Program Memory Code Protection bit (Code protection off)
void GPIO_init (void);
void Anode (void);
void Cathode (void);
void main (void)
{
   GPIO_init();
   while(1)
   {
       __delay_ms(100);
       Anode();
       Cathode();
       __delay_ms(100);
   }
}
void GPIO_init(void)
{
   TRISBbits.TRISB0 = 0; // RB0 LÀ OUTPUT
   TRISBbits.TRISB7 = 0; // RB7 LÀ OUTPUT
   PORTBbits.RB0 = 1; // OFF LED RB0
   PORTBbits.RB7 = 0; // OFF LED RB7
}
void Anode (void)
{
   PORTBbits.RB0 = 0;  
   __delay_ms(500);
   PORTBbits.RB0 = 1;
}
void Cathode (void)
{
   PORTBbits.RB7 = 1;
   __delay_ms(500);
   PORTBbits.RB7 = 0;
}
- Link download project Click here
- Do không có thời gian viết bài nên các bạn có thể xem các bài còn lại theo link sau : Click here
Trả lời


Đi tới chuyên mục:


Thành viên đang xem chủ đề: 1 Khách