📄 rs232.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 + -