标题: STC8H3K64S4单片机作为主站SPI通讯没有输出数据,望求教 [打印本页]

作者: hie_she    时间: 2022-5-11 10:42
标题: STC8H3K64S4单片机作为主站SPI通讯没有输出数据,望求教
第一次使用STC8H3K64S4单片机作为主站写了一个SPI通讯,用逻辑分析仪发现没有数据输出
程序也是从基于数据手册例程改的

#include "stc8h.h"
//#include "intrins.h"

void main()
{
        P_SW1 |= 0x04;  // 切换SPI管脚
    P2M0 = 0x00;
    P2M1 = 0x00;

    P22 = 1;        //SS
        SPCTL = 0x52;   //分频频率1.5M                        
    SPSTAT = 0xc0;
         
    while (1)
    {
                P22 = 0;                             //拉低从机的SS管脚   
        SPDAT = 0x5a;                        //发送测试数据
        while (!(SPSTAT & 0x80));            //查询完成标志
        SPSTAT = 0xc0;                       //清中断标志
        P22 = 1;                             //拉高从机的SS管脚
                  
               
    }
}

屏幕截图 2022-05-11 1051hei1.png (3.56 KB, 下载次数: 35)

逻辑分析仪结果

逻辑分析仪结果

作者: lkc8210    时间: 2022-5-11 14:34
直接用例程呢?
  1. #include "reg51.h"
  2. #include "intrins.h"

  3. sfr     P0M1    =   0x93;
  4. sfr     P0M0    =   0x94;
  5. sfr     P1M1    =   0x91;
  6. sfr     P1M0    =   0x92;
  7. sfr     P2M1    =   0x95;
  8. sfr     P2M0    =   0x96;
  9. sfr     P3M1    =   0xb1;
  10. sfr     P3M0    =   0xb2;
  11. sfr     P4M1    =   0xb3;
  12. sfr     P4M0    =   0xb4;
  13. sfr     P5M1    =   0xc9;
  14. sfr     P5M0    =   0xca;

  15. sfr     SPSTAT  =   0xcd;
  16. sfr     SPCTL   =   0xce;
  17. sfr     SPDAT   =   0xcf;
  18. sfr     IE2     =   0xaf;
  19. #define ESPI        0x02

  20. sbit    SS      =   P1^0;
  21. sbit    LED     =   P1^1;

  22. void main()
  23. {
  24.     P0M0 = 0x00;
  25.     P0M1 = 0x00;
  26.     P1M0 = 0x00;
  27.     P1M1 = 0x00;
  28.     P2M0 = 0x00;
  29.     P2M1 = 0x00;
  30.     P3M0 = 0x00;
  31.     P3M1 = 0x00;
  32.     P4M0 = 0x00;
  33.     P4M1 = 0x00;
  34.     P5M0 = 0x00;
  35.     P5M1 = 0x00;

  36.     LED = 1;
  37.     SS = 1;

  38.     SPCTL = 0x50;                               //使能SPI主机模式
  39.     SPSTAT = 0xc0;                              //清中断标志

  40.     while (1)
  41.     {
  42.         SS = 0;                                 //拉低从机SS管脚
  43.         SPDAT = 0x5a;                           //发送测试数据
  44.         while (!(SPSTAT & 0x80));               //查询完成标志
  45.         SPSTAT = 0xc0;                          //清中断标志
  46.         SS = 1;                                 //拉高从机的SS管脚
  47.         LED = !LED;                             //测试端口
  48.     }
  49. }

复制代码




作者: hie_she    时间: 2022-5-12 14:07
lkc8210 发表于 2022-5-11 14:34
直接用例程呢?

刚开始就直接用的查询例程,没输出




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1