[信息与通信]D12芯片及C51系统实验第一讲.pptVIP

[信息与通信]D12芯片及C51系统实验第一讲.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[信息与通信]D12芯片及C51系统实验第一讲

Pdiusbd12芯片及实验系统 Keil 与 ISP下载的使用 项目的建立与设置 在项目中添加文件 将生成的HEX文件下载到MCU中 D12芯片 系统原理图 D12和C51之间的数据读写 向D12写命令的函数 void D12WriteCommand(unsigned char command) { P3_5=1; P3_6=0; //将数据口P0设置成输出状态,因为51是准双向IO口,不需要切换 P0=command; P3_6=1; P0=0xFF; } //命令地址和数据地址 #define D12_COMMAND_ADD 1 #define D12_DATA_ADD 0 //PDIUSBD12芯片连接引脚 #define D12_DATA P0 #define D12_A0 P3_5 #define D12_WR P3_6 #define D12_RD P3_7 #define D12_INT P3_2 //选择命令或数据地址 #define D12SetCommandAddr() D12_A0=D12_COMMAND_ADD #define D12SetDataAddr() D12_A0=D12_DATA_ADD //WR控制 #define D12SetWr() D12_WR=1 #define D12ClrWr() D12_WR=0 //RD控制 #define D12SetRd() D12_RD=1 #define D12ClrRd() D12_RD=0 //获取中断引脚电平状态 #define D12GetIntPin() D12_INT //读写数据 #define D12GetData() D12_DATA #define D12SetData(Value) D12_DATA=(Value) //将数据口设置为输入状态,51单片机端口写1就是为输入状态 #define D12SetPortIn() D12_DATA=0xFF //将数据口设置为输出状态,由于51单片机是准双向IO口,所以不用切换,为空宏 #define D12SetPortOut() 修改后的函数形式 void D12WriteCommand(uint8 Command) { D12SetCommandAddr(); //设置为命令地址 D12ClrWr(); //WR置低 D12SetPortOut(); //将数据口设置为输出状态(注意这里为空宏,移植时可能有用) D12SetData(Command); //输出命令到数据口上 D12SetWr(); //WR置高 D12SetPortIn(); //将数据口设置为输入状态,以备后面输入使用 } 现在我们有了一个给D12写命令的函数,现在拿一个现成的命令来试一下,芯片都有个ID号,D12的读芯片ID号的命令代码是0xFD 我们可以用D12WritreCommand(0xFD)来给D12写一个读取芯片ID的命令,同样,先用宏定义#define Read_ID 0xFD来定义这个命令 现在调用指令为D12WriteCommand(Read_ID) D12收到这条命令,就会把芯片ID放在数据端口,现在写个一次读一个字节的函数,分两次把这个ID读出来 读取1字节数据的函数 unit8 D12ReadByte(void) { unit8 temp; D12SetDataAddr(); //P3_5=0 D12ClrRD(); //P3_7=0 temp=D12GetData(); //temp=P0取回D12 数据口的数据 D12SetRd(); //P3_7=1 return temp; } 读D12的ID 结合前面两个函数,读取ID的函数代码: unit16 D12ReadID(void) { unit16 id; D12WriteCommand(Read_ID); id=D12ReadByte(); //低八位 id|=((unit16)D12ReadByte())8; //高八位 return; } 编写一个读取D12的ID号的工程 首先,为了能显示更多程序运行的信息,我们需要编写MCU的串口驱动,主要包括下面几个函数 串口初始化 串口中断处理 向串口发送1字节的数据 向串口发送一个字符串 将短整形按16进制发送到串口 数据类型定义 在

文档评论(0)

ctuorn0371 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档