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

📄 target.c

📁 lpc2131keil例程
💻 C
📖 第 1 页 / 共 2 页
字号:
*******************************************************************************************************
*/
void PC_Disp(uint8 x, uint8 da)
{
	UART0_SendByte(0xff);
	UART0_SendByte(0x81);
	UART0_SendByte(x);
	UART0_SendByte(da);
	UART0_SendByte(0x00);
}
/*
*******************************************************************************************************
** 函数名称 :PC_DispChar()
** 函数功能 :向PC机发送显示字符。
** 入口参数 :no	显示位置
**			  char	显示的字符,不能为ff
** 出口参数	:无	
*******************************************************************************************************
*/
void PC_DispChar (uint8 no, uint8 chr)
{
	UART0_SendByte (0xff);
	UART0_SendByte (0x80);
	UART0_SendByte (no);
	UART0_SendByte (chr);
	UART0_SendByte (0x00);
}
/*
*******************************************************************************************************
** 函数名称 :SendTimeRtc()
** 函数功能 :读取RTC的时间值,并将读出的时分秒值通过串口送到上位机显示。
** 入口参数 :无
** 出口参数 :无
*******************************************************************************************************
*/
void SendTimeRtc (void)
{
    uint8 const SHOWTABLE[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
	uint32 datas;
	uint32 times;
	uint32 bak;
	times = CTIME0;			// 读取完整的时钟寄存器
	datas = CTIME1;
	
	bak = (datas >> 16) & 0xfff;	// 获取 年
	PC_Disp(0, SHOWTABLE[bak / 1000]);
	bak = bak % 1000;
	PC_Disp(1, SHOWTABLE[bak / 100]);
	bak = bak % 100;
	PC_Disp(2, SHOWTABLE[bak / 10]);
	PC_Disp(3, SHOWTABLE[bak % 10]);
	
	bak = (datas >> 8) & 0x0f;		// 获取 月
	PC_Disp(4, SHOWTABLE[bak / 10]);
	PC_Disp(5, SHOWTABLE[bak % 10]);
	
	bak = datas & 0x1f;				// 获取 日
	PC_Disp(6, SHOWTABLE[bak / 10]);
	PC_Disp(7, SHOWTABLE[bak % 10]);
	
	bak = (times >> 24) & 0x07;		// 获取 星期
	PC_Disp(8, SHOWTABLE[bak]);
		
	bak = (times >> 16) & 0x1f;		// 获取 小时
	PC_Disp(9, SHOWTABLE[bak / 10]);
	PC_Disp(10, SHOWTABLE[bak % 10]);
	
	bak = (times >> 8) & 0x3f;		// 获取 分钟
	PC_Disp(11, SHOWTABLE[bak / 10]);
	PC_Disp(12, SHOWTABLE[bak % 10]);
	
	bak = times & 0x3f;				// 获取 秒钟
	PC_Disp(13, SHOWTABLE[bak / 10]);
	PC_Disp(14, SHOWTABLE[bak % 10]);
}

/*
*******************************************************************************************************
** 函数名称 :RTCInit()
** 函数功能 :初始化实时时钟
** 入口参数 :无
** 出口参数 :无
*******************************************************************************************************
*/
void RTCInit (void)
{
	PREINT = Fpclk / 32768 - 1;	// 设置基准时钟分频器
	PREFRAC = Fpclk - (Fpclk / 32768) * 32768;
	
	CCR   = 0x00;	// 禁止时间计数器
	
	YEAR  = 2008;
	MONTH = 02;
	DOM   = 20;
	DOW   = 3;
	HOUR  = 15;
	MIN   = 07;
	SEC   = 30;
	
	CIIR = 0x01;	// 设置秒值的增量产生1次中断
	CCR  = 0x01;	// 启动RTC
}
void SEND_DATA(uint8 dat)
{
uint8 i;
for(i=0;i<8;i++)
    {
	 if(dat&0x01)
	     {
	      IO0SET=DAT;
         }
     else
	     {
	      IO0CLR=DAT;
	     }
    IO0CLR=SRCLK;
    IO0SET=SRCLK;
	dat=dat>>1;
    }
}


void SEND_NUM(uint8 SHU)
{
uint8 shuju[10]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};
i=SHU/10;
j=SHU%10;
SEND_DATA(shuju[i]);
SEND_DATA(shuju[j]);
IO0CLR=RCLK;
IO0SET=RCLK;
IO0CLR=OE;
}
void SEND_TIME(void)
{
uint8 const SHOWTABLE[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
PC_DispChar (0,SHOWTABLE[j]);
PC_DispChar (1,SHOWTABLE[i]);
} 
void ADCInit(void)
{
/* 进行ADC模块设置 */
	AD0CR = (1 << 3)						|	// SEL=8,选择通道3
			((Fpclk / 1000000 - 1) << 8)	|	// CLKDIV=Fpclk/1000000-1,转换时钟为1MHz
			(0 << 16)						|	// BURST=0,软件控制转换操作
			(0 << 17)						|	// CLKS=0, 使用11clock转换
			(1 << 21)						|  	// PDN=1,正常工作模式
			(0 << 22)						|  	// TEST1:0=00,正常工作模式
			(1 << 24)						|	// START=1,直接启动ADC转换
			(0 << 27);						 	// 直接启动ADC转换时,此位无效
}
/*
*******************************************************************************************************
** 函数名称 :PC_DispChar()
** 函数功能 :向PC机发送显示字符。
** 入口参数 :x		显示字符的横坐标
**			  y		显示字符的纵坐标
**			  chr	显示的字符,不能为ff
**			  color	显示的状态,包括前景色、背景色、闪烁位。
**					与DOS字符显示一样:0~3,前景色,4~6,背景色,7,闪烁位。
** 出口参数 :无	
*******************************************************************************************************
*/
void PC_Dis(uint8 x, uint8 y, uint8 chr, uint8 color)
{
	UART0_SendByte(0xff);	// 起始字符
	UART0_SendByte(x);
	UART0_SendByte(y);
	UART0_SendByte(chr);
	UART0_SendByte(color);
}

/*
*******************************************************************************************************
** 函数名称 :ISendStr()
** 函数功能 :向上位机发送字符串。
** 入口参数 :x		显示字符的横坐标
**			  y		显示字符的纵坐标
**			  color	显示的状态,包括前景色、背景色、闪烁位。
**					与DOS字符显示一样:0~3,前景色,4~6,背景色,7,闪烁位。
**			  str	要发送的字符串,以'\0'结束
** 出口参数 :无	
*******************************************************************************************************
*/
void ISendStr (uint8 x, uint8 y, uint8 color, char *str)
{
	while (1)
	{
		if (*str == '\0')	break;	// 结束字符
		PC_Dis(x++, y, *str++, color);
		if (x >= 80)
		{
			x = 0;
			y++;
		}
	}
}
 
/*********************************************************************************************************
** Function name:			TargetInit
**
** Descriptions:			Initialize the target board; it is called in a necessary place, change it as 
**							needed
**
** input parameters:		None
** Returned value:			None
**         
** Used global variables:	None
** Calling modules:			None
**
** Created by:				Chenmingji
** Created Date:			2004/02/02
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        void TargetInit(void)
{
    OS_ENTER_CRITICAL();
    srand((uint32) TargetInit);
    VICInit();
    Timer0Init();
	init_port();
	InitialiseUART0(115200);
	RTCInit ();
	ADCInit();
    OS_EXIT_CRITICAL();
} 
/*********************************************************************************************************
**                  以下为一些与系统相关的库函数的实现
**                  具体作用请ads的参考编译器与库函数手册
**                  用户可以根据自己的要求修改        
********************************************************************************************************/
/*********************************************************************************************************
**                  The implementations for some library functions
**                  For more details, please refer to the ADS compiler handbook and The library 
**					function manual
**                  User could change it as needed       
********************************************************************************************************/

/*
这段程序,,去除掉。。。
by mcu123
在startup.s 中添加了
*/
/*
#include "rt_sys.h"
#include "stdio.h"

#pragma import(__use_no_semihosting_swi)

        int __rt_div0(int a)
{
    a = a;
    return 0;
}

        int fputc(int ch,FILE *f)
{
    ch = ch;
    f = f;
    return 0;
}

    int fgetc(FILE *f)
{
    f = f;
    return 0;
}


        int _sys_close(FILEHANDLE fh)
{
    fh = fh;
    return 0;
}

        int _sys_write(FILEHANDLE fh, const unsigned char * buf,
                      unsigned len, int mode)
{
    fh = fh;
    buf = buf;
    len =len;
    mode = mode;
    return 0;
}
        int _sys_read(FILEHANDLE fh, unsigned char * buf,
                     unsigned len, int mode)
{
    fh = fh;
    buf = buf;
    len =len;
    mode = mode;
    
    return 0;
}

       void _ttywrch(int ch)
{
    ch = ch;
}

        int _sys_istty(FILEHANDLE fh)
{
    fh = fh;
    return 0;
}
        int _sys_seek(FILEHANDLE fh, long pos)
{
    fh = fh;
    return 0;
}
        int _sys_ensure(FILEHANDLE fh)
{
    fh = fh;
    return 0;
}

        long _sys_flen(FILEHANDLE fh)
{
    fh = fh;
    return 0;
}
       int _sys_tmpnam(char * name, int sig, unsigned maxlen)
{
    name = name;
    sig = sig;
    maxlen = maxlen;
    return 0;
}

        void _sys_exit(int returncode)
{
    returncode = returncode;
}

        char *_sys_command_string(char * cmd, int len)
{
    cmd = cmd;
    len = len;
    return 0;
}
*/

/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

⌨️ 快捷键说明

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