⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 freescale单片机的sci通信样板程序
💻 C
字号:
#include <hidef.h>      
#include <mc9s12dg128.h>     
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"
uchar sum;
uchar k;
/*---------延迟程序----------------------*/
void Delay(void)
{
unsigned char i,j;
for(i=0;i<200;i++) 
{
  for(j=0;j<100;j++)
    asm nop;
}
}

/*--------闪烁程序-----------------------*/
void light(void) 
{
unsigned char i;
for(i=0;i<10;i++) 
{
PORTB=0;
Delay();
PORTB=0XFF;
Delay(); 
}
}

/*-------串口初始化----------------------*/
void SciInit(){
  SCI0BDL = (unsigned char)((16000000UL /* OSC freq */ / 2) / 9600 /* baud rate */ / 16 /*factor*/);
  SCI0CR1=0;					/*normal,no parity*/
  SCI0CR2=0X2C;       /*RIE=1,TE=1,RE=1*/
}

/*-------发射端程序----------------------*/
void SciTx(unsigned char text){
  unsigned char temp;
  temp=SCI0SR1;      /*clear flag*/
      while (!(SCI0SR1&0x80));  /* wait for output buffer empty */
  SCI0DRH=0;
  SCI0DRL=text;
}

/*-------接受端程序----------------------*/
char SciRx(void){
  char result,temp;
  temp=SCI0SR1;      /*clear flag*/
  while(!(SCI0SR1&0x20));
  result=SCI0DRL;
  return result;
 }
 
 /*--------中断程序-----------------------*/
interrupt void Serv_int(void)
{unsigned char data;
  DisableInterrupts;
  data=SciRx();
  sum=data;
  light();
  SciTx(data);
  EnableInterrupts;
}
 
/*-------主函数--------------------------*/
void main(void) {
  EnableInterrupts;
  DDRB=0XFF;
  DDRS=0x00;/*PS口为按键扫描输入口*/
  SciInit();
   for(;;) {
   for(k=0;k<100;k++){
   //SciTx(k);
   Delay();
   Delay();
   Delay();
   }
  
  } 
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -