資源簡介
高速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
評論
共有 條評論