//------------------------------------------------------------------------------------------------------------------//<br />//功能說明:MC9S12XS128--SCI常式<br />//使用說明:實現PC→MCU→PC通訊,使用者可以根據需要修改程式,實現PC→MCU或者MCU→PC通訊<br />//程式設計:電子設計吧【www.dzsj8.com】<br />//設計時間:2010.01.21<br />//----------------------------------------------------------------------------------------------------------------//</p><p>#include <hidef.h> /* common defines and macros */<br />#include "derivative.h" /* derivative-specific definitions */</p><p>//unsigned char txt[]={"Hello World!"} ;<br />void delay(unsigned int time)<br />{<br />unsigned int i,j,k;<br />for(i=0;i<125;i++)<br /> for(j=0;j<125;j++)<br /> for(k=time;k>0;k--);<br />}</p><p>//-----------------------初始化SCI0----------------------------//<br />void SciInit()<br />{<br /> SCI0BD=52; //9600bps Baud Rate=BusClock/(16*SCIBD)<br /> SCI0CR1=0; //正常8位元模式,無同位<br /> SCI0CR2=0X2C; //發送允許 接受中斷允許<br />}</p><p>//----------------------讀SCI資料-----------------------------//<br />unsigned char SciRead()<br />{<br /> if(SCI0SR1_RDRF==1) //表明資料從位移寄存器傳輸到SCI資料寄存器<br /> {<br /> SCI0SR1_RDRF=1; //讀取資料寄存器會將RDRF清除 重新置位<br /> return SCI0DRL; //返回資料寄存器的資料<br /> }<br />}</p><p>//-----------------寫SCI資料---------------------------------//<br />void SciWrite(unsigned char sendchar)<br />{<br /> while (!(SCI0SR1&0x80));<br /> SCI0DRH=0;<br /> SCI0DRL=sendchar;<br />}</p><p>//------------------------main----------------------------------//<br />void main(void)<br />{<br /> SciInit();<br /> EnableInterrupts;</p><p> for(;;)<br /> {<br /> } /* wait forever */<br /> /* please make sure that you never leave this function */<br />}</p><p>//---------------------------接收中斷函數-----------------------//<br />#pragma CODE_SEG NON_BANKED<br />void interrupt 20 SCI0_re(void)<br />{<br /> unsigned char ch;<br /> ch=SciRead();<br /> SciWrite(ch) ;<br />}</p><p>