资源简介
高速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
相关资源
- vivado2015.4 license
- 使用Qt实现的阴影映射源代码
- 学生信息管理及登录系统
- diyUpload.zip
- loadrunner11补丁全集
- CAD设计图纸模板
- HP Application Lifecycle Management 11.50 + SP
- Unity内置着色器源码 builtin_shaders-5.6
- Unity内置着色器源码 builtin_shaders-201
- 利用联合对角化技术进行信号盲分离
- Spreadsheet在线Excel,纯前端js
- AD转换MCP9700温度传感器
- Shader编程教程 完整
- OLED12864显示屏,12位ADC,按键中断,
- toad for db2 License key 注册 破解
- upload.rar
- Delphi使用ADO读Excel的数据,比OLE快n倍
- LoadRunner_Winsocket协议知识总结(修正版
- LoadRunner性能测试实战.txt
- MyMemory for Trados 2019
- hadoop伪分布式搭建centos6.5+hadoop2.7
- detours x64 lib header
- pgen CAD转3DEC
- 使用dos指令配合adb快速导出手机文件
- FIFO代码以及对应的testbench
- PCI1716L多通道AD采集程序
- Unity 3D ShaderLab开发实战详解
- Loadrunner性能测试视频教程.txt
- libpthread.so
- CAPL编写的基于UDS的bootloader
评论
共有 条评论