模块推荐:https://item.taobao.com/item.htm?ft=t&id=671629736762

       25---IIC主读写固定寄存器地址实验:​​​​​​​

                硬件需求:PC机,PCM模块一个,microUSB线;

                软件需求:PCM编译软件,电脑端串口调试助手;

                供电方式:USB线接PC机供电;

                连接电路:图29

图29         IIC主读写固定寄存器地址实验电路图

PCM开发板模块共有2个IIC接口,其中IIC0固定工作在主模式,IIC1固定工作在从

模式,我们把SCL0,SDA0作为主机接口,SCL1,SDA1作为从机接口。

本实验直接使用模块的主从设备进行通讯,直接把SCL0连接SCL1,SDA0连接

SDA1,SCL为时钟线,SDA为数据线;

实验过程:IIC主把D100寄存器的值写入到IIC从的D200寄存器中,延时0.5秒,IIC

主又读取IIC从的D200寄存器中的值到D101寄存器中,然后把D100的值加1,一直这样

循环下去。每次循环,主写入的值应该等于主读的值。

注意指令iicread后面至少要加50ms的延时,不然有可能读出的数据为0.

实验程序如下:

1 intpro int1 //主写中断

2         iicslaverwrite di0 d0 //IIC从更新发送缓存,i0是地址(主写的时候,I0已经保存了

//要写的地址),D0是字节数

3 endint

4 main

5         iic 1 100000 //初始化主IIC,1表示16位寄存器地址,速度100KHz

6         intinit s1 int1 //开启主写中断

//初始化IIC从,本机从地址52(注意是7位地址),I0保存主机要读写的寄存器地

//址,D0是读写字节长度,主读S0置位,主写S1置位

7         iicslaver 52 i0 d0 s0 s1

8         mov 1 d100 //d100=1

9         while 1 //无限循环

10                 prints "master write,data is %d\r\n" d100 //输出D100寄存器值

11         ​​​​​​​        iicwrite 52 200 d100 4 //主写,从地址52,从机寄存器地址200,要写的数

//据为D100,长度4字节

12         ​​​​​​​        delay 500 //延时0.5S

13        ​​​​​​​         iicread 52 200 d101 4 //主读,从地址52,从机寄存器地址200,读取的数

//据保存到寄存器D101,长度4字节

14         ​​​​​​​        delay 500 //延时0.5S

15         ​​​​​​​        prints "master read,data is %d\r\n" d101 //输出D101寄存器值

16         ​​​​​​​        inc d100 //D100加1

17         endwhile

18 endmain

程序中第1-3行为IIC主写中断程序,在中断程序中使用iicslaverwrite指令更新IIC1的

发送缓存;

第4-18行为主程序;

第5行,IIC主初始化(IIC0)为16位寄存器地址模式,速度100KHz;

第6行,开启IIC主写中断程序,主写中断后执行int1程序;

第7行,IIC从初始化(IIC1),从地址为52,I0保存主机要读写的寄存器地址,D0

是读写字节长度,主读S0置位,主写S1置位;

第8行,寄存器D100保存1;

第9-17为while无限循环体;

第10行,输出寄存器D100的值;

第11行,主写指令,写入从地址52,从机寄存器地址为200,要写的数据为D100的

值(为1),写字节长度为4字节;

第12行,延时0.5S;

第13行,主读,从地址为52,读取从机寄存器地址为200,读取的数据保存到寄存

器D101,长度4字节;

第14行,延时0.5S;

第15行,输出寄存器D101的值,即读取到的值输出显示;

第16行,寄存器D100的值加1,继续循环,每循环一次D100寄存器加1;

下图30为串口助手输出信息,可以看出,主机写入从机的值,然后再读从机的值,

2个值是相同的,表明写入值是正确的。

图30         IIC主读写固定寄存器地址实验数据输出

        26---IIC主读任意寄存器地址实验:

                硬件需求:PC机,PCM模块一个,microUSB线;

                软件需求:PCM编译软件,电脑端串口调试助手;

                供电方式:USB线接PC机供电;

                连接电路:IIC主读写固定寄存器地址实验中的图29

在前面的实验25中IIC主读写固定寄存器地址实验中,IIC主读写都是固定的寄存器

地址(实验中是D200),所以IIC从可以在写中断程序中更新发送缓存。

本实验讲解IIC主如何读取从机任意寄存器地址,因为在主机读之前,从机不知道主

机要读取哪个寄存器,所以无法更新发送缓存。

本实验利用主机读时,从机会产生主读中断,我们在中断程序中更新发送缓存,当

主机下次读取的时候,就是读取本次更新的内容。注意2次读取之间的间隔时间至少要

50ms。本实验使用1S延时。

实验中主机依次读取D200--D208寄存器中的值,间隔时间1S,从机在读取中断中

更新发送缓存,主机在下次读取的时候就是读取的这次更新的值。所以主机第一次读取

的值是随机值。

实验程序如下:

1 intpro int0 //主读中断

2         mov 4 d0 //D0=4

3         iicslaverwrite di0 d0 //IIC从更新发送缓存,i0是地址(主写的时候,I0已经保存了

//要写的地址),D0=4是字节数

4 endint

5 main

6         iic 1 100000 //初始化主IIC,1表示16位寄存器地址,速度100KHz

7         intinit s0 int0 //开启主读中断

//初始化IIC从,本机从地址52(注意是7位地址),I0保存主机要读写的寄存器地

//址,D0 是读写字节长度,主读S0置位,主写S1置位

8         iicslaver 52 i0 d0 s0 s1

//D200-D208中依次保存1-9的值,供主机读取实验

9         mov 1 d200

10         mov 2 d201

11         mov 3 d202

12         mov 4 d203

13         mov 5 d204

14         mov 6 d205

15         mov 7 d206

16         mov 8 d207

17         mov 9 d208

18         mov 200 d99 //d99=200

19         mov 4 d98 //d98=4

20         while 1 //无限循环

//主读,从地址52,从机寄存器地址D99=200,读取的数据保存到寄存器D100,长

//度d98=4 //字节

21         ​​​​​​​        iicread 52 d99 d100 d98

22         ​​​​​​​        delay 1000 //延时1S

23         ​​​​​​​        prints "master read,data is %d\r\n" d100 //输出D100寄存器值

24         ​​​​​​​        inc d99 //D99加1

25         ​​​​​​​        if d99 > 208 //地址大于208

26         ​​​​​​​        ​​​​​​​        mov 200 d99 //从地址200开始读取

27         ​​​​​​​        endif

28         endwhile

29 endmain

程序中第1-4行为IIC主读中断程序,在中断程序中使用iicslaverwrite指令更新IIC从

(IIC1)的发送缓存;

第5-29行为主程序;

第6行,IIC主初始化(IIC0)为16位寄存器地址模式,速度100KHz;

第7行,开启IIC主读中断程序,主读中断后执行int0中断程序;

第8行,IIC从初始化(IIC1),从地址为52,I0保存主机要读写的寄存器地址,D0

是读写字节长度,主读S0置位,主写S1置位;

第9-17行,寄存器D200-D208中依次保存1-9的值,供主机读取实验;

第18,19行,寄存器D99保存200,D98保存4;

第20-28为while无限循环体;

第21行,主读指令,从地址52,从机寄存器地址为D99值为200,读出的数据保存

到寄存器D100起始的地址中,读字节长度为D98的值4字节;

第22,23行,延时1S后输出D100寄存器的值,即读取的值;

第24-27行,寄存器D99加1,并判断值,如果大于208,就保存200,程序继续循

环;

下图31为串口助手输出信息,可以看出,主机读从机寄存器D200-D208的值分别是

1-9,表明读取的值是正确的。

图31         IIC主读任意寄存器地址实验数据输出

PCM开发板模块实验指导--IIC主从实验相关推荐

  1. PCM开发板模块实验指导--有刷直流马达速度位置控制实验

    模块推荐:https://item.taobao.com/item.htm?ft=t&id=671629736762         44---有刷直流马达速度位置控制实验:          ...

  2. PCM开发板模块实验指导--有刷直流马达速度控制实验

    模块推荐:https://item.taobao.com/item.htm?ft=t&id=671629736762         43---有刷直流马达速度控制实验:            ...

  3. PCM开发板模块实验指导--触摸屏控制步进电机位置实验

    模块推荐:https://item.taobao.com/item.htm?ft=t&id=671629736762         65---触摸屏控制步进电机位置实验:           ...

  4. PCM开发板模块实验指导--触摸屏控制步进电机速度实验

    模块推荐:https://item.taobao.com/item.htm?ft=t&id=671629736762         64---触摸屏控制步进电机速度实验:           ...

  5. PCM开发板模块实验指导--SPI读写PSRAM64实验

    模块推荐:https://item.taobao.com/item.htm?ft=t&id=671629736762         32---SPI读写PSRAM64实验实验:        ...

  6. PCM开发板模块实验指导--有刷直流马达正反转实验

    模块推荐:https://item.taobao.com/item.htm?ft=t&id=671629736762         42---有刷直流马达正反转实验:             ...

  7. linux管道通信题目,操作系统实训(Linux)——习题解答、例题解析、实验指导-王红-实验实验7软中断及管道通信课案.ppt...

    操作系统实训(Linux)--习题解答.例题解析.实验指导-王红-实验实验7软中断及管道通信课案.ppt 实验7 软中断及管道通信 一.实验目的(1)掌握linux系统软中断通信的实现方法.(2)掌握 ...

  8. python编程图书批发商店的某本书的零售价是26.5_根据实验指导书,完成实验3的所有任务,使用 实验三(实验报告).docx 完成报告并提交。_学小易找答案...

    [多选题]期末结账后没有余额的账户是( ). [单选题]企业本期生产产品直接耗用原材料 3000 元,生产车间管理方面耗用原材料 2000 元,正确的会计分录是( TopSage ) [多选题]下列属 ...

  9. python编程图书批发商店的某本书的零售价是26.5_根据实验指导书,完成实验6的所有任务,使用 实验六(实验报告).docx 完成报告并提交。_学小易找答案...

    [简答题]完成课本P116,二简答题第5题,判断最大最小值,提交源代码 [简答题]从键盘输入 n(0 [其它]其采用实验1的报告模版,参考优秀实验报告的撰写格式,认真撰写实验报告. 作业提交必须以wo ...

最新文章

  1. xcode 编译静态库所要注意
  2. html表格点击为编辑框,el-table表格内双击或单击单元格编辑输入框、日期等
  3. React开发(101):样式处理
  4. Kibana Guide ( Kibana 向导 )
  5. ubuntu下打开.chm文件的方法(比如交换机参考手册)
  6. 使用iMazing将PDF文件导入至iOS设备
  7. sqlServer2012安装包下载
  8. 电脑端思维导图软件推荐
  9. 投稿英文国际会议论文经验总结
  10. 存储服务器和磁盘阵列有什么区别
  11. centos oracle libaio哪下载,在CentOS4.5上安装Oracle10g出现的libaio-0.3.96; found Not found问题求救...
  12. Asus Prime B360M-A+i5-8400+RX 570 黑苹果efi引导文件
  13. 11月最值得关注的26个热点
  14. 操作系统————应用题
  15. HbuilderX 小程序转快应用
  16. iOS 更改webView文字颜色丶文字大小丶背景色的方法
  17. Vertx学习一:这玩意是到底是个啥
  18. 烎!GopherChina 2020 讲师全阵容发布,集结国内外Go语言最强力量
  19. Mac电脑程序无响应怎么办?教你强制退出无响应程序
  20. windows11删除微软账户,使用本地账户登录

热门文章

  1. 四人麻将内购破解(电脑端和手机端对照)
  2. APICloud 开发app 之 工具:Sublime插件
  3. 计算机考研视频哪个机构的好,考研计算机专业视频课哪个好
  4. 小说阅读器开发(二)文本的排版与分页
  5. winscp,winscp如何连接服务器
  6. 东南大学网安学院研究生毕业,就业如何?
  7. Linux 基础命令入门 文件压缩
  8. python与统计分析课后答案_高校邦Python科学计算课后习题答案
  9. 阴沟里翻船之C函数memset
  10. 电磁鼓采样器含拓展 – Native Instruments Battery 4.1.6 WiN-MAC