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
空(NULL)
0
ddd
1到3位8进制数所代表的任意字符
xhh
16进制所代表的任意字符
表1 转义字符表
例1: wbyte 'P' D10 0 //d10起始的第0字节保存字符P
wbyte 'C' D10 1 //d10起始的第1字节保存字符C
wbyte 'M' D10 2 //d10起始的第2字节保存字符M
wbyte 'T' D10 3 //d10起始的第3字节保存字符T
wbyte ‘E' D10 4 //d10起始的第4字节保存字符E
wbyte 'S' D10 5 //d10起始的第5字节保存字符S
wbyte 'T' D10 6 //d10起始的第6字节保存字符T
prints "%srn" d10 0 //从d10起始的第0字节开始输出字符串“PCMTEST”
prints "%srn" d10 4 //从d10起始的第4字节开始输出字符串“TEST”
例2: mov 1 D0 //d0=1
mov 2 D2 //d2=2
mov 3 D3 //d3=3
prints "d0=%d d1=%d d2=%drn" d0 d1 d2 //输出“d0=1 d1=2 d2=3”
编号 指令名 参数1 参数2 参数3 参数4 说明
3 sprint string Dn K 字符串打印到寄存器指令
string Dn Dn
string Dn Dn K
string Dn Dn Dn
string Fn Dn K
string Fn Dn Dn
Dn Dn K
Dn Dn Dn
当指令有3个参数时:sprint为字符串打印到寄存器指令:
参数1为源字符串;
参数2为目标字符串首地址;
参数3为目标字符串字节偏移地址;
把参数1的字符串保存到参数2指定的寄存器中,参数3为参数2指定的寄存器的偏 移地址。
例: sprint “PCM ” D0 0 //d0寄存器的第0个字节开始保存”PCM”字符串
prints D0 0 //打印输出”PCM ”
当指令有4个参数时:此指令可以把格式化的字符串保存到参数3(Dn)为首地址的寄存器中;
参数1为源字符串;
参数2为要格式化的数据;
参数3为目标字符串首地址;
参数4为目标字符串字节偏移地址;
例: mov 1 d0 //d0=1
sprint "d0=%d " d0 d100 0 //格式化D0后的字符串保存到偏移地址为0的D100
//寄存器中
prints d100 0 //从D00的第0个字节开始打印字符串,输出“d0=1”
8 延时指令
编号 指令名 参数1 说明
1 delay K 延时指令
Dn
DIn
delay为延时指令:单位ms。
例: delay 100 //延时100ms。
delay d0 //如果d0=10,延时10ms。
delay di0 //如果i0=2,d2=10,延时10ms。
9 字符串指令
编号 指令名 参数1 参数2 参数3 说明
1 strcopy string Dn 字符串复制指令
Dn Dn K
Dn Dn Dn
strcopy为字符串复制指令:
把参数1表示的字符串复制到参数2,如果有参数3,表示要复制的字符数量,如果没有就全部复制.注意字符串的最大长度不要超过100个字节;
例: strcopy “abcde” d1 //d1保存”abcd”,d2的第0字节保存字符e,d2第1字节保存 //0。
strcopy d1 d10 4 //如果d1开始保存的字符串是”abcde”,只复制4字符,e字
//符会被舍去,所以从d10开始保存字符”abcd”,但d11的第 //0字节会存储0;
编号 指令名 参数1 参数2 说明
2 strlen string Dn 字符串长度指令
Dn Dn
strlen为字符串长度指令:参数1是字符串,把参数1字符串的长度值保存到参数2指定的Dn寄存器中;
例: strcopy "abcdef" d0 //把字符串”abcdef”复制到d0为起始的寄存器中,
strlen d0 d30 //获取d0的字符串长度,并保存到D30,此时D30=6
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)