Giao tiếp máy tính Usart

Tài liệu tham khảo khối Usart, ứng dụng giao tiếp vi điều khiển với máy tính

ppt18 trang | Chia sẻ: franklove | Lượt xem: 2854 | Lượt tải: 3download
Bạn đang xem nội dung tài liệu Giao tiếp máy tính Usart, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
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 USART 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 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 Thanh ghi tốc độ Baud: SPBRG 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. 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 đượ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 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 (BRGH=0) ( BRGH=1 ) 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 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 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 CCS #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) - 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 - 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() - 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); Bài toán #include #include #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); }; } }    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
Tài liệu liên quan