打印

LPC2132下写的ssp程序怎么在protues仿真不了呢?求高人指点

[复制链接]
2153|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

代码如下(周工):
/****************************************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);
//    IODIR = SLAVE_CS;
//    IOSET = SLAVE_CS;
    SSP_Init();                            // 初始化SSP接口
   
    while(1)
    {  
        for(i=0; i<16; i++)
        {
            rcv = SSP_SendData(DISP_TAB);    // 发送显示数据
            DelayNS(80);                // 延时
        }
    }
    return(0);
}
/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/
    仿真结果数码管无显示

相关帖子

沙发
xiong57785|  楼主 | 2011-9-6 14:31 | 只看该作者
怎么不有人回答呢? protues是不是不能仿真ssp功能啊

使用特权

评论回复
板凳
strang| | 2011-9-7 19:03 | 只看该作者
最好直接在硬件上调试。

使用特权

评论回复
地板
xudongguagua| | 2011-9-27 10:09 | 只看该作者
你的启动文件喃?没有启动文件只有主函数有个P用

使用特权

评论回复
5
xiong57785|  楼主 | 2012-2-12 13:38 | 只看该作者
4楼 你说的启动文件 keil软件内已经有了 不需要写出来

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

55

帖子

2

粉丝