PCM开发板模块实验指导--基本指令2

模块推荐: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

                指令运行被终止!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值