Giao tiếp vào ra I/O

Một phần của tài liệu Giáo trình Vi điều khiển PIC pot (Trang 29 - 35)

- Void tên_chương_trình (tên_biến) {}: Chương trình chính hay chương trình con

1. Giao tiếp vào ra I/O

1.1.Giới thiệu

Thông thường, trong một hệ vi xử lý, người ta lại phải ghép nối chip vi xử lý với các mô ñun vào ra, tuy nhiên với tất cả các loại vi ñiều khiển ñều tích hợp mô ñun vào ra vào trong chip. Bởi vì có thể nói, thao tác vào ra là thao tác quan trọng nhất mà bất cứ vi ñiều khiển nào cần có

1.2.Các cổng vào ra trong PIC16F877

ðể giảm bớt số chân ra, một số chân của PIC là các chân ña chức năng, nó phục vụ cho các thiết bị ngoại vi. Ở ñây khái niệm thiết bị ngoại vi không có nghĩa là 1 chip khác mua rời bên ngoài mà là các mô ñun ñược tích hợp sẵn trong chip như các mô ñun ADC.... Khi các thiết bị ngoại vi này ñược enable thì các chân này không ñược sử dụng như các chân của các cổng I/O thông thường nữa.

PIC16F877 có 5 cổng vào ra là PORTA, PORTB, PORTC, PORTD, PORTE, tương ứng với nó là các thanh ghi cấu hình TRISA, TRISB, TRISC, TRISD, TRISE. Trong PIC, các ngăn nhớ trong RAM ñược gọi là các thanh ghi, tất nhiên thực tế thì không ñúng bởi vì các thanh ghi ñược xem là các thành phần của CPU, còn các ngăn nhớ lại thuộc bộ nhớ.

DKS GROUP http://www.dks.edu.vn30 PORTA có 6 bit, 2 hướng (vào và ra). Các bit cấu hình hướng nằm trong thanh ghi TRISA, nếu bit tương ứng bằng 0 thì bit ñó là output và ngược lại sẽ là input.

Việc ñọc nội dung của thanh ghi PORTA sẽ ñọc các trạng thái của các chân, trong khi ghi lên PORTA thì sẽ ghi lên chốt cổng. Mặt khác, tất cả các hoạt

ñộng ghi ñều là hoạt ñộng ñọc-sửa-ghi (read-modify-write). Do ñó ghi ñến 1 cổng nghĩa là các chân của cổng ñược ñọc, giá trị ñược sửa và sau ñó ghi lại lên chốt dữ liệu của cổng.

Chân RA4 ñược dồn kênh với ñầu vao clock của mô ñun Timer0 gọi là chân RA4/T0CKI. Chân này là 1 ñầu vào Trigger-Schmitt và ñầu ra hở máng. Tất cả các chân PORTA khác có mức ñiện áp ñầu vào theo mức TTL, còn ñiện áp ddaauf ra theo mức CMOS.

Các chân PORTA khác ñược dồn kênh với các ñầu vào analog và ñầu vào

ñiện áp tham chiếu analog Vref cho cả mô ñun ADC và Bộ so sánh

bộ biến ñổi tương tự số ADC 10 bit, 8bit. Hoạt ñộng của các chân này ñược lựa chọn bằng cách set/clear các bit ñiều khiển thích hợp trong ADCON1 và CMCON.Thanh ghi TRISA ñiều khiển hướng của các chân của cổng ngay cả khi các chân này ñược sử dụng như ñầu vào analog. ðể nó là ñầu vào analog thì bit tương ứng của TRISA cũng phải set

ðoạn mã sau khởi tạo PORTA

BCF STATUS, RP0

BCF STATUS, RP1 ; Chuyển về bank0 chứa PORTA

CLRF PORTA

BSF STATUS, RP1 ; Về bank 1 MOVLW 0X06

MOVWF ADCON1 ; Cấu hình tất cả các chân là digital

MOVLW 0XCF

MOVWF TRISA ; RA<5:4> là output, RA<3:0> input 1.2.Thanh ghi PORTB và TRISB

PORTB là thanh ghi 8 bit, 2 hướng. Quan hệ với TRISB cũng tương tự

PORTA.

Các chân của PORTB ñược dồn kênh với 1 số chức năng ñặc biệt khác và các chức năng debug ngay trong mạch (không phải gỡ chip ra khỏi mạch), và chức năng lập trình ở chế ñộ ñiện áp thấp: RB3/PGM, RB6/PGC, RB7/PGD. ðây là những chức năng ñặc biệt của CPU.

DKS GROUP http://www.dks.edu.vn31 Mỗi chân của PORTB có 1 ñiện trở kéo lên nhỏ bên trong. Một bit ñiều khiển dùng ñể “bật” (enable) tất cả các ñiện trở này lên, ñây chính là chức năng của bit RBPU trong thanh ghi OPTION. ðiện trở này ñược tự ñộng disable khi cổng này ñược cấu hình làm output.

RB0/INT là chân dồn kênh với ngắt ngoài mà ta sẽ miêu tả trong phần ngắt 1.3 Thanh ghi PORTC và TRISC

PORTC là thanh ghi 8 bit, 2 hướng. Có bộñệm ñầu vào Trigger Schmitt. Nó cũng ñược dồn kênh với vài chức năng ñặc biệt khác.

1.4 Thanh ghi PORTD và TRISD

Là cổng 8 bit, 2 hướng. có bộñệm ñầu vào Trigger Schmitt

Nó dồn kênh thêm với chức năng giao tiếp cổng song song Slave (parallel Slave Port) bằng cách thiết lập bit ñiều khiển PSPMODE (TRISE<4>)

1.5 Thanh ghi PORTE và TRISE

Có 3 chân, có bộ ñệm ñầu vào kiểu Trigger Schmitt. Dồn kênh với các ñầu vào analog mà ta sẽ xem xét trong phần ADC. TRISE do còn thừa 5 bit không sử dụng trong cấu hình PORTE do ñó các bit thừa này ñược dùng ñể

cấu hình các chức năng khác như chức năng cổng song song PSP.

2.Sơñồ mạch

DKS GROUP http://www.dks.edu.vn32

3. Lập trình

Bài học này sẽ hướng dẫn các bạn cách lập trình ñiều khiển các con led nhấp nháy.

Các bạn thực hành theo các bước sau:

-Khởi ñộng phần mềm CCS , click vào project /wizard,,rồi gõ tên project cần tạo.

Màn hình sẽ hiển thị bảng thông số cho phép bạn lựa chọn

Bạn có thể lựa chọn các thông số tuỳ ý , như chọn device (chọn loại chip

ñược sử dụng) 16F877A ,tần số thạch anh 20MHZ .Ngoài ra còn các thông số khác như driver , I/O pin ,timer .communication.

DKS GROUP http://www.dks.edu.vn33 Sau khi thiết lập các thông số ,bạn click ok ,ñể bước vào màn hình soạn thảo chương trình.

DKS GROUP http://www.dks.edu.vn34 Soạn thảo mã nguồn như sau #include "E:\nguyencan\DKS\led.h" #fuses NOWDT,NOPROTECT,HS #use delay(clock=20000000) void main() { set_tris_b(0x00); while(1) { output_high(PIN_B0); delay_ms(1000); output_low(PIN_B0); delay_ms(1000); }

DKS GROUP http://www.dks.edu.vn35

}

ñoạn mã trên có tác dụng lập trình ñể con led nối với chân RB0 bật tắt liên tục.

Giải thích các lệnh trong chương trình

#fuses NOWDT,NOPROTECT,HS

Lệnh này cho phép chọn các chế ñộ lập trình NOWDT là không chọn chế ñộ

watchdog ,NOPROTECT là không có chế ñộ bảo vệ mã nguồn.HS là dao

ñộng thạch anh.

#use delay(clock=20000000)

Hàm này chọn chếñộ delay theo tần số thạch anh là 20MHZ

void main() {

set_tris_b(0x00); while(1)

Một phần của tài liệu Giáo trình Vi điều khiển PIC pot (Trang 29 - 35)