您当前的位置:五五电子网电子知识电子学习基础知识电脑-单片机-自动控制用C语言编程对D/A转换器进行编程 正文
用C语言编程对D/A转换器进行编程

用C语言编程对D/A转换器进行编程

点击数:7295 次   录入时间:03-04 11:55:02   整理:http://www.55dianzi.com   电脑-单片机-自动控制

  用C语言编程,要看一下C语言编译器对存储器的处理方法。我们在前面定义变量的时候,省略了存储种类和存储器类型。存储种类有四种:自动(auto)、外部(extern)、静态(statIC)和寄存器(register),省略时默认为自动。
  
  同时KEILC51把存储器分为六种类型:
  
  DATA——直接寻址的片内数据存储器(128B),访问速度最快
  
  BDATA——可位寻址的片内数据存储器(16B)。允许位与字节混合访问

  IDArA——间接访问的片内数据存储器(2568),允许访问全部片内地址
  
  PDATA——分页寻址的片外数据存储器(256B),用MOVX@Ri指令访问
  
  XDATA——片外数据存储器(64KB),用MOVX@DPTR指令访问
  
  CODE——程序存储器(64KB),用MOVC@A+DPTR指令访问
  
  如果定义变量时能准确地说明其存储器类型,就能够在单片机系统内准确定位。如果省略,则按编译模式SMALL(片内数据存储器)、COMPACT(分页寻址的片外数据存储器)或LARGE(片外数据存储器)所规定的默认存储器类型去指定变量的存储区域。

  在C语言程序中可以采用扩展关键字“一aI-”来制定存储器空间的绝对地址,也可以用指针来定义存储器的绝对地址。我们现在采用预定义宏来指定绝对地址。在C51编译器的运行库中提供了一套预定义宏,这些宏定义包含在头文件“ABSACCH”中,比如XBYTE(地址]就是访问XDATA区或1/O端口的。在C51源程序中可以利用这些宏来指定变量的绝对地址,比如定义一个D/A转换器端口地址:
  
  #define DAC0832 XBYTE [0x7FFF]
  
  那么程序中所有出现DAC0832的地方,就是对地址为0x7FFF的1/0端口进行访问。这是一个输出固定电压的程序,我们定义一个D/A转换接口地址,每向该地址写入一个数据,即可完成一次D/A转换。
  
  #inclUde <reg51.h>
  
  #include <ABSACC.H>
  
  #define DAC0832 XBYTE [Ox7fff] //
  
  定义DAC0832端口地址

  还可以用延时程序改变方波的延时时间,这样就可以控制机器战士以各种速度做各种动作,机器人的效果就出来了。




本文关键字:转换器  C语言  电脑-单片机-自动控制电子学习 - 基础知识 - 电脑-单片机-自动控制