Thứ Hai, 3 tháng 12, 2018

CHƯƠNG 4 : TRUYỀN THÔNG VỚI PC QUA CỔNG COM-RS232 - XỬ LÝ CHUỖI

_Chương này sẽ giúp bạn viết chương trình có sử dụng giao tiếp PC . Điều này rất cần thiết khi bạn 
muốn VĐK khi hoạt động có thể truyền dữ liệu cho PC xử lý , hoặc nhận giá trị từ PC để xử lý và
điều khiển ( dùng PC điều khiển động cơ , nhiệt độ , hay biến PC thành dụng cụ đo các đại lượng
điện , Oscilocope , . . .) . 
_Viết chương trình lập trình cho VĐK để giao tiếp máy tính là công việc rất phức tạp khi viết bằng
ASM , rất khó hiểu đối với những người mới bắt đầu lập trình . Đặc biệt là khi viết cho những con
VĐK không hỗ trợ từ phần cứng ( 8951 thì phải (?) ) . Thật may là phần lớn PIC hiện nay đều hỗ trợ
phần này nên việc lập trình có dễ dàng hơn . Nhưng nếu chương trình của bạn yêu cầu truyền hay
nhận nhiều loại dữ liệu ( số 8 , 16 ,32 bit , dương , âm , chuỗi , . . .) thì việc viết chương trình xử lý
và phân loại chúng là điều “ kinh dị “ . 
_Nhưng nếu lập trình ASM cho vấn đề này rồi thì bạn sẽ thấy sao dễ dàng quá vậy khi giải quyết
vấn đề này với C khi dùng CCS . Rất đơn giản ! CCS cung cấp rất nhiều hàm phục vụ cho giao tiếp
qua RS232 ( cổng COM ) và vô số hàm xử lý chuỗi . Chương này sẽ giải quyết điều đó . 
_Một yếu tố quan trọng là khi nào thì VĐK biết PC truyền data Ỉcó thể lập trình bắt tay bằng phần
mềm hay đơn giản là dùng ngắt . Các ví dụ về ngắt , xem phần ngắt.
I / _TRUYỀN THÔNG VỚI PC QUA CỔNG COM :
_Để sử dụng giao thức này , phải có 2 khai báo như VD sau : 
  • #use delay (clock = 40000000 )   // VDK đang dùng OSC 40Mhz
  • #use rs232 (baud=19200 , parity=n , xmit=pin_C6 , rcv=pin_C7 )        // baud= 19200 , không chẵn lẻ , chân truyền C6 , chân nhận C7 
_Các hàm liên quan : 
  • Printf ( )
  • Getc ( )  
  • putc ( )
  • Getch ( )  
  • putchar ( )
  • Getchar ( )  
  • fputc ( )
  • Fgetc ( )  
  • puts ( )
  • Gets ( )  
  • fputs ( ) 
  • Fgets ( )   
  • Kbhit ( )
  • Assert ( )    → mới trên CCS 3.222
  • Perror ( )    → mới trên CCS 3.222
  • Set_uart_speed ( )
  • Setup_uart ( )
_Tất cả các hàm trên đòi hỏi phải khai báo chỉ thị tiền xử lý #use RS232 ( . . . . .) .
_Hàm perror ( ) đòi hỏi thêm #include<errno.h > . Hàm assert() đòi hỏi thêm #include<assert.h> .
1 /printf (string )   Printf (cstring ,values . . . ) 
_Dùng xuất chuỗi theo chuẩn RS232 ra PC .
_string là 1 chuỗi hằng hay 1 mảng ký tự ( kết thúc bởi ký tự null ) .
_value là danh sách các biến , cách nhau bởi dấu phẩy .
_Bạn phải khai báo dạng format của value theo kiểu %wt .Trong đó w có thể có hoặc không , có
giá trị từ 1-9 chỉ rõ có bao nhiêu ký tự được xuất ra ( mặc định không có thì có bao nhiêu ra bấy
nhiêu ), hoặc 01-09 sẽ chèn thêm 0 cho đủ ký tự hoặc 1.1-1.9 cho trường hợp số thực . còn t là kiểu 
giá trị .
_ t có thể là : 
  • C : 1 ký tự
  • S : chuỗi hoặc ký tự
  • U : số 8 bit không dấu
  • x : số 8 bit kiểu hex ( ký tự viết thường ,VD : 1ef )
  • X : số 8 bit kiểu hex ( ký tự viết hoa ,VD : 1EF )
  • D : số 8 bit có dấu
  • e : số thực có luỹ thừa VD : e12
  • f : số thực
  • Lx : số hex 16 /32 bit ( ký tự viết thường )
  • LX : hex 16 /32 bit ( ký tự viết hoa )
  • Lu : số thập phân không dấu
  • Ld : số thập phân có dấu
  • % : ký hiệu %
VD : 
SpecifierValue=0x12Value=0xfe
%03u018254
%u18254
%2u18*
%518254
%d18-2
%x12Fe
%X12FE
%4X001200FE

* Result is undefined - Assume garbage. 
VD :
Int k =6 ;
Printf ( “ hello “ );
Printf ( “ %u “ , k );
2 / KBHIT ( ) :
_Thường thì chúng ta dùng RC6 và RC7 cho RX và TXtrong giao tiếp cổng COM , VDK PIC trang
bị phần cứng phục vụ việc này với thanh ghi gởi và nhận và các bit bào hiệu tương ứng . Do đó khi
dùng RS232 hỗ trợ từ phần cứng thì KHBIT ( ) trảvề TRUE nếu 1 ký tự đã được nhận ( trong bộ
đệm phần cứng ) và sẵn sàng cho việc đọc , và trả về 0 nếu chưa sẵn sàng .
_Hàm này có thể dùng hỏi vòng xem khi nào có data nhận từ RS232 để đọc .

1 nhận xét:

Bài đăng mới nhất

Valdes Fernando - Microcontrollers Applications With Pic

Bài đăng phổ biến