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

📄 rs232.h

📁 基于飞思卡尔智能车比赛
💻 H
字号:
#include <hidef.h>      
#include <mc9s12dg128.h>     
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"
//unsigned int BUS_CLK=24;
void SCI_Init(uchar BUS_CLK,unsigned long BR);//SCI初始化
void print(unsigned char data); //发送字符
void print_string(char *data); //发送字符串
char get(void);                //接收字符
void print_uchar(uchar data);   //输出数字(0~255)
void print_uint(uint data);     //输出数字(0~65535)
interrupt void Serv_int(void); //接收发送中断程序

void SCI_Init(uchar BUS_CLK,unsigned long BR) {
  unsigned long temp; 
    temp = SCI0DRH;            //清空数据寄存器高位
		temp = SCI0DRL;            //清空数据寄存器低位
		temp = SCI0SR1;            //清空SCI状态寄存器1
		temp = SCI0SR2;            //清空SCI状态寄存器2
  SCI0BDL = (unsigned char)(BUS_CLK*1000000UL /* OSC freq */ /BR /* baud rate */ / 16 /*factor*/);
  SCI0CR1=0x00;					/*normal,no parity*/
  SCI0CR2=0x2c;       /*RIE=1,TE=1,RE=1*/
}
/*****************发送字符***********************/
void print(unsigned char data){
  unsigned char temp;
  temp=SCI0SR1;      /*clear flag*/
  while (!(SCI0SR1&0x80));  /* wait for output buffer empty*/
  SCI0DRH=0;
  SCI0DRL=data;
}
/*****************发送字符串*********************/
void print_string(char *data) {
  char *f;
  f=data;
  while(*f!='\0'){
    print(*f);
    f++;
  }
}
/******************接收字符*********************/
char get(void){
  char result,temp;
  temp=SCI0SR1;      /*clear flag*/
  while(!(SCI0SR1&0x20));
  result=SCI0DRL;
  return result;
 }
/***************接收发送中断程序****************/
interrupt void Serv_int(void)
{char *data; 
  DisableInterrupts;
  *data=get();
  print_string(data);
  EnableInterrupts;
}
/*************输出数字*************************/
void print_uchar(uchar data) {                   //(0~255)
uchar tem[3];
tem[0]=data/100+0x30;
tem[1]=data/10%10+0x30;
tem[2]=data%10+0x30; 
if(tem[0]!=0x30) {
  print(tem[0]);
}
else
{
  print(0x20);
}

if(tem[0]!=0x30|tem[1]!=0x30){  
   print(tem[1]);
}
else
{
  print(0x20);
}
 print(tem[2]); 
}

void print_uint(uint data) {                      //(0~65535)
uchar tem[5];
tem[0]=data/10000+0x30;
tem[1]=data/1000%10+0x30;
tem[2]=data/100%10+0x30;
tem[3]=data/10%10+0x30;
tem[4]=data%10+0x30;
if(tem[0]!=0x30) { 
  print(tem[0]);
}
else
{
  print(0x20); 
};

if(tem[0]!=0x30|tem[1]!=0x30){
  print(tem[1]);
}
else
{
  print(0x20); 
}

if(tem[0]!=0x30|tem[1]!=0x30|tem[2]!=0x30){
  print(tem[2]);
}
else
{
  print(0x20);
}

if(tem[0]!=0x30|tem[1]!=0x30|tem[2]!=0x30|tem[3]!=0x30){
  print(tem[3]);
}
else
{
  print(0x20);
}
  print(tem[4]);

}

⌨️ 快捷键说明

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