1. Trang chủ
  2. » Công Nghệ Thông Tin

giao tiếp máy tính

19 430 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 19
Dung lượng 902 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Ở chế độ USART Master đồng bộ: = 1 cho phép chức năng nhận 1 byte dữ liệu 8 bit hoặc 9 bit Bit 4 CREN Continous Receive Enable bit Ở chế độ bất đồng bộ: = 1 cho phép nhận 1 chuỗi dữ liệu

Trang 1

Bài 6: Giao tiếp máy tính

Nội dung

 Khối USART

 Ứng dụng giao tiếp vi điều khiển với máy tính

Trang 2

 Universal Synchronous Asynchronous Receiver

Transmitter

 Synchronous:

giao tiếp với các thiết bị ngoại vi như các IC A/D, D/A, EEPROMs

 Asynchronous:

giao tiếp với máy tính PC

Trang 3

USART trong PIC16F877A

5 thanh ghi quan trọng:

 2 thanh ghi chức năng TXSTA, RCSTA

 2 thanh ghi dữ liệu RCREG, TXREG

Trang 4

TXSTA

CSRC: Clock Source Select bit

Chế độ bất đồng bộ: không quan tâm Chế độ đồng bộ: 1->chế độ Master( clock từ BRG) 0->chế độ Slave( clock từ bên ngoài)

TX9 : 9-bit Transmit Enable bit: chọn chế độ truyền 9 bit: ( =1: 9 bit, =0: 8 bit )

TXEN : Transmit Enable bit

=1: cho phép truyền , =0: cấm

SYNC : USART Mode Select bit

Chọn chế độ truyền đồng bộ hay không đồng bộ( =1: đồng bộ, =0: không đồng bộ )

BRGH : High Baud Rate Select bit

Chỉ hoạt động ở chế độ bất đồng bộ: chọn tốc độ cao hay thấp ( =1 HIGH, =0: LOW )

TRMT : Transmit Shift Register Status bit

bít báo trạng thái của bộ đệm: =1: TSR rỗng( dữ liệu đã được truyền xong ), =0: TSR đầy ( dữ liệu còn trong bộ đệm của UART )

TX9D : 9th bit of Transmit Data, can be Parity bit

giá trị của bít thứ 9 trong chế độ truyền 9 bit

Trang 5

RCSTA

Bit 7 SPEN Serial Port Enable bit( = 1 Cho phép cổng giao tiếp USART )

Bit 6 RX9 9-bit Receive Enable bit( = 1 nhận 9 bit dữ liệu, = 0 nhận 8 bit dữ liệu)

Bit 5 SREN Single Receive Enable bit

Ỡ chế độ USART bất đồng bộ: bit này không cần quan tâm.

Ở chế độ USART Master đồng bộ:( = 1 cho phép chức năng nhận 1 byte dữ liệu (8 bit hoặc 9 bit)) Bit 4 CREN Continous Receive Enable bit

Ở chế độ bất đồng bộ:( = 1 cho phép nhận 1 chuỗi dữ liệu liên tục)

Ở chế độ đồng bộ:(= 1 cho phép nhận dữ liệu cho tới khi xóa bit CREN, = 0 không cho phép nhận chuỗi dữ liệu)

Bit 3 ADDEN Address Detect Enable bit

Ở chế độ USART bất đồng bộ 9 bit

ADDEN = 1 cho phép xác nhận địa chỉ, khi bit RSR<8> được set thì ngắt được cho phép thực thi và giá trị trong buffer được nhận vào.

ADDEN = 0 không cho phép xác nhận địa chỉ, các byte dữ liệu được nhận vào và bit thứ 9 có thể được sử dụng như là bit parity.

Bit 2 FERR Framing Eror bit( = 1 xuất hiện lỗi “Framing- sai bit Stop” trong quá trình truyền nhận dữ liệu

Bit 1 OERR Overrun Error bit(= 1 xuất hiện lỗi “Overrun- tràn”)

Bit 0 RX9D

Bit này chứa bit dữ liệu thứ 9 của dữ liệu truyền nhận

Trang 6

TXREG , RCREG , SPBRG

TXREG: chứa dữ liệu truyền đi trong quá trình truyền RCREG: lưu dữ liệu từ ngoài vào trong quá trình nhận

SPBRG: thiết lập tốc độ baud

Trang 7

Quá trình truyền và nhận

Quá trình nhận dữ liệu :

Nhận biết lúc nào có dữ liệu truyền tới:

 Kiểu Polling: liên tục kiểm tra cờ RCIF( thanh ghi

PIR1) nếu =1 thì đọc dữ liệu

 Kiểu dùng ngắt: được thiết lập bằng cách cho RCIE=

1 để cho phép ngắt Tức là mỗi khi có dữ liệu truyền tới RCREG thì sinh ra một ngắt

Trang 8

1 Khởi tạo tốc độ baud: ở thanh ghi SPBRG.

2 Cho phép quá trình truyền không đồng bộ bắng cách thiết lập SPEN = 1, SYNC= 0

3 Cho phép ngắt quá trình nhận dữ liệu: RCIE=1

4 Cho phép nhận dữ liệu : CREN = 1

5 Cho phép ngắt toàn cục băng việc GIE =1, PEIE = 1 ( GIE, PEIE trong thanh ghi INTCON )

6 Xử lý các phần khác chương trình khi có ngắt xảy ra thì xử lý dữ liệu

Trang 9

Quá trình truyền và nhận

1 Khởi tạo tốc độ baud: ở thanh ghi SPBRG

2 Cho phép quá trình truyền không đồng bộ bắng cách thiết lập SPEN = 1, SYNC= 0

3 Cho phép truyền dữ liệu bằng cách thiết lập bít TXEN = 1

4 Khi cần truyền dữ liệu chỉ cần Load dữ liệu đó lên TXREG

Quá trình truyền dữ liệu

Trang 10

CCS

Trang 11

#use rs232 (options)

options được tách nhau bởi dấu phẩy, và có thể là:

BAUD=x// Đặt baud rate

parity=N// Đặt parity

XMIT=pin// Đặt chân truyền

RCV=pin// Đặt chân nhận

Bits=x// Số bit

Ví dụ: #use

rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)

Trang 12

- value = getc()

value = fgetc(stream)

value=getch()

value=getchar()

Hàm này trả về 1 giá trị kí tự 8 bit Hàm này có tác dụng nhận về 1 kí tự từ chân nhận

- putc (cdata)

putchar (cdata)

fputc(cdata, stream)

Hàm này không trả về giá trị,nó có tác dụng đặt 1 kí tự lên chân truyền

Trang 13

- gets (string)

value = fgets (string, stream)

Nó có tác dụng nhận 1 xâu từ chân nhận

- puts (string)

value = fputs (string, stream)

Đặt 1 xâu lên chân truyền

- printf (string)

printf (cstring, values )

printf (fname, cstring, values )

fprintf (stream, cstring, values )

chức năng như hàm puts()

Trang 14

- value = kbhit()

value = kbhit (stream)

Hàm naỳ trả về 1 (hoặc TRUE) nếu 1 kí tự đã được nhận

- setup_uart(baud, stream)

setup_uart(baud)

set_uart_speed (baud, [stream, clock])

perror(string);

Trang 15

Bài toán

Trang 16

Chương trình

chính

Đọc giá trị từ cổng

Com

Đẩy ra PORTD

Đẩy data lên máy

tính

Kbhit()

Đ

S

Trang 17

#include <16f877a.h>

#include <def_877a.h>

#device *=16 ADC=8

#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT

#use delay(clock=20000000)

#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)

char h_thi;

void main()

{trisd=0x00;//dau ra

portd=0x00;//ban dau led tat

while(true)

{ if(kbhit()){

h_thi=getc();

portd=h_thi;

putc(h_thi);

};

}

}

Trang 19

Truyền 1 số có 3 chữ số ( < 256) từ máy tính xuống

Vi điều khiển nhận và hiển thị giá trị nhận được lên các led ở portd Chẳng hạn: Ta truyền số 255 thì tất

cả các led ở portd đều sáng

Bài toán

Ngày đăng: 03/07/2014, 22:59

TỪ KHÓA LIÊN QUAN

w