利用ADuC834构成二次仪表系统

技术分类: 工业电子  | 2008-03-25
来源:中电网

  下面是ADC中断服务子程序,其中ADC的中断号为6

  void adc_int(void) interrupt 6

  {

  EADC=0;
RDY0=0;
……
EADC=1;

  }

  3.2 用户闪速/电擦除数据寄存器的编程

  ADuC834的用户闪速/电擦除数据存储器的容量为4kB,利用这些EEPROM可以进行系统配置信息的存储。具体程序如下:

  sfr EDARL="0xe6";

  # define F_READ 0x01 /*读取页*/

  # define F_WRITE 0x02 /*写入页*/

  # define F_VERIFY 0x04 /*检测页*/

  # define F_ERASE 0x05 /*擦除页*/

  # define_F_ERASEALL 0x06 /*全部擦除*/

  float flash_read(unsigned char f_add) /*从地址f_add读取浮点数据*/

  {

float idata f_data=0;
float idata *ph;
uchar idata *puc;
pf=&f_data;
puc=(uchar idata *)pf;
EDARL=f_add;
ECON=0x01;
*puc=EDATA1;
++puc;
*puc=EDATA2;
++puc;
*puc=EDATA3;
++puc;
*puc=EDATA4;
return f_data;

  }

  unsigned char flash_write(unsigned char f_add,float f_data)

  /*写浮点数据f_data到地址f_add*/

  {

float idata *pf;
uchar idata *puc;
uchar idata temp;
pf=&f_data;
puc=(uchar idata *)pf;
EDARL=f-add;
ECON=0x05; /*首先擦除*/
EDARL=f_add;
EDATA1=*(puc++);
EDATA2=*(puc++);
EDATA3=*(puc++);
EDATA4=*(puc);
ECON=0x02; /*写数据*/
ECON=0x04; /*检测数据
temp=ECON;
if(temp= =0)return TRUE;
else return FLASE;

  }

  4 结论

  本文所描述的二次仪表的软硬件设计具有采集速度快、精度高、系统体积小的特点,特别适用于需要进行复杂运算且要求采集精度较高、体积较小的系统中。在实际的设计开发中,使用ADuC834可在很大程序上缩短开发时间并降低成本。另外,笔者设计的这款二次仪表在实际应用中也取得了很好的使用效果。

1】【2

浏览该文章的用户还看过...

  • 文 章

  • 论 坛

  • 博 客

  • 小 组

设计资源与分销

;