toilet

Chia sẻ - PIC16F887 #01: I/O PORT

Thảo luận trong 'Họ PIC -> dsPIC'

Đang xem chủ đề này ( Thành viên: 0, Khách: 0)

Moderators: THUONGDTQB
  1. Đăng 31/5/14 #1

    quachlenhho Sinh viên cao đẳng

    Số bài viết: 20
    Đã được thích: 48
    1. Sơ đồ chân PIC16F887:

    1.PNG

    2. Các thanh ghi:
    Các thanh ghi ở PORTA:
    upload_2014-5-31_12-25-19.
    upload_2014-5-31_12-25-45.
    upload_2014-5-31_12-25-56.

    Các thanh ghi ở PORTB:
    upload_2014-5-31_12-26-33.
    upload_2014-5-31_12-26-41.
    upload_2014-5-31_12-27-33.
    upload_2014-5-31_12-27-40.
    upload_2014-5-31_12-27-51.

    Các thanh ghi ở PORTC:
    upload_2014-5-31_12-28-10.
    upload_2014-5-31_12-28-18.

    Các thanh ghi ở PORTD:
    upload_2014-5-31_12-28-37.
    upload_2014-5-31_12-28-46.

    Các thanh ghi ở PORTE:
    upload_2014-5-31_12-29-6.
    upload_2014-5-31_12-29-14.

    3. Lý thuyết:
    Chức năng thanh ghi ANSELH, ANSEL:
    Hai thanh ghi này có tổng cộng 14bit từ ANS0 đến ANS13, sẽ quy định tín hiệu làm việc của các chân từ AN0 đến AN13 là tín hiệu Digital hay tín hiệu Analog.
    - ANSx=0: Cho phép chân ANx xử lý tín hiệu số.
    - ANSx=1: Cho phép chân ANx xử lý tín hiệu tương tự.
    Trong đó: x= 0 – 13

    Chức năng của thanh ghi TRIS:
    Trong các chân xử lý tín hiệu số, hoạt động của chân có thể là ngõ ra (làm cho led chớp tắt, kích transistor, điều khiển hoạt động IC....), hay có thể là ngõ vào (đọc trạng thái nút nhấn, đọc encoder, đọc tín hiệu từ cảm biến số....). Như vậy, để khởi tạo cho các chân là ngõ ra hay ngõ vào tín hiệu số, chúng ta cần chú ý đến thanh ghi TRISx (x=A,B,C,D,E).
    -TRISxy=0:Quy định bit thứ y của PORTx là ngõ ra (0= Output)
    -TRISxy=1:Quy định bit thứ y của PORTx là ngõ vào (1=Input)
    (Trong đó x=A,B,C,D,E ; y=0-7)
    Chú ý : PORTE chỉ có 4 bit thấp : TRISE0, TRISE1, TRISE2, TRISE3.

    Chức năng của thanh ghi PORT:
    Trong trường hợp xử lý tín hiệu số và là ngõ ra , thì có thể là ngõ ra mức cao (điện áp ở chân đó là VH) , hay ngõ ra là mức thấp (điện áp là VL) sẽ do bit Rxy của thanh ghi PORTx quy định .
    - Rxy=0 : Quy định chân thứ y của PORTx là mức thấp(VL).
    - Rxy=1: Quy định chân thứ y của PORTx là mức cao(VH).
    (Trong đó : x=A,B,C,D,E ; y=0-7)

    Tóm lại ta có bảng tóm tắt sau :

    2.PNG
    Trong đó: x : không quan tâm đến

    Bài 1: Viết chương trình điều khiển 1 led chớp tắt ở chân RA0:
    #include<htc.h>

    __CONFIG(HS&WDTDIS&PWRTEN&MCLREN&UNPROTECT&DUNPROTECT&BORDIS&IESODIS&LVPDIS&FCMDIS);
    #define _XTAL_FREQ 20000000
    void main(){
    ANS0=0; //Tắt tính năng analog ở chân RA0
    TRISA0=0; //Khởi tạo chân RA0 là chân output
    RA0=0;//Ban đầu led tắt
    while(1){
    __delay_ms(500);
    RA0=~RA0;
    }
    }

    Bài 2: Viết chương trình chớp tắt led trên tất cả các chân trên PORTA, PORTB, PORTC, PORTD, PORTE:
    #include<htc.h>

    __CONFIG(HS&WDTDIS&PWRTEN&MCLREN&UNPROTECT&DUNPROTECT&BORDIS&IESODIS&LVPDIS&FCMDIS);
    #define _XTAL_FREQ 20000000
    void main(){
    ANSELH=ANSEL=0; //Tắt tính năng Analog trên tất cả các chân
    TRISA=TRISB=TRISC=TRISD=TRISE=0x00; //Khởi tạo các PORT là chân output
    PORTA=PORTB=PORTC=PORTD=PORTE=0x00;//Ban đầu led tắt
    while(1){
    __delay_ms(500);
    PORTA=PORTB=PORTC=PORTD=PORTE=0xFF;
    __delay_ms(500);

    PORTA=PORTB=PORTC=PORTD=PORTE=0x00;
    }
    }
    Tài liệu tham khảo Datasheet PIC16F887
    Ở đây mình dùng HI-TECH C Compiler for PIC10-12-16 MCUs:

    Chia sẻ - PIC16F887 #02: INTERRUPT INT (RB0) | Cộng đồng cơ điện tử Việt Nam | Mechatronics

    Các file đính kèm:

    dungvt, Ngô Thiện ĐứcBuiBachTuanAnh thích bài này.
    #1
  2. Đăng 19/1/16 #2

    diem Học sinh phổ thông

    Số bài viết: 24
    Đã được thích: 8
    #2
Moderators: THUONGDTQB
Tags: PIC16F887

Chia sẻ trang này