首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 单元电路介绍 > 其它电路
MAX525示例程序
来源:本站整理  作者:佚名  2011-02-05 21:44:17



MAX525示例程序

#include<absaCC.h>                        //绝对地址访问函数
#include<math.h>                        //各种不同类型的数学函数
#include<reg51.h>
#define uchar unsigned char

sbit P1_0=P1^0;
sbit P1_1=P1^1;
sbit P1_2=P1^2;
sbit P1_3=P1^3;
sbit P1_4=P1^4;
sbit P1_5=P1^5;
sbit P1_6=P1^6;
sbit P1_7=P1^7;

/*MAX525完成两路DAC模拟电压输出,待转换的12位二进制数据分别存放在变量dacdac1,dacdac2中*/
void dac(unsigned long dacdata1,dacdata2)
{
  uchar a=0;
  unsigned long xdata dacdatrfer=0;
  P1_6=0;
  P1=P1&0xdf;                    //片选CS端置低电平
for(a=0;a<4;a++)
{
P1_6=0;
P1=P1&0xef;
dacdatrfer=dacdata1;
dacdatrfer=((dacdatrfer>>(3-a))&0x01)<<3;
P1=P1|dacdatrfer;
P1_6=1;
}
P1_6=0;
for(a=0;a<12;a++)
{
    P1_6=0;
P1=P1&0xef;
dacdatrfer=dacdata2;
dacdatrfer=((dacdatrfer>>(11-a))&0x01)<<3;
P1=P1|dacdatrfer;
P1_6=1;
}
P1_6=0;
P1=P1|0x20;
}

/*MAX1247的A/D转换,其中P1_1为片选端,P1_0为时钟输入端,P1_2为数据输入端,P1_3为数据输出*/
unsigned int j,i;
void adc()
{
  uchar adcadres;
  uchar adcadrestrfer;
  uchar strdata;
  uchar ldata[12];
  P1_1=0;
  P1_0=0;
  adcadres=0x9e;                //送控制命令字节
  for(i=0;i<8;i++)
{
adcadrestrfer=adcadres;
adcadrestrfer=(adcadrestrfer>>(7-i))&0x01;
P1_3= adcadrestrfer;                //右移一次,送到P1_2口
P1_0=0;                    //此处为送时钟信号
for(j=0;j<2;j++);                //空操作,延时
P1_0=1;
for(j=0;j<2;j++);                //空操作,延时
P1_0=0;                    //时钟信号周期等于执行4条指令的时间
}
P1_1=0;
for(j=0;j<2;j++);                    //空操作,延时
P1_1=0;
strdata=0;
P1_0=1;
for(j=0;j<12;j++)
{
    P1_0=0;
    P1_0=1;
    strdata=P1_2;                //读出12位串行数据
    strdata= strdata<<(11-j);
    ldata[j]=ldata[j]|strdata;
   }
strdata=ldata[j];
for(j=0;j<4;j++)
{
P1_0=0;
P1_0=1;
}
P1_1=1;
}

关键词:

·上一文章:ASCII码到BCD码转换子程序
·下一文章:TLC0831示例程序

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)
Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:275,832.00000 毫秒