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

📄 main.c

📁 周立功PXA270教学实验箱的ARM汇编指令实验1
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                               Guangzhou ZHIYUAN electronics Co.,LTD.
**                                     
**                                 http://www.zyinside.com
**
**--------------File Info-------------------------------------------------------------------------------
** File Name: main.c
** Last modified Date: 2006-09-22  
** Last Version: v1.0
** Description: MagicARM270实验箱的基础实验---LED数码管显示实验。
**              通过I/O模拟SPI控制74HC595(驱动LED数码管),实现'0'-'F'符号的显示。
**------------------------------------------------------------------------------------------------------
** Created By: 黄绍斌
** Created date: 2006-09-22  
** Version: v1.0
** Descriptions:
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Description:
**
********************************************************************************************************/
#include  "config.h"

// 74HC595控制引脚宏定义
#define   SPI_CS		(1<<24)		/* GP24 */
#define   SPI_DATA		(1<<25)		/* GP25 */
#define   SPI_CLK		(1<<23)     /* GP23 */

// 定义I/O操作函数
#define  SSCLK()         GPSR0 = SPI_CLK
#define  CSCLK()         GPCR0 = SPI_CLK
#define  SDATA()         GPSR0 = SPI_DATA
#define  CDATA()         GPCR0 = SPI_DATA
#define  SCS_SPI()       GPSR0 = SPI_CS
#define  CCS_SPI()       GPCR0 = SPI_CS



/*********************************************************************************************************
** Function name: _NOP
** Descriptions: 短软件延时。
**              延时时间与系统时钟有关。
** Input: 无
** Output: 无
** Created by: 黄绍斌
** Created Date: 2006-09-22
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void  _NOP(void)
{  
	uint32  i;

    for(i=0; i<100; i++);
}



/*********************************************************************************************************
** Function name: DelayNS
** Descriptions: 长软件延时。
**              延时时间与系统时钟有关。
** Input: dly	延时参数,值越大,延时越久
** Output: 无
** Created by: 黄绍斌
** Created Date: 2005-12-31 
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void  DelayNS(uint32  dly)
{  
	uint32  i;

   	for(; dly>0; dly--) 
       for(i=0; i<50000; i++);
}




/*********************************************************************************************************
** Function name: HC595_SendDat
** Descriptions: 向74HC595发送2字节数据。发送数据时,高位先发送。
** Input: dat		要发送的数据(2个字节,对应于2个LED数码管)
** Output: 无
** Created by: 黄绍斌
** Created Date: 2006-09-22
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void  HC595_SendDat(uint16 dat)
{  
	uint8  i;

   	CCS_SPI();			    	// SPI_CS = 0
   	_NOP();
   	
   	for(i=0; i<16; i++)			// 发送8位数据
   	{  
   		CSCLK();				// SPI_CLK = 0   		
   		_NOP();
   		
      	/* 设置SPI的DATA输出值 */
      	if((dat&0x8000) != 0) SDATA();
          else  CDATA();          
      	dat <<= 1;
      	
      	SSCLK();				// SPI_CLK = 1
      	_NOP();
   	}
   
   SCS_SPI();			    	// SPI_CS = 1,输出显示数据
   _NOP();
}



// LED数码管字模表
const uint8  DISP_TAB[16] = { 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90, 
                              0x88,0x83,0xC6,0xA1,0x86,0x8E };


/*********************************************************************************************************
** Function name: main
** Descriptions: 通过I/O模拟SPI控制74HC595(驱动LED数码管),实现'0'-'F'符号的显示。          
** Input: 无
** Output: 系统返回值0
** Created by: 黄绍斌
** Created Date: 2005-12-31 
**-------------------------------------------------------------------------------------------------------
** Modified by: 黄绍斌
** Modified Date: 2006-09-22 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
int  main(void)
{	
	int  i; 
	uint16  dat;  
	
	// 初始化I/O
	GPDR0 = GPDR0 | SPI_CS | SPI_DATA | SPI_CLK;
	GAFR0_U = GAFR0_U & ( ~(0x3F<<14) );
	           
    GPSR0 = SPI_CS;         
  
    while(1)
    {   
    	for(i=0; i<16; i++)
    	{
    		if(i >= 15)
    		{	
    			dat = DISP_TAB[0];
    		}
    		else
    		{
    			dat = DISP_TAB[i+1];
    		}
    		
    		dat = (dat<<8) | DISP_TAB[i];
    		HC595_SendDat(dat); 
    	 
	    	DelayNS(100);       	
    	}
    }              
    	
   	return(0);
}

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

⌨️ 快捷键说明

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