小编Kea*_*onB的帖子

与 z80 的 SPI 硬件接口

我正在尝试使用 z80 制作一台复古计算机,理想情况下希望让它能够从 SD 卡启动。我 100% 决定使用 z80,并且不想使用具有内部 SPI 硬件接口的微控制器。我想了解计算机的硬件和软件方面,因此 arduino 和微控制器不在考虑之列,因为硬件方面在您购买之前就已完成。无论如何,我的主要问题是是否可以将移位寄存器、一些解码逻辑和软件结​​合起来通过 SPI 模式从 SD 卡读取数据?我在互联网上搜索了几个小时并阅读了几篇文章,但似乎找不到教程。我了解 SPI 协议,但是,缺乏有关硬件方面的信息,因为微控制器往往内置所有硬件。我计划将 SD 卡的 SOMI 连接到移位寄存器 SIMO 的串行输入引脚将SD卡的串行输出引脚连接到移位寄存器的串行输出引脚,然后将一些数据引脚连接到一些触发器,中间有一些解码逻辑,这样如果我输出到特定端口,它将切换触发器。触发器将充当 SD 卡的时钟和芯片使能线。我还将 z80 的一个引脚连接到移位寄存器的锁存器引脚(同样在中间有解码逻辑),这样如果我输出到特定端口,它将锁存移位寄存器的数据。我不关心速度/效率,只要我能准确地从 SD 卡读取数据即可。另外,我是否可以将移位寄存器时钟输入连接到与 SD 卡连接的同一时钟?任何有关如何实现这一点的建议将不胜感激,谢谢!

z80 spi sd-card retro-computing shift-register

5
推荐指数
1
解决办法
2616
查看次数

如何使用free释放使用malloc进行的堆分配?

free()在令牌生成器中使用堆释放时遇到问题。令牌生成器是递归下降解析计算器的一部分,该计算器可以完美地工作。但是在合并了对释放函数的调用后,它的行为就不稳定。实际上,计算器可能永远不会耗尽其堆,编写具有内存泄漏的程序只是一种不好的做法。

标记化

#define OPERAND 0
#define OPERATOR 1
#define PARENTHESIS 2
#define TERMINAL 3
#define ADD '+'
#define SUBTRACT '-'
#define MULTIPLY '*'
#define DIVIDE '/'
#define EXPONENT '^'
#define L_PARENTHESIS '('
#define R_PARENTHESIS ')'

typedef struct {
    int id;
    char *value;
} token;

int token_count();
token *tokenize();
void deallocate();
Run Code Online (Sandbox Code Playgroud)

标记化

#include <stdio.h>
#include <stdlib.h>

#include "tokenize.h"

int token_count(char string[]) {
    int i = 0;
    int count = 0;
    while (string[i] != '\0') {
        if (string[i] >= '0' …
Run Code Online (Sandbox Code Playgroud)

c malloc memory-leaks dynamic

0
推荐指数
1
解决办法
74
查看次数