找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 632|回复: 2
打印 上一主题 下一主题
收起左侧

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, 下载次数: 32)

逻辑分析仪结果

逻辑分析仪结果
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1013720 发表于 2022-5-12 14:07 | 只看该作者
lkc8210 发表于 2022-5-11 14:34
直接用例程呢?

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

使用道具 举报

楼主
ID:161164 发表于 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. }

复制代码



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表