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

📄 main.c

📁 周立功的EASYARM2131的测试程序
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                               Guangzou ZLG-MCU Development Co.,LTD.
**                                      graduate school
**                                 http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name:			main.c
** Last modified Date:  2004-09-16
** Last Version:		1.0
** Descriptions:		The main() function example template
**
**------------------------------------------------------------------------------------------------------
** Created by:			Chenmingji
** Created date:		2004-09-16
** Version:				1.0
** Descriptions:		The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:			Chenxibing
** Modified date:		2005-02-02
** Version:
** Descriptions:		硬件触发AD转换实验-P0.16管脚触发。
**
********************************************************************************************************/
/********************************************************************************************************
** 功能   :使用ADC模块的通道3进行电压的测量,然后将转换结果从串口送出。
** 			上位机使用EasyARM软件全仿真的DOS窗口观察。
** 说明   :由W1调节测量电压值。
** 			通讯波特率115200,8位数据位,1位停止位,无奇偶校验。
********************************************************************************************************/
#include "config.h"

/*
*******************************************************************************************************
** 函数名称 :DelayNS()
** 函数功能 :长软件延时
** 入口参数 :dly	延时参数,值越大,延时越久
** 出口参数 :无
*******************************************************************************************************
*/
void DelayNS (uint32 dly)
{
	uint32 i;
	
	for ( ; dly>0; dly--)
		for (i=0; i<5000; i++);
}

#define	UART_BPS	115200	// 通讯波特率115200
/*
*******************************************************************************************************
** 函数名称 :UART0_Init()
** 函数功能 :初始化串口0:波特率115200,8位数据位,1位停止位,无奇偶校验。
** 入口参数 :无
** 出口参数 :无
*******************************************************************************************************
*/
void UART0_Init (void)
{
	uint16 Fdiv;
	
	U0LCR = 0x83;		// DLAB = 1
	Fdiv = (Fpclk / 16) / UART_BPS;
	U0DLM = Fdiv / 256;
	U0DLL = Fdiv % 256;
	U0LCR = 0x03;
}

/*
*******************************************************************************************************
** 函数名称 :UART0_SendByte()
** 函数功能 :向串口发送字节数据,并等待数据发送完毕。
** 入口参数 :data		要发送的数据
** 出口参数 :无
*******************************************************************************************************
*/
void UART0_SendByte (uint8 data)
{
	U0THR = data;
	
	while ((U0LSR & 0x40) == 0);	// 等待数据发送完毕
}

/*
*******************************************************************************************************
** 函数名称 :PC_DispChar()
** 函数功能 :向PC机发送显示字符。
** 入口参数 :x		显示字符的横坐标
**			  y		显示字符的纵坐标
**			  chr	显示的字符,不能为ff
**			  color	显示的状态,包括前景色、背景色、闪烁位。
**					与DOS字符显示一样:0~3,前景色,4~6,背景色,7,闪烁位。
** 出口参数 :无	
*******************************************************************************************************
*/
void PC_DispChar (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_DispChar(x++, y, *str++, color);
		if (x >= 80)
		{
			x = 0;
			y++;
		}
	}
}

int main()
{
	uint32 ADC_Data ;
	char str[20];
	PINSEL0 = 0x00000005 ;
	PINSEL1 = (1 << 28) | 0x00 ;
	UART0_Init();
	
	T1MCR = 0x02 ;
	T1EMR = 3 << 4;
	T1MR0 = Fpclk / 2 ;
	T1TC  = 0 ;
	T1TCR = 0x01 ;
	
	AD0CR = (1 << 3)                     |
	        ((Fpclk / 1000000 - 1) << 8) |
	        (0 << 16) |
	        (0 << 17) |
	        (1 << 21) |
	        (0 << 22) |
	        (6 << 24) |
	        (0 << 27) ;
	DelayNS(10) ;
	ADC_Data = AD0DR ;
	while(1)
	{
		while((AD0DR & 0x80000000) == 0) ;
		ADC_Data = AD0DR ;
		ADC_Data = (ADC_Data >> 6) & 0x3FF ;
		ADC_Data = ADC_Data * 2480;
		ADC_Data = ADC_Data / 1024 ;
		sprintf(str,"%4d mV VIN3",ADC_Data);
		ISendStr(0,0,0x30,str);
		
		
	}
	        	
    return 0 ;


}

⌨️ 快捷键说明

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