📜  软盘驱动器 +arduino - BASIC (1)

📅  最后修改于: 2023-12-03 15:41:53.327000             🧑  作者: Mango

使用软盘驱动器与 Arduino 进行数据交互

简介

软盘驱动器是一种使用磁盘式介质的存储设备,它在过去被广泛用于个人电脑上,如今已经被淘汰。使用软盘驱动器可以存储大量的数据,而 Arduino 则是一款小型的单片机开发板,它可以通过各种传感器采集数据,执行各种任务。

在本文中,我们将探讨如何使用软盘驱动器与 Arduino 进行数据交互。通过这种方式,我们可以在 Arduino 上采集和处理数据,并将数据存储到软盘驱动器上。

需要的硬件
  • Arduino 开发板
  • 软盘驱动器
  • CP/M 2.2 操作系统
  • 面包板
  • 杜邦线
连接软盘驱动器与 Arduino

我们需要连接软盘驱动器与 Arduino 开发板,这可以通过面包板和杜邦线实现。以下是连接方法:

  1. 首先将软盘驱动器的两个数据线(DATA)连接到 Arduino 的数字引脚 2 和 3 上,其中DATA1连接2,DATA2连接3。同时需要将GND连接在一起,电源线连接上。
  2. 将软盘驱动器的 READY 引脚连接到 Arduino 的数字引脚 4 上。
  3. 将软盘驱动器的 INDEX 引脚连接到 Arduino 的数字引脚 5 上。

驱动器条线图如附件,

floppy

加载 CP/M 2.2 操作系统

在连接完成后,我们需要加载 CP/M 2.2 操作系统到软盘驱动器中。CP/M 2.2 是一款古老的操作系统,它被广泛用于过去的个人电脑上。在本例中,我们将使用 CP/M 2.2 来读写软盘驱动器中的数据。

加载 CP/M 2.2 操作系统需要用到一个工具,名为 IMD。IMD 可以将一个二进制映像文件加载到软盘驱动器中。你可以在互联网上找到 CP/M 2.2 的二进制映像文件,并使用 IMD 工具将其加载到软盘驱动器中。下面是 IMD 工具的使用方法:

imd cpmdisk.img a:
使用ZoharMonitor 编写程序

在 CP/M 2.2 中,我们可以使用 ZoharMonitor 这个简单的汇编语言编辑器来编写程序。ZoharMonitor 提供了汇编语言的编辑、调试和执行环境。我们可以使用 ZoharMonitor 编写一个简单的程序,来测试软盘驱动器与 Arduino 的数据交互是否正常。

下面是一个简单的 ZoharMonitor 程序,它将数字 0x42 写入驱动器 B 盘的第一个扇区:

ORG 0x0100 ; 从 0100H 开始编写代码
;
; 初始化软盘控制器
INIT:
    LD A, 0xFF
    OUT (0x70), A
    LD A, 1
    OUT (0x71), A
    LD A, 0xD2
    OUT (0x70), A
    NOP
    IN A, (0x71)
    AND 1
    JR Z, INIT
;
; 将数字 0x42 写入驱动器 B 盘的第一个扇区
WRITE:
    LD HL, 0x400 ; 指向写入缓冲区
    LD A, 0xFE ; 驱动器号为 B,扇区编号为 1
    OUT (0x70), A
    LD BC, 0x80 ; 写入 128 个字节
WRITE_LOOP:
    LD A, (HL)
    OUT (0x72), A
    INC HL
    DJNZ WRITE_LOOP
    RET
;
; 主程序入口
START:
    CALL INIT ; 初始化软盘控制器
    CALL WRITE ; 将数字 0x42 写入第一个扇区
    JP 0x0100 ; 返回到 ZoharMonitor
将程序编译为二进制文件

我们需要将 ZoharMonitor 程序编译为二进制文件,然后加载到软盘驱动器中。以下是编译方法:

  1. 使用 ZoharMonitor 将程序汇编成二进制文件。在 ZoharMonitor 中,你可以使用 SAVE 命令将程序保存为二进制格式。
  2. 在 CP/M 2.2 中,使用 LOADER 命令将二进制文件加载到内存中。例如,在驱动器 B 上有一个文件名为 CODE.BIN 的二进制文件,你可以使用以下命令将其加载到内存地址 0x0100 中:
loader b:code.bin 0x0100
执行程序

当你已经将程序加载到内存中后,你可以使用 RUN 命令执行程序。程序将自动执行,并将数字 0x42 写入驱动器 B 盘的第一个扇区。你可以确认程序是否执行成功,通过读取软盘驱动器 B 盘的第一个扇区,来查看其中是否包含数字 0x42

这里的 ZoharMonitor 可以参考附件 。

总结

软盘驱动器和 Arduino 是两种不同的硬件设备,它们的功能和用途也不同。但是通过使用软盘驱动器和 Arduino 进行数据交互,我们可以将它们串联起来,使它们互相协作,实现更丰富的功能。本文介绍了如何连接软盘驱动器和 Arduino,加载 CP/M 2.2 操作系统,使用 ZoharMonitor 编写程序,将程序编译为二进制文件,并执行程序。这些步骤都是关键的,如果出错了,可能会导致程序无法正确执行。