分享

AD7714.rar main1.c

 weikong66 2012-08-05
  1. #include <reg51.h>    
  2. #include <stdio.h>    
  3. #include<stdlib.h>    
  4. //#include"uart.c"    
  5. #define uchar unsigned char    
  6. #define uint  unsigned int    
  7. #define WL 1    
  8. #define h_filter 0x0cf    
  9. #define l_filter 0xa0    
  10. #define mode 0x20    
  11.    
  12. uchar data ad_data[3];   
  13. //uint  data  ad_data[3];    
  14. uchar data  sample[16][3];   
  15. uchar bdata temp;   
  16. sbit  ad_cs   = P1^1;   
  17. sbit  ad_out  = P1^3;   
  18. sbit  ad_in   = P1^4;   
  19. sbit  ad_sclk = P1^0;   
  20. sbit  ad_dr   = P1^2;   
  21.    
  22. sbit rest    = P1^5;   
  23.    
  24. sbit MSB = temp^7;   
  25. sbit LSB = temp^0;   
  26.    
  27. void write_reg ( void )   
  28. {   
  29.     uchar i;   
  30.     ad_cs = 1;   
  31.     ad_sclk = 0;   
  32.     ad_cs = 0;   
  33.     for (i=0;i<8;i++)   
  34.     {   
  35.         ad_in = MSB;   
  36.         ad_sclk = 1;   
  37.         ad_sclk = 0;   
  38.         temp<=1;   
  39.     }   
  40.     ad_cs = 1;   
  41. }   
  42. void read_reg ( void )   
  43. {   
  44.     uchar i,j;   
  45.     temp = 0;   
  46.     ad_cs = 1;   
  47.     ad_sclk = 0;   
  48.     ad_cs = 0;   
  49.     for (i=0;i<(2+WL);i++)   
  50.     {   
  51.         for( j=0;j<8;j++ )   
  52.         {   
  53.             temp<=1;   
  54.             ad_sclk = 1;   
  55.             ad_sclk = 0;   
  56.             LSB = ad_out;   
  57.         }   
  58.         ad_data[i] = temp;   
  59.     }   
  60. }   
  61. void init_ad ( void )   
  62. {   
  63.     temp = 0x26;   
  64.     write_reg ();/*写通信寄存器,下次写滤波高*/   
  65.     temp = h_filter;   
  66.     write_reg ();/*写滤波高寄存器*/   
  67.     temp = 0x36;   
  68.     write_reg ();/*写通信寄存器,下次写滤波低*/   
  69.     temp = l_filter;   
  70.     write_reg ();/*写滤波低寄存器*/   
  71.     temp = 0x16;   
  72.     write_reg ();/*写通信寄存器,下次写模式*/   
  73.     temp = mode;   
  74.     write_reg ();/*写模式寄存器*/   
  75. }   
  76. void rst_ad ( void )   
  77. {   
  78.     uchar i;   
  79.     ad_cs = 1;   
  80.     ad_sclk = 0;   
  81.     ad_cs = 0;   
  82.     ad_in = 1;   
  83.     for ( i=0;i<40;i++ )   
  84.     {   
  85.         ad_sclk = 1;   
  86.         ad_sclk = 0;   
  87.     }   
  88. }   
  89.    
  90. main()   
  91. {   
  92.     uchar x;   
  93.    /* TMOD=0x22; //定时器1为工作模式2(8位自动重装),0为模式2(8位远刈  
  94.     PCON=00;  
  95.     TR0=0; //在发送或接收才开始使用  
  96.     TF0=0;  
  97.     TH0=(256-96); //9600bps 就是 1000000/9600=104.167微秒 执行的timer是104.167*11.0592/12= 96  
  98.     TL0=TH0;  
  99.     ET0=1;  
  100.   //  EA=1;  
  101.   EA=0;*/   
  102.   /*TMOD=0x21;  
  103.   TH1=0xE8;  
  104.   SCON=0x50;  
  105.   TCON=0x40;  
  106.  // TR0=1;  
  107.   ES=1;  
  108.   EA=1;*/   
  109.  rst_ad ();   
  110.  init_ad ();   
  111. for(;;)   
  112.    {   
  113.      rst_ad ();   
  114.     //   rest=0;    
  115.       // for(x=0;x<20;x++);    
  116.      //  rest=1;    
  117.         init_ad ();   
  118.    //  while ( ad_dr );    
  119.         temp = 0x5e;   
  120.         write_reg ();   
  121.         while ( ad_dr );   
  122.        read_reg ();   
  123.        /* EA=1;  
  124.         PSendChar(ad_data[0]);  
  125.         PSendChar(ad_data[1]);  
  126.         PSendChar(ad_data[2]);  
  127.         EA=0;*/   
  128.     //  printf("ad_data1=%u\n",ad_data[0]);    
  129.    //     printf("ad_data2=%u\n",ad_data[1]);    
  130.     //  printf("ad_data3=%u\n",ad_data[2]);    
  131.         for(x=0;x<20;x++);   
  132.    }   
  133. }   

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多