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

//------------------------------------------------------------------------------------------------------------------// //功能说明: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) ; }

你可能感兴趣的:(c,function,2010,delay,macros)