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

📄 main.c

📁 周立功实验SSP调试! 周立功实验SSP调试!
💻 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:			Chenixbing
** Modified date:		2005-01-18
** Version:
** Descriptions:		SSP作SPI主机控制74HC595。
**
********************************************************************************************************
********************************************************************************************************/
#include  "config.h" 

// SSP作主机,当只和1个从机通信的时候,可以不用另外的IO口作从机选择线,直接用SSEL1即可。
//#define   SLAVE_CS       (1 << 29)      // P0.29口为SSP为从机的选择控制引脚

/*
*********************************************************************************************************
** 函数名称:DelayNS()
** 函数功能:长软件延时
** 入口参数:dly		延时参数,值越大,延时越久
** 出口参数:无
*********************************************************************************************************
*/
void  DelayNS(uint32  dly)
{  
    uint32  i;

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

/*
*********************************************************************************************************
** 函数名称:SSP_Init()
** 函数功能:将SSP控制器设置为主机SPI。
** 入口参数:无
** 出口参数:无
*********************************************************************************************************
*/
void  SSP_Init(void)
{
    SSPCR0 = (0x01 << 8) |              // SCR  设置SPI时钟分频
             (0x00 << 7) |              // CPHA 时钟输出相位,仅SPI模式有效 
             (0x01 << 6) |              // CPOL 时钟输出极性,仅SPI模式有效
             (0x00 << 4) |              // FRF  帧格式 00=SPI,01=SSI,10=Microwire,11=保留
             (0x07 << 0);               // DSS  数据长度,0000-0010=保留,0011=4位,0111=8位,1111=16位

    SSPCR1 = (0x00 << 3) |              // SOD  从机输出禁能,1=禁止,0=允许
             (0x00 << 2) |              // MS   主从选择,0=主机,1=从机
             (0x01 << 1) |              // SSE  SSP使能,1=允许SSP与其它设备通信
             (0x00 << 0);               // LBM  回写模式
             
    SSPCPSR = 0x52;                     // PCLK分频值
   // SSPIMSC = 0x07;                     // 中断屏蔽寄存器
    SSPICR  = 0x03;                     // 中断清除寄存器
}

/*
*********************************************************************************************************
* 函数名称:SSP_SendData()
* 函数功能:SSP接口向SPI总线发送数据。
* 入口参数:data        待发送的数据
* 出口参数:返回值为读取的数据
*********************************************************************************************************
*/

uint8  SSP_SendData(uint8 data)
{  
//    IOCLR = SLAVE_CS;			        // 选择从机   
    SSPDR = data;
    while( (SSPSR & 0x01) == 0 );	    // 等待TFE置位,即发送FIFO空   
//    IOSET = SLAVE_CS;
    return(SSPDR);
}

/* 此表为LED0~F以及L、P的字模 */
uint8 const DISP_TAB[16] = {
//	  0	   1     2    3    4    5    6    7    8    9    
	0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, 0x80,0x90,
//	  A    b      C    d    E      F
	0x88, 0x83, 0xC6, 0xA1,0x86, 0x8E};
/*
*********************************************************************************************************
* 函数名称:main
* 函数功能:SSP作SPI 主机,控制74HC595驱动LED显示。
*********************************************************************************************************
*/
volatile uint8 rcv;
int  main(void)
{  
    uint8  i; 
	PCONP |= 1<<10;
   // PINSEL1 = 0x000002A8;                  // 设置SSP管脚连接
   //	PINSEL1 = 0xAA << 2;
   	PINSEL1 = (PINSEL1 & (~(0xFF << 2))) | (0xAA << 2);
//    IO0DIR = SLAVE_CS;
//    IO0SET = SLAVE_CS;
    SSP_Init();                            // 初始化SSP接口
    
    while(1)	
    {  
        for(i=0; i<16; i++)
        {
            rcv = SSP_SendData(DISP_TAB[i]);	   // 发送显示数据
            DelayNS(80);	               // 延时
        }
    }
    return(0);
}
/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

⌨️ 快捷键说明

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