Thaimicrotron.com Home
 
การเชื่อมต่อพอร์ตอนุกรม (Serial Port) กับไมโครคอนโทรลเลอร์
 
 
(แบบ Hardware)
 
     
  วัตถุประสงค์  
   
     
 
 
 
การใช้งาน hardware Uart
 
  การใช้งานพอร์ตอนุกรม  
     
 
  • ไมโครคอนโทรลเลอร ์ตระกูล PIC จะมีวงจรสื่อสารอนุกรม UART (Universal Asynchronous Receiver Transmitter) แบบ Full Duplex คือ สามารถรับและส่งข้อมูล ได้พร้อมกันอยู่ 1 ชุด สำหรับ PIC16F6xx จะเป็นขา RB1(PIN-7) เป็นขารับข้อมูล (RX ) และ RB2(PIN-8) เป็นขา ส่งข้อมูล (TX)
  • สำหรับ CCS PICC นั้นเราไม่จำเป็นต้องรู้การทำงานของ Register ควบคุมพอร์ตอนุกรมเลย เพียงแต่
    เมื่อใช้ฟังก์ชั่น #use rs232 โดยกำหนดขา TX,RX ให้ตรงกับ hardware ของ PIC16F6xx คอมไพเลอร์จะรู้ว่าเราต้องการที่จะใชพอร์ตอนุกรมแบบ hardware
  • การเชื่อมต่อกับ PC นั้นจะใช้ MAX232 เป็นตัวปรับระดับสัญญาณจาก MCU เป็นระดับสัญญาณของ RS232C
 
     
  การกำหนดค่าเริ่มต้น สำหรับการใช้งานพอร์ตอนุกรมแบบ Hardware (Initial hardware Serial Port)  
 
  • #use rs232(baud=9600,parity=N,xmit=PIN_B2,rcv=PIN_B1,bits=8
    เมื่อให้ xmit=PIN_B2,rcv=PIN_B1 เป็นการ กำหนดค่าเริ่มต้นในการใช้งานพอร์ตอนุกรมแบบ hardware
 
     
  การใช้งานฟังก์ชั่นการเขียนอ่านพอร์ตอนุกรม  
 
  • kbhit(); ตรวจสอบว่ามีข้อมูลส่งมาหรือไม่
  • getc(); อ่านข้อมูล 1 byte จาก buffer
  • printf(); ส่งข้อมูลออกทางพอร์ตอนุกรม
 
     
     
  ตัวอย่างการรับส่งข้อมูลอนุกรมแบบ Hardware  
  RS232.C  
 
#include <16F628.h>
#use delay(clock=4000000)
#fuses XT,PUT,BROWNOUT,MCLR,NOWDT,NOPROTECT,NOLVP
#use rs232(baud=9600,parity=N,xmit=PIN_B2,rcv=PIN_B1,bits=8)


void main()
{
int c;
    printf("Hello World\r\n");

    while(1)
    {
     if(kbhit())        //Check data Receive 
     {   
       c=getc();        //Get data
       printf("%c",c);  //Echo
     }
    }
 
} 
 
     
 
DOWNLOAD
 
     
  ผลการทำงาน  
  เมื่อเริ่มต้นจะส่ง "Hello World" ไปยัง PC หลังจากนั้นเมื่อได้รับอักษรใดจาก PC ก็จะส่งอักษรนั้นกลับไป (Echo)  
     
     
     
 
  • เมื่อเราต้องการใช้งาน PORTB ทั้ง 8 bit หรือเพื่มพอร์ตอนุกรมในการใช้งานเพิ่มขึ้นอีก 1 พอร์ต จึงต้องใช้ขาอื่นของ MCU เป็นพอร์ตสื่อสารอนุกรม
  • แต่การใช้งานพอร์ตอนุกรมแบบ software นั้นจะเป็นแบบแบบฮาล์ฟดูเพลกซ์ (Half Duplex) เป็นการส่งและรับข้อมูลแบบสลับกัน คือเมื่อด้านหนึ่งส่ง อีกด้านหนึ่ง เป็นฝ่ายรับ สลับกัน ไม่สามารถรับ-ส่งในเวลาเดียวกันได้
  • จากการทดลองนี้จะใช้ขา RA0(PIN-17) เป็นขาส่งข้อมูล (TX ) และ RA1(PIN-18) เป็นขา รับข้อมูล (RX)
  • การเชื่อมต่อกับ PC นั้นจะใช้ MAX232 เป็นตัวปรับระดับสัญญาณจาก MCU เป็นระดับสัญญาณของ RS232C
 
     
  การกำหนดค่าเริ่มต้น สำหรับการใช้งานพอร์ตอนุกรมแบบ Software (Initial hardware Serial Port)  
 
  • #use rs232(baud=9600,parity=N,xmit=PIN_A0,rcv=PIN_A1,bits=8
    เมื่อกำหนดให้ Tx,Rx เป็นขาอื่นที่ไม่ใช่ Hardware UART Compiler จะใช้ software จำลองการทำงานให้
 
     
 
 
 
การใช้งาน Software Uart
 
     
     
     
  ASCII Code ( American Standard Code for Information Interchange)  
 
คือตารางรหัสมาตรฐานที่นิยมใช้ในการรับส่งข้อมูลแบบอนุกรม ประกอบด้วยรหัสควบคุม 00H-1FH และรหัสตัวอักษร 20H-7FH
 
  ข้อมูลตัวอักษร (Character)  
 
เป็นข้อมูลขนาด 1 ไบท์มีค่าตั้งแต่ 20H-7FH ในรหัส ASCII และ 80H-FFH เป็นรหัสตัวอักษรเพิ่มเติม เช่นภาษาไทย
 
  ข้อมูลสตริง (String)  
 
ข้อมูลสตริง คือข้อมูลตัวอักษรที่ต่อกันเป็นสายยาวและแสดงจุดสิ้นสุดข้อมูลด้วยค่า NULL หรือ 00