|
การเชื่อมต่อพอร์ตอนุกรม
(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);
}
|
|
|
|
|
|
|
|
|
|
|
|
|
ผลการทำงาน |
|
|
เมื่อเริ่มต้นจะส่ง "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 |
|
|
|
|
|
|
|