您的位置:首页 > 其它

手把手教你写S12XS128程序(29)--SCI模块应用

2010-10-19 20:42 218 查看
//------------------------------------------------------------------------------------------------------------------//
//功能说明:MC9S12XS128--SCI例程
//使用说明:实现PC→MCU→PC通信,用户可以根据需要修改程序,实现PC→MCU或者MCU→PC通信
//程序设计:电子设计吧【www.dzsj8.com】
//设计时间:2010.01.21
//----------------------------------------------------------------------------------------------------------------//

#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */

//unsigned char txt[]={"Hello World!"} ;
void delay(unsigned int time)
{
unsigned int i,j,k;
for(i=0;i<125;i++)
for(j=0;j<125;j++)
for(k=time;k>0;k--);
}

//-----------------------初始化SCI0----------------------------//
void SciInit()
{
SCI0BD=52;         //9600bps  Baud Rate=BusClock/(16*SCIBD)
SCI0CR1=0;         //正常8位模式,无奇偶校验
SCI0CR2=0X2C;      //发送允许   接受中断允许
}

//----------------------读SCI数据-----------------------------//
unsigned char SciRead()
{
if(SCI0SR1_RDRF==1)     //表明数据从位移寄存器传输到SCI数据寄存器
{
SCI0SR1_RDRF=1;     //读取数据寄存器会将RDRF清除  重新置位
return SCI0DRL;        //返回数据寄存器的数据
}
}

//-----------------写SCI数据---------------------------------//
void SciWrite(unsigned char sendchar)
{
while (!(SCI0SR1&0x80));
SCI0DRH=0;
SCI0DRL=sendchar;
}

//------------------------main----------------------------------//
void main(void)
{
SciInit();
EnableInterrupts;

for(;;)
{
} /* wait forever */
/* please make sure that you never leave this function */
}

//---------------------------接收中断函数-----------------------//
#pragma CODE_SEG NON_BANKED
void  interrupt 20 SCI0_re(void)
{
unsigned char ch;
ch=SciRead();
SciWrite(ch) ;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: