5 输入输出指令
编号 指令名 参数1 参数2 说明
1 in Xn Dn 输入指令
Yn Dn
Sn Dn
2 out Dn 输出指令
DIn
in为输入指令:可以读取输入端口,输出端口,状态位到Dn寄存器;
例: in x0 d1 //如果x0为高电平,d1=1;如果x0为低电平,d1=0;
in y0 d1 //如果y0为高电平,d1=1;如果y0为低电平,d1=0;
in s0 d1 //如果s0置1,d1=1;如果s0置零,d1=0;
out为输出指令:把Dn寄存器的值按位输出到对应端口Yn,即Dn的位0输出到Y0,位1输出到Y1,依次类推,所以使用此指令需要注意,此指令会改变所有输出口的状态。如果只想改变某一个输出口的状态,请使用set,reset指令;
例: out d1 //如果d1=8;Y3输出1,其他都输出0;
out di1 //如果di1=255;Y0--Y7全部输出1,其他都输出0;
6 置位复位指令
编号 指令名 参数1 说明
1 set Yn 置位指令
Mn
2 reset Yn 复位指令
Sn
Mn
set为置位指令:使输出端口Yn,或者中间寄存器Mn置1;
例: set y0 //使输出端口Y0变成高电平;
set m1 //m1=1;
reset为复位指令:使输出端口Yn,或者中间寄存器Mn,或者状态寄存器Sn清零;
注意Sn是状态位,它的置位是自动的,表示发生了某件事情,可以通过查询或者中断的方式处理事情发生后做的动作。如果用查询的方式,处理完后必须用此指令清零,如果用中断处理,中断程序会自动清零;
例: reset y0 //使输出端口Y0变成低电平;
reset m0 //使中间寄存器M0清零;
reset s1 //s1=0;
7 打印指令
编号 指令名 参数1 参数2 说明
1 print Dn 串口打印数据指令
Fn
DIn
FIn
In
Dn K
DIn K
Dn Dn
print为串口打印数据指令:
此打印指令有2种形式:
如果只有一个参数1,则以字符串的形式打印4字节整形数或者单精度浮点数;
如果有2个参数,则参数1为寄存器起始地址,参数2为偏移字节地址,打印输出单字节的整数。
注意此指令不能直接输出数据的2进制值,如果要直接输出2进制值,可以用串口指令。
例: mov h4030201 d0 //d0=h4030201
print d0 //打印d0的10进制值:67305985
print d0 0 //打印d0开始的第0个字节的值,为1
print d0 1 //打印d0开始的第1个字节的值,为2
print d0 2 //打印d0开始的第2个字节的值,为3
print d0 3 //打印d0开始的第3个字节的值,为4
编号 指令名 参数1 参数2 参数3 参数4 说明
2 prints Dn K 串口打印字符串指令
DIn K
Dn Dn
string
string Dn
string Fn
string Dn Dn
string Dn Fn
string Fn Dn
string Fn Fn
string Dn Dn Dn
string Dn Dn Fn
string Dn Fn Dn
string Dn Fn Fn
string Fn Dn Dn
string Fn Dn Fn
string Fn Fn Dn
string Fn Fn Fn
string Dn K
prints为串口打印字符串指令:
此打印指令有2种形式:
1 如果参数1为Dn寄存器,指令会把Dn寄存器地址当成字符串首地址,参数2为从第 几个字符开始打印;
2 如果参数1为字符串string,指令会打印string的内容,参数2,3,4为格式化的数据,可 以打印Dn或者Fn寄存器的值。
注意:prints string Dn K 指令,Dn当作字符串的首地址,作为格式化的数据, K表示从第K字节开始格式化输出;
prints指令支持的转义字符如下表:
| 转义字符 | 意义 | ASCII码(10进制) |
| a | 响铃(BEL) | 7 |
| b | 退格(BS),将当前位置移动前一列 | 8 |
| f | 换页(FF),将当前位置移到下页开头 | 12 |
| n | 换行(LF),将当前位置移到下一行开头 | 10 |
| r | 回车(CR),将当前位置移到本行开头 | 13 |
| t | 水平制表(HT),跳到下一个TAB位置 | 9 |
| v | 垂直制表(VT) | 11 |
| \ | 代表一个反斜杠字符'' | 92 |
| ' | 代表一个单引号(撇号)字符 | 39 |
| " | 代表一个双引号字符 | 34 |
| ? | 代表一个问号 | 63 |


