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

📄 ssi_rec.c

📁 EasyARM615的KEIL下的调试程序,包含IO口,串口,SPI口等
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                               Guangzhou ZHIYUAN electronics Co.,LTD.
**                                     
**                                 http://www.embedtools.com		    
**
**--------------File Info-------------------------------------------------------------------------------
** File Name: ssi_send.c	   
** Last modified Date: 2007-04-25 
** Last Version: v1.0	   
** Description: 通过 SSI 接口循环向外输出 0~F 的字模,74HC595 接收到 SSI 信号以后			    
**               在7段数码管上显示相应的字符。
**				同时,从74HC595接收回数据,并从独立的LED以16进制数显示		 
** 
**------------------------------------------------------------------------------------------------------
** Created By: Pan Yi Fei	    
** Created date: 2007-04-25 	 
** Version: v1.0	  
** Descriptions:	 
**
**------------------------------------------------------------------------------------------------------
** Modified by:		   
** Modified date:	   
** Version:
** Description:	    
**
********************************************************************************************************/
#include "hw_memmap.h"
#include "hw_types.h"
#include "ssi.h"
#include "gpio.h"
#include "sysctl.h"
#include "systick.h"
#define BitRate     115200			// 设定波特率 
#define DataWidth   8				// 设定数据宽度 

// 此表为7段数码管显示0~F的字模		  
unsigned char DISP_TAB[16] = {
    0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,
    0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E};

//-----------------------------------------------------------------------------------------------------------------------------
// 函数原形:void delay(unsigned long d)	 
// 功能描述:延时数量为 d 个指令周期。	 
// 参数说明:unsigned long d,将要延时的时间数。    
// 返回值:无	    
//-----------------------------------------------------------------------------------------------------------------------------
void delay(unsigned long d)
{
  for(;d;d--);
}

//-----------------------------------------------------------------------------------------------------------------------------
// 函数原形:int main(void)	  
// 功能描述:主函数	 		  
// 参数说明:无	 
// 返回值:0 
//-----------------------------------------------------------------------------------------------------------------------------
int main(void)
{
  unsigned char i=0,j;
  unsigned long rec[17];		// 定义数据接收数组	 
  // 使能 SSI
  SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI);
  // 使能 GPIO A 口	 
  SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
  SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);

  // 配置 SSI 
  SSIConfig(SSI_BASE, SSI_FRF_MOTO_MODE_0, SSI_MODE_MASTER, BitRate, DataWidth);
  // 使能 SSI 
  SSIEnable(SSI_BASE);
  // 设定 GPIO A 2~5 引脚为使用外设功能	  
  GPIODirModeSet(GPIO_PORTA_BASE, (GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 |
                 GPIO_PIN_5), GPIO_DIR_MODE_HW);
  // 设定 GPIO B 0-3 引脚为GPIO输出口   
  GPIODirModeSet(GPIO_PORTB_BASE, (GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | 
  				 GPIO_PIN_3),GPIO_DIR_MODE_OUT);
  while (1)
  {
    for (i=0; i<16; i++)
    {
      // 循环输出 0~F 的字模  
	  SSIDataPut(SSI_BASE, DISP_TAB[i]);
	  delay(1000);
	  SSIDataNonBlockingGet(SSI_BASE, &rec[i]);	// 接收数据到指定数组 
	  for(j=0; j<16; j++)
	  {
	   	if(DISP_TAB[j]==rec[i])
		{
	  		GPIOPinWrite(GPIO_PORTB_BASE ,(GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 |
	  				GPIO_PIN_3),(~j));	  		//用独立的LED输出相应的16进制  
			break;
		}
	  }
      delay(2000000);	      // 输出后延时一段时间	 
    }
  }
}

⌨️ 快捷键说明

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