模块推荐:https://item.taobao.com/item.htm?ft=t&id=671629736762
7---strcopy指令实验:
硬件需求:PC机;
软件需求:PCM编译软件;
供电方式:无;
连接电路:无
本实验的目的是让用户了解stycopy指令的使用方法。PCM开发板模块编译软件可
以运行所有的基本指令,所以本实验使用编译软件运行程序。
stycopy指令为字节串复制指令,此指令可以把字节串常量或者寄存器中的字节串复
制到指定寄存器的中;
实验程序如下:
1 main
2 strcopy "abcdef" d0 //d0作为起始地址,保存”abcdef”
3 rbyte d0 d10 0 //读取D0的第0字节值到D10
4 prints "d0_0=\'%c\'\r\n" d10 //打印D0的第0字节的字符
5 rbyte d0 d10 1 //读取D0的第1字节值到D10
6 prints "d0_1=\'%c\'\r\n" d10 //打印D0的第1字节的字符
7 rbyte d0 d10 2 //读取D0的第2字节值到D10
8 prints "d0_2=\'%c\'\r\n" d10 //打印D0的第2字节的字符
9 rbyte d0 d10 3 //读取D0的第3字节值到D10
10 prints "d0_3=\'%c\'\r\n" d10 //打印D0的第3字节的字符
11 rbyte d1 d10 0 //读取D1的第0字节值到D10
12 prints "d1_0=\'%c\'\r\n" d10 //打印D1的第0字节的字符
13 rbyte d1 d10 1 //读取D1的第1字节值到D10
14 prints "d1_1=\'%c\'\r\n" d10 //打印D1的第1字节的字符
15 prints "d0_0=\"%s\"\r\n" d0 0 // 从d0的第0字节开始打印字符串。
16 prints "d0_1=\"%s\"\r\n" d0 1 // 从d0的第1字节开始打印字符串。
17 prints "d1_0=\"%s\"\r\n" d1 0 // 从d0的第1字节开始打印字符串。
18 strcopy d0 d20 5 //复制D0的前5个字节到D20开始的寄存器。
19 prints "d20=\"%s\"\r\n" d20 0 // 从d20的第0字节开始打印字符串
20 strlen d0 d30 //获取d0的字符串长度,并保存到D30
21 prints "lenth of d0=%d\r\n" d30 //打印d0的字符串长度
22 strlen d20 d30 //获取d20的字符串长度,并保存到D30
23 prints "lenth of d20=%d\r\n" d30 //打印d20的字符串长度
24 endmain
程序中第1行复制字符串”abcdef”到D0寄存器中;实际上,因为D0寄存器只能存储4
个字节,所以D0寄存器中存储的字符串为”abcd”,D1寄存器中保存了字符串“ef”;
第3-14行使用rbyte指令分别读取D0,D1寄存器中的单个字符到D10寄存器中,并输
出字符;
第15行,从D0寄存器的第0字节位置输出字符串;
第16行,从D0寄存器的第1字节位置输出字符串;
第17行,从D1寄存器的第0字节位置输出字符串;
第18,19行,从D0寄存器中的前5个字符到D20寄存器中,并输出;
第20,21行,计算D0寄存器中的字符串长度,保存到D30寄存器中,并输出;
第21,22行,计算D2寄存器中的字符串长度,保存到D30寄存器中,并输出;
在编译软件中输入以上的程序,保存后,按运行菜单下的编译按钮,然后再按运
行,程序运行的结果如下:
指令运行开始!
d0_0='a'
d0_1='b'
d0_2='c'
d0_3='d'
d1_0='e'
d1_1='f'
d0_0="abcdef"
d0_1="bcdef"
d1_0="ef"
d20="abcde"
lenth of d0=6
lenth of d20=5
指令运行结束!
8---三角函数指令实验:
硬件需求:PC机;
软件需求:PCM编译软件;
供电方式:无;
连接电路:无
本实验的目的是让用户了解三角函数指令(sin,cos,tan,asin,acos,atan)的使用方法。
PCM开发板模块编译软件可以运行所有的基本指令,所以本实验使用编译软件运行程
序。
三角函数指令的书写格式请参阅指令集介绍;
实验程序如下:
1 main
2 mov 30 f0 //f0保存角度值,30度
3 prints "f0=%f\r\n" f0 // 打印F0的值
4 sin f0 f1 //求F0的正弦,sin(f0),保存到F1
5 prints "sin(%f°)=%f\r\n" f0 f1 // 打印输出
6 asin f1 f2 //求F1的反正弦,asin(f1),保存到F2
7 prints "asin(%f)=%f°\r\n" f1 f2 // 打印输出
8 mov 60 f0 //f0保存角度值,60度
9 prints "f0=%f\r\n" f0 // 打印F0的值
10 cos f0 f1 //求F0的余弦,cos(f0),保存到F1
11 prints "cos(%f°)=%f\r\n" f0 f1 // 打印输出
12 acos f1 f2 //求F1的反余弦,acos(f1),保存到F2
13 prints "acos(%f)=%f°\r\n" f1 f2 // 打印输出
14 mov 45 f0 //f0保存角度值,45度
15 prints "f0=%f\r\n" f0 // 打印F0的值
16 tan f0 f1 //求F0的正切,tan(f0),保存到F1
17 prints "tan(%f°)=%f\r\n" f0 f1 // 打印输出
18 atan f1 f2 //求F1的反正切,atan(f1),保存到F2
19 prints "atan(%f)=%f°\r\n" f1 f2 // 打印输出
20 endmain
程序中第2,3行,存储30到F0寄存器中,并输出;
第4,5行,计算F0的正弦,保存到F1,即:F1=sin30,然后打印输出;
第6,7行,计算F1的反正弦,保存到F2,即:F2=asin0.5,然后打印输出;
在编译软件中输入以上的程序,保存后,按运行菜单下的编译按钮,然后再按运
行,程序运行的结果如下:
指令运行开始!
f0=30.000000
sin(30.000000°)=0.500000
asin(0.500000)=30.000000°
f0=60.000000
cos(60.000000°)=0.500000
acos(0.500000)=60.000000°
f0=45.000000
tan(45.000000°)=1.000000
atan(1.000000)=45.000000°
指令运行结束!
9---pow指令实验:
硬件需求:PC机;
软件需求:PCM编译软件;
供电方式:无;
连接电路:无
本实验的目的是让用户了解pow指令的使用方法。PCM开发板模块编译软件可以运
行所有的基本指令,所以本实验使用编译软件运行程序。
本实验使用pow指令计算圆的面积;
实验程序如下:
1 main //计数圆的面积
2 mov 5 f0 //f0保存圆半径,值为5
3 prints "f0=%f\r\n" f0 // 打印F0的值
4 pow f0 2 f1 //计算f0的平方,即半径的平方,保存到F1
5 prints "5^2=%f\r\n" f1 // 打印F1的值
6 mul 3.14159 f1 f2 //计算圆面积,PI*R^2,保存到f2
7 prints "PI*5^2=%f\r\n" f2 // 打印F2的值,即圆面积
8 endmain
程序中第2,3行,存储5到F0寄存器中,并输出;
第4,5行,计算5的平方并存储到F1寄存器中,并输出;
第6,7行,计算PI*5的平方并存储到F2寄存器中,并输出;
在编译软件中输入以上的程序,保存后,按运行菜单下的编译按钮,然后再按运
行,程序运行的结果如下:
指令运行开始!
f0=5.000000
5^2=25.000000
PI*5^2=78.539749
指令运行结束!
10---not指令实验:
硬件需求:PC机;
软件需求:PCM编译软件;
供电方式:无;
连接电路:无
本实验的目的是让用户了解pow数指令的使用方法。PCM开发板模块编译软件可以
运行所有的基本指令,所以本实验使用编译软件运行程序。
本实验还使用了循环指令,条件判断指令,复位指令,中间寄存器的使用,输出寄
存器的使用;
程序的功能就是把中间寄存器M0和输出寄存器Y0,置位,延迟1S,然后复位,又延
时1S,这样不停的循环;
实验程序如下:
1 main
2 reset m0 //m0=0,复位m0
3 reset y0 //y0=0,复位y0
4 while 1 //无限循环
5 not m0 //m0取反
6 mov m0 d0 //m0保存到D0
7 prints "m0=%d\r\n" d0 //输出信息
8 not y0 //y0取反
9 in y0 d1 //读y0到D1
10 prints "y0=%d\r\n" d1 //输出信息
11 delay 1000 //延时1S
12 endwhile
13 endmain
程序中第2,3行,复位M0,Y0;
第4-10行之间的程序会无限循环执行;
第5-9行的程序为循环体内的程序,不停的把M0,Y0置位,延迟1S,然后复位,并
输出显示;
在编译软件中输入以上的程序,保存后,按运行菜单下的编译按钮,然后再按运
行,程序运行的结果如下:
指令运行开始!
m0=1
y0=1
m0=0
y0=0
m0=1
y0=1
m0=0
y0=0
m0=1
y0=1
m0=0
y0=0
指令运行被终止!