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

📄 uart.c

📁 keil开发平台下的ADUC7027的功能模块代码。
💻 C
字号:
/**********************************************************************
  UART.c file
  ADuC7027的串口函数
  作者:Computer-lov
  建立日期:2006-3-22
  修改日期:2006-3-22
  版本:V1.0
  版权所有,盗版必究。
  Copyright(C) Computer-lov 2006-2016
  All rights reserved
**********************************************************************/

#include <../My_type.h>
#include <ADuC7027.H>
#include "UART.H"

//////////////////////////////////////////////////////////////////////
void UART_init(void)
{  
 GP1CON=0x00000011;	//P1.0 P1.1设置为串口功能

 COMIEN0=0x00;   //禁止所有串口中断

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

//////////////////////////////////////////////////////////////////////
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 + -