谁能使用只有 384 字节程序存储器的微控制器?

电器工程 微控制器 图片 记忆 贮存
2022-01-26 00:16:15

例如PIC10F200T

实际上,您编写的任何代码都会比这更大,除非它是单一用途的芯片。有没有办法从外部存储或其他东西加载更多的程序内存?我只是好奇,我不明白这怎么会很有用......但它必须是。

4个回答

孩子们,离开我的草坪!

384 字节的空间足以在汇编程序中创建相当复杂的东西。

如果您回顾历史,回到计算机只有一个房间那么大的时代,您会发现在 <1k 内完成了一些真正令人惊叹的艺术壮举。

例如,阅读经典的梅尔故事 - 真正的程序员诚然,这些家伙有 4096 字的记忆可玩,颓废的异教徒。

还可以查看一些旧的演示场景比赛,其中的挑战是将“介绍”放入软盘的引导块中,典型的目标是 4k 或 40k,并且通常设法包括音乐和动画。

编辑添加:事实证明,您可以用 320 个字实现世界上第一个 100 美元的科学计算器

为年轻人编辑:

  • 软盘 = 软盘。
  • Bootblock = 启动时读取的软盘的第一个扇区。
  • Demoscene = 黑客团体之间的编程竞赛。
  • 汇编器 = 如果您太软而无法使用 8 个拨动开关和“存储”按钮,则可以用奇特的方式对设备进行编程。

微控制器足够便宜,以至于它们经常被用来做非常简单的事情,而在过去几年里,这些事情更有可能用离散逻辑来完成。真的很简单的事情。例如,可能希望设备每 5 秒打开输出一秒,这比 555 定时器能够做到的更精确。

  movwf OSCCON
mainLp:
  ; Set output low
  clrf  GPIO
  movlw 0xFE
  movwf TRIS
  clrwdt
  call  Wait1Sec
  clrwdt
  call  Wait1Sec
  clrwdt
  call  Wait1Sec
  clrwdt
  call  Wait1Sec
  ; Set output high
  bsf   GPIO,0
  clrwdt
  call  Wait1Sec
  goto  mainLp
Wait1Sec:
  movlw 6
  movwf count2
  movlw 23
  movwf count1
  movlw 17
  movwf count0
waitLp:
  decfsz count0
   goto   waitLp
  decfsz count1
   goto   waitLp
  decfsz count2
   goto   waitLp
  retlw  0

这将是一个真实的、可用的应用程序,代码空间不到 32 个字(48 个字节)。人们可以很容易地添加一些选项来让一些 I/O 引脚控制时序选项,并且仍然有很多空间可供使用,但即使所有芯片所做的正是上面显示的内容,它仍然可能比使用离散的任何替代方案更便宜、更容易逻辑。顺便说一句,clrwdt指令可以移动到子程序中,但这样做会使事情变得不那么健壮。如前所述,即使故障导致返回地址堆栈损坏,在执行返回到主循环之前,看门狗也不会得到馈送。如果这从未发生过,看门狗将在几秒钟后重置芯片。

“仅”384 字节?

回到过去,我的工作是(自己)为一台服务于船舶、管道和炼油厂管理行业的专用计算机编写整个操作系统。该公司的第一个此类产品是基于 6800 的,并且正在升级到 6809,他们希望新的操作系统能够与 6809 一起使用,这样他们就可以消除原始操作系统的许可成本。他们还将引导 rom 的大小从 32 字节增加到 64 字节。如果我没记错的话——那是大约 33 年前的事了!- 我说服工程师给我 128 字节,这样我就可以将整个操作系统的设备驱动程序放在 rom 上,从而使整个设备更加可靠和通用。这包括:

  • 带按键去抖动的键盘驱动程序
  • 视频驱动程序
  • 磁盘驱动程序和基本文件系统(摩托罗拉“abloader 格式”,IIRC),具有将“存储”内存视为真正快速磁盘空间的内置能力。
  • 调制解调器驱动程序(他们倒退了 FSK,所以这些调制解调器只相互通信)

是的,所有这些都是最简单的,并且经过手工优化以消除每个无关的循环,但完全可用且可靠。是的,我把所有这些都塞进了可用的字节中——哦,它还设置了中断处理、各种堆栈,并初始化了实时/多任务操作系统,提示用户启动选项,然后启动系统。

几年前,我的一位仍隶属于该公司(其继任者)的朋友告诉我,我的代码仍在使用中!

你可以用 384 字节做很多事情......

您可以将其用于非常小的应用程序(例如延迟 PSU 启动555 定时器更换基于 TRIAC 的控制、LED 闪烁等),其占用空间比您使用逻辑门或 555 定时器所需的要小。