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

📄 uart.c

📁 基于陀螺仪原理的惯性导航程序 用于测量量角速度
💻 C
字号:
/**********************************************************************
  UART.c file
作者:lig&lij
建立日期:2006-4-25
修改日期:2006-4-25
版本:V1.0
**********************************************************************/

#include  "my_type.h"
#include <ADuC7020.H>
#include "UART.H"
#include "ADC.h"
#include "interrupt.h"
//////////////////////////////////////////////////////////////////////
void UART_init(void)
{  
 GP1CON=0x00000011;	//P1.0 P1.1设置为串口功能

// COMIEN0=0x00;   //禁止所有串口中断
 COMIEN0=0x01; //接收寄存器满中断使能

 COMCON0=0x83;   //1 stop bit,8 data bits  最高位置1,寻址COMDIV1寄存器
 COMDIV1=0x00;
 COMDIV2=0x0000;
//COMDIV0=0x44;   //19200 bps
//COMDIV0=0x88;  //9600bps
COMDIV0=0x0b;  //115200bps 
 COMCON0=0x03;	 //最高位置0,寻址COMTX寄存器。
                 //因为COMTX寄存器跟COMDIV1寄存器共用一个地址,由COMCON0
 FIQEN |=UART;   //UART中断分配为IRQ
}
//////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////
void send_a_byte(uint8 a_byte)
{
 while(!(COMSTA0 & 0x40));  //等待发送完毕
 COMTX=a_byte;
}
//////////////////////////////////////////////////////////////////////

////////////////////////////// 发送一个字符串 ///////////////////////////////////////////
//////////////////入口参数: s-要发送的字符串的指针(字符串长度不得大于255)/////////////
/////////////////////////////////////    newline-是否需要换行  0-不换行  非0-换行////////
void prints(uint8 * s,uint32 newline)
{
 unsigned char i;
 i=0;
 while(s[i]!=0)    //判断字符串是否结束
  {
   while(!(COMSTA0 & 0x40));  //等待发送完毕
   COMTX=s[i];
   i++;            //移到下字节
  }
 if(newline)       //如果需要换行
  {
   send_a_byte(13);
   send_a_byte(10);   //发送回车换行
  }
}
////////////////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////
void cls(void)
{
 send_a_byte(0x0C);	  //超级终端清屏指令
 send_a_byte(0x0C);
}
//////////////////////////////////////////////////////////////////////////////////


const uint8 HEX_TABLE[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};

//////////////////////////将一个16位的整数按十六进制发到串口/////////////////////////////////
void print_uint16(uint16 number)
{
 send_a_byte('0');				//发送0x
 send_a_byte('x');
 send_a_byte(HEX_TABLE[(number>>12) & 0x0F]);  //依次发送各部分
 send_a_byte(HEX_TABLE[(number>>8)  & 0x0F]);
 send_a_byte(HEX_TABLE[(number>>4)  & 0x0F]);
 send_a_byte(HEX_TABLE[(number)     & 0x0F]);
 send_a_byte(' ');
}
//////////////////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

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