具有三键编程和四个开关的虚拟4位微控制器



拟议中的设备在ATmega4809微控制器上模拟一个抽象的4位微控制器,其地址空间为256字节,可以用三个按钮和四个开关进行编程。

地址空间分为16页,每页16条指令。 指令长度为8位,其中最重要的四个是命令,最下面的四个是数据:



要进入编程模式,请按住按钮2,按一下复位按钮,然后释放它,然后再释放按钮;在编程模式下,按按钮2依次对RAM中的指令进行排序。 按钮1允许您在当前指令中更改命令和地址。 使用按钮2移至新地址时,将在ROM中输入前一个地址的指令。 键入程序后,您需要按复位按钮,然后从编程模式过渡到程序执行模式。

命令列表:

0x0-将常数值加载到doutB端口
0x1-在doutA端口中相同
0x2-暂停
0x3-相对无条件跳回
0x4-将常数值加载到变量A中
0x5-使用变量A的值加载内容
0x6-将某物的值加载到变量A中
0x7-使用变量A(和B)执行算术和逻辑运算
0x8-为绝对无条件跳转指令设置地址的高半字节
0x9-绝对无条件跳转到指定地址
0xA,0xB-就像for循环:每次执行命令时,如果变量C(或D)大于零,则绝对无条件地转移到给定地址,然后变量C(或D)的值减小
0xC-如果参数是逻辑单元,则跳过以下语句
0xD-在指定地址处调用该函数
0xE-从调用的函数返回
0xF-设置虚拟4位RAM的地址,可以使用指令0x6E读取并使用指令0x50写入此地址存储的值。

示例1-闪光器:

   0 1f      doutA 1 28  500  2 10      doutB 3 28  500  4 34     -4  

示例2-二进制计数器:


    0 5B DoutB = A 1 59 PWM1 = A 2 71 A++ 3 28  500  4 34     -4  

示例3-可调速闪光器(带子例程):


     : 0 10 DoutA = 0x0 1 d5   myWait 2 1f DoutA = 0xf 3 d5   myWait 4 34     -4   myWait: 5 64 A = Din 6 52 C = A 7 25  50  8 a7 for(C > 0; C--) jmp 7 9 e0  

方案:







所有必需的重复文件(板,固件等)-参考原始文件。 功能紧密的德国TPS模拟器为设计提供了灵感。

Source: https://habr.com/ru/post/zh-CN451670/


All Articles