การเชื่อมต่อพอร์ตอนุกรม (Serial Port) กับไมโครคอนโทรลเลอร์
 
 
(แบบ Hardware)
 
     
  วัตถุประสงค์  
   
     
 
 
 
การใช้งาน hardware Uart
 
  การใช้งานพอร์ตอนุกรม  
     
 
  • ไมโครคอนโทรลเลอร ์ตระกูล PIC จะมีวงจรสื่อสารอนุกรม UART (Universal Asynchronous Receiver Transmitter) แบบ Full Duplex คือ สามารถรับและส่งข้อมูล ได้พร้อมกันอยู่ 1 ชุด สำหรับ PIC16F6xx จะเป็นขา RB1(PIN-7) เป็นขารับข้อมูล (RX ) และ RB2(PIN-8) เป็นขา ส่งข้อมูล (TX)
  • สำหรับ mikroC นั้นเราไม่จำเป็นต้องรู้การทำงานของ Register ควบคุมพอร์ตอนุกรมเลย เพียงแต่เมื่อใช้ฟังก์ชั่น Usart_Init(); คอมไพเลอร์จะรู้เองว่า MCU เบอร์นั้น ใช้ขาใดเป็น UART และจะกำหนดขา TX,RX ทาง hardware ให้โดยอัตโนมัติ
  • การเชื่อมต่อกับ PC นั้นจะใช้ MAX232 เป็นตัวปรับระดับสัญญาณจาก MCU เป็นระดับสัญญาณของ RS232C
 
     
  การกำหนดค่าเริ่มต้น สำหรับการใช้งานพอร์ตอนุกรม (Initial hardware Serial Port)  
 
  • Usart_Init(9600); เป็นการ กำหนดค่าเริ่มต้นในการใช้งานพอร์ตอนุกรมแบบ hardware
 
     
  การใช้งานฟังก์ชั่นการเขียนอ่านพอร์ตอนุกรม  
 
  • Usart_Data_Ready(); ตรวจสอบว่ามีข้อมูลส่งมาครบแล้วหรือไม่
  • Usart_Read(); อ่านข้อมูล 1 byte จาก buffer
  • Usart_Write(); ส่งข้อมูล 1 byte
 
     
 
  • ฟังก์ชั่นส่งข้อมูล String     void TxStrHw(char *Str);
  • เป็นการส่งข้อมูล String ที่ปิดท้ายด้วย NULL (null terminate string)
  • ดังนั้นการกำหนดข้อมูล stringจะต้องปิดท้ายด้วย NULL หรือเขียนแทนด้วย character \x0
  • เช่น char Msg[]="Hello world \r\n\x0";
 
     
  ตัวอย่างการรับส่งข้อมูลอนุกรมแบบ Hardware  
  EXAM5  
 
//***PIC16F628***
//Clock 4Mhz
//Compiler mikroC 5.0
//Describtion: Test Hardware UART
//   Send  "Hello world" to Hardware Port
//and Echo when receive char
//   RX RB1(PIN7)
//   TX RB2(PIN8)

void TxStrHw(char *Str)
{
int i;
	i=0;
	while(Str[i]!=0)
	{
	 Usart_Write(Str[i]);
	 i++;
	}
}
void main()
{
unsigned short i;
char Msg[]="Hello world	\r\n\x0";

// Initialize USART	module (8 bit, 9600	baud rate, no parity bit..)
  Usart_Init(9600);
  TxStrHw(Msg);
	do
	{
	 if(Usart_Data_Ready())	// If data is received
	 {
	  i= Usart_Read();			// Read	the	received data
	  Usart_Write(i);			// Send	data via USART
	 }
    }while (1);

}
 
     
 
DOWNLOAD
 
     
  ผลการทำงาน  
  เมื่อเริ่มต้นจะส่ง "Hello world" ไปยัง PC หลังจากนั้นเมื่อได้รับอักษรใดจาก PC ก็จะส่งอักษรนั้นกลับไป (Echo)  
     
  ASCII Code ( American Standard Code for Information Interchange)  
 
คือตารางรหัสมาตรฐานที่นิยมใช้ในการรับส่งข้อมูลแบบอนุกรม ประกอบด้วยรหัสควบคุม 00H-1FH และรหัสตัวอักษร 20H-7FH
 
  ข้อมูลตัวอักษร (Character)  
 
เป็นข้อมูลขนาด 1 ไบท์มีค่าตั้งแต่ 20H-7FH ในรหัส ASCII และ 80H-FFH เป็นรหัสตัวอักษรเพิ่มเติม เช่นภาษาไทย
 
  ข้อมูลสตริง (String)  
 
ข้อมูลสตริง คือข้อมูลตัวอักษรที่ต่อกันเป็นสายยาวและแสดงจุดสิ้นสุดข้อมูลด้วยค่า NULL หรือ 00