• 大小: 8KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-05-07
  • 语言: 其他
  • 标签: ADS1252  AD  

资源简介

高速AD ADS1252U 的程序 ,已经测试通过 ,在现场稳定使用

资源截图

代码片段和文件信息

#include “compiler_defs.h“
#include “C8051F520A_defs.h“           // SFR declarations
#include 
/*MCU:c8051f530a:RAM 256;ROM:8K;12位AD、DA
            报文(自激发送 >1K/s):0xaa(1字节)+数据位(3字节)+采集数据量(2字节)0xbb(1字节)+xor*/

#define uchar unsigned char
#define uint  unsigned int
#define ulong unsigned long

#define  SYSCLK       12250000    //时钟频率12.25M
#define  BAUDRATE     115200      // 波特率

#define  double_al    

#define ERROR_DATA  0
#define  T_count 7
sbit CPU_CLK=P0^1;
sbit SCLK=P1^6;
sbit DOUT=P1^5;

sbit AD_OK=P0^0;
sbit MAX_485=P0^3;

ulong AVRAGE_L_AD_24bits;
ulong L_AD_24bits;
uchar send_count;     // 发送数据计数
bit   send_OK=0;     //发送完标志位
int   dat_count;      //连续收到同一个数的次数
char  avrge_dat_count;
unsigned int  ad_data_count;

uchar idata C_out_buff[T_count+1]_at_ 0xd5;

long avrg_buff[8];
long avrg_buff1[9];
//****************************************function define******************************************//
void PCA_Init(void);        //PCA看门狗
void Oscillator_Init (void);//内部晶振初始化
void Port_Init (void);      // 端口初始化
void UART0_Init (void);     //  串口初始化
void _nop(uint count);      //   
//void send_datas(void);      //  数据发送    为提高发送速度由中断发送代替2012.5.14
unsigned long readADS1252(void);//AD读取
//*************************************************530初始化****************************************************//
void PCA_Init(void)
{
   PCA0CN =   0x40;                    // PCA counter enable
   PCA0MD &= ~0x40 ;                   // Watchdog timer disabled
   PCA0MD &=  0xF1;                    // Timebase selected - System clock / 12
   PCA0CPL2 = 0xFF;                    // Offset value
}
void Oscillator_Init (void)
{
   OSCICN = 0xc6;                      // Set the internal oscillator to12m
   while(!(OSCICN&0x10));    
}
void Port_Init (void)
{             
    P0SKIP    = 0x01;                //跳过VREF
    P0SKIP   |= 0x30;                //跳过TX;RX
REF0CN    =0x13;                 //vref2.2v
P0MDOUT |= 0x02;  
    XBR0      = 0x01;                //使能UART0
    XBR1      = 0x40;                 //交叉译码开关使能 
}
void UART0_Init (void)
{
   SCON0 = 0x10;                       // SCON0: 8-bit variable bit rate
                                       //        level of STOP bit is ignored
                                       //        RX enabled
                                       //        ninth bits are zeros
                                       //        clear RI0 and TI0 bits
   if (SYSCLK/BAUDRATE/2/256 < 1)
    {
      TH1 = -(SYSCLK/BAUDRATE/2);
      CKCON &= ~0x0B;                  // T1M = 1; SCA1:0 = xx
      CKCON |=  0x08;
    } 
   else if (SYSCLK/BAUDRATE/2/256 < 4)
    {
      TH1 = -(SYSCLK/BAUDRATE/2/4);
      CKCON &= ~0x0B;                  // T1M = 0; SCA1:0 = 01
      CKCON |=  0x01;
    }
    else if (SYSCLK/BAUDRATE/2/256 < 12) 
   {
      TH1 = -(SYSCLK/BAUDRATE/2/12);
      CKCON &= ~0x0B;                  // T1M = 0; SCA1:0

评论

共有 条评论