/*********************************************************************************************************************************************************

*程序说明:本程序使用STC12C5A60S2 ADC转换功能,ADC采样使用查询方式

*芯片供电:5V

*时间:2013/3/27

*采样通道:P1^0

*********************************************************************************************************************************************************/

#include "STC12C5A60S2.h"

#include "stdio.h"

#include "intrins.h"

#include "math.h"

#define uint unsigned int

#define uchar unsigned char

/*******************************************************************************************************************************************************************

*函数功能:获取ADC采样值

*时间:2013、3、27

*相关寄存器讲解:                                                7                    6              5                4                      3                      2             1                  0           Reset Vale

*:ADC_CONTR://A/D 转换控制寄存器 ADC_POWER SPEED1 SPEED0   ADC_FLAG   ADC_START  CHS2     CHS1        CHS0       0000,0000

* ADC_RES    //A/D 转换结果高8位               ADCV.9       ADCV.8    ADCV.7      ADCV.6           ADCV.5          ADCV.4   ADCV.3     ADCV.2    0000,0000

*ADC_RESL    //A/D 转换结果低2位                                                                                                                                          ADCV.1    ADCV.0     0000,0000

*寄存器位控制讲解:

ADC_POWER:ADC电源

ADC_START:ADC转换启动控制位 设置为1时开始转换 转换结束后为0

ADC_FLAG:ADC转换结束标志位 转换完成后 ADC_FLAG=1 要由软件一定要清0

SPEED1|SPEED0:模数转换器速度控制位           CHS2/CHS1CHS0:模拟输入通道选择

------------------------------------------------                -------------------------------------------------

|SPEED1 | SPEED0   |  转换时间           |              | CHS2 | CHS1 | CHS0    | 模拟输入通道|

|   1         |       1         |  90个时钟周期   |               |  0       |  0       |   0   |       |   P1^0      |

|  1          |       0         |  180个时钟周期 |               |  0       |  0       |   1   |       |   P1^1      |

|  0          |       1         | 360个时钟周期  |               |  0       |  1       |   0   |       |   P1^2      |

|  0          |       0         |  540个时钟周期 |               |  0       |  1       |   1   |       |   P1^3      |

-------------------------------------------------               |  1       |  0       |   0   |       |   P1^4      |

|  1       |  0       |   1   |       |   P1^5      |

|  1       |  1       |   0   |       |   P1^6      |

|  1       |  1       |   1   |       |   P1^7      |

----------------------------------------------

************************************************************************************************************************************************************************/

uint ADC_Get(uchar Channel)

{

ADC_CONTR=0x88|Channel;

_nop_(); _nop_(); _nop_(); _nop_();

while(!(ADC_CONTR&0x10));    //等待转换完成

ADC_CONTR&=0xe7;      //关闭AD转换,ADC_FLAG位由软件清0

return(ADC_RES*4+ADC_RESL);   //返回AD转换完成的10位数据(16进制)

}

/******************************************************************

*函数功能:将ADC采样值转换为10进制数据

*时间:2013、3、27

******************************************************************/

float ADC_Value(uchar Channel)

{

float AD_Value;

uint i;

for(i=0;i<10;i++) //采样10次取平均值

AD_Value+=ADC_Get(Channel); //转换100次求平均值(提高精度)

AD_Value/=10;

AD_Value=(AD_Value*5)/1024;//ADRJ=0,取10位转换结果ADC_RES+ADC_RESL=1024*Vin/Vcc

return AD_Value;

}

/***************************************************************

*Funtion Name:delay

*Time:2013/3/27

Author:zhuhao

***************************************************************/

void delay(unsigned int a) //延时约1ms

{

unsigned int i;

while (--a!=0)

for(i=600;i>0;i--);   //1T单片机i=600,若是12T单片机i=125

}

/***************************************************************

*Funtion Name:USART_Init

*Time:2013/3/27

Author:zhuhao

***************************************************************/

void USART_Init()

{

TMOD=0x20;

TH1=0xfd;

TL1=0xfd; //设置9600波特率

SCON=0x50; //串口方式1,允许接收

TR1=1;

}

/**********************************************************************

*函数功能:ADC初始化配置

*时间:2013、3、27

*寄存器讲解:              7      6      5      4      3       2      1      0        Reset Value

P1ASF:选择模拟功能A/D端口  P1ASF  P1ASF  P1ASF  P1ASF  P1ASF   P1ASF  P1ASF  P1ASF    0000,0000

P1ASF相应位置1则P1口的相应位作为模拟功能A/D使用

7    6      5        4     3     2       1    0      Reset Value

AUXR1:       PCA_P4  SPI_P4  S2_P4  GF2   ADRJ         DPS     0000,0000

其中ADRJ位控制A/D转换结果寄存器(ADC_RES,ADC_RESL)的数据格式调整

ADRJ=0:10位A/D转换结果的高8位存放在ADC_RES中,低2位存放在ADC_RESL的低2位中

ADRJ=1:10位A/D转换结果的高8位存放在ADC_RESL中,低2位存放在ADC_RES的低2位中

***********************************************************************/

void ADC_Init()

{

P1ASF=0x01;//ADC I/O选择 P1^0;

AUXR1=0x00;//ADRJ=0

ADC_RES=0;//10位ADC采样结果的高8位存放在ADC_RES中,低二位存放在ADC_RES_L的低二位中

ADC_RESL=0;

ADC_CONTR=0x80;//开启ADC电源

delay(2);//必要的延时

}

void main()

{

USART_Init();

ADC_Init();

while(1)

{

TI=1;

printf("转化:%.2f V\n",ADC_Value(0));//将ADC采样的实际电压值发送给串口助手

TI=0;

}

}

/*******************************************************************************************************************************************************************

*                                   STC12C5A60S2.h 文件

******************************************************************************************************************************************************************/

//--------------------------------------------------------------------------------

//新一代 1T 8051系列 单片机内核特殊功能寄存器 C51 Core SFRs

//                                          7     6      5       4     3    2    1     0   Reset Value

sfr ACC  = 0xE0; //Accumulator                                                              0000,0000

sfr B    = 0xF0; //B Register                                                               0000,0000

sfr PSW  = 0xD0; //Program Status Word      CY    AC    F0    RS1   RS0    OV    F1    P    0000,0000

//-----------------------------------

sbit CY  = PSW^7;

sbit AC  = PSW^6;

sbit F0  = PSW^5;

sbit RS1 = PSW^4;

sbit RS0 = PSW^3;

sbit OV  = PSW^2;

sbit P   = PSW^0;

//-----------------------------------

sfr SP   = 0x81; //Stack Pointer                                                            0000,0111

sfr DPL  = 0x82; //Data Pointer Low Byte                                                    0000,0000

sfr DPH  = 0x83; //Data Pointer High Byte                                                   0000,0000

//--------------------------------------------------------------------------------

//新一代 1T 8051系列 单片机系统管理特殊功能寄存器

//                                          7     6      5    4     3      2    1     0     Reset Value

sfr PCON   = 0x87; //Power Control        SMOD  SMOD0  LVDF  POF   GF1    GF0   PD   IDL    0001,0000

//                                        7     6       5      4     3      2      1      0   Reset Value

sfr AUXR  = 0x8E; //Auxiliary Register  T0x12 T1x12 UART_M0x6 BRTR S2SMOD BRTx12 EXTRAM S1BRS  0000,0000

//-----------------------------------

sfr AUXR1 = 0xA2; //Auxiliary Register 1  -  PCA_P4  SPI_P4  S2_P4  GF2    ADRJ   -    DPS  0000,0000

/*

PCA_P4:

0, 缺省PCA 在P1 口

1,PCA/PWM 从P1 口切换到P4 口: ECI 从P1.2 切换到P4.1 口,

PCA0/PWM0 从P1.3 切换到P4.2 口

PCA1/PWM1 从P1.4 切换到P4.3 口

SPI_P4:

0, 缺省SPI 在P1 口

1,SPI 从P1 口切换到P4 口: SPICLK 从P1.7 切换到P4.3 口

MISO 从P1.6 切换到P4.2 口

MOSI 从P1.5 切换到P4.1 口

SS 从P1.4 切换到P4.0 口

S2_P4:

0, 缺省UART2 在P1 口

1,UART2 从P1 口切换到P4 口: TxD2 从P1.3 切换到P4.3 口

RxD2 从P1.2 切换到P4.2 口

GF2: 通用标志位

ADRJ:

0, 10 位A/D 转换结果的高8 位放在ADC_RES 寄存器, 低2 位放在ADC_RESL 寄存器

1,10 位A/D 转换结果的最高2 位放在ADC_RES 寄存器的低2 位, 低8 位放在ADC_RESL 寄存器

DPS: 0, 使用缺省数据指针DPTR0

1,使用另一个数据指针DPTR1

*/

//-----------------------------------

sfr WAKE_CLKO = 0x8F; //附加的 SFR WAK1_CLKO

/*

7            6          5          4          3       2       1      0         Reset Value

PCAWAKEUP  RXD_PIN_IE  T1_PIN_IE  T0_PIN_IE  LVD_WAKE    _    T1CLKO  T0CLKO      0000,0000B

b7 - PCAWAKEUP : PCA 中断可唤醒 powerdown。

b6 - RXD_PIN_IE : 当 P3.0(RXD) 下降沿置位 RI 时可唤醒 powerdown(必须打开相应中断)。

b5 - T1_PIN_IE : 当 T1 脚下降沿置位 T1 中断标志时可唤醒 powerdown(必须打开相应中断)。

b4 - T0_PIN_IE : 当 T0 脚下降沿置位 T0 中断标志时可唤醒 powerdown(必须打开相应中断)。

b3 - LVD_WAKE : 当 CMPIN 脚低电平置位 LVD 中断标志时可唤醒 powerdown(必须打开相应中断)。

b2 -

b1 - T1CLKO : 允许 T1CKO(P3.5) 脚输出 T1 溢出脉冲,Fck1 = 1/2 T1 溢出率

b0 - T0CLKO : 允许 T0CKO(P3.4) 脚输出 T0 溢出脉冲,Fck0 = 1/2 T1 溢出率

*/

//-----------------------------------

sfr CLK_DIV = 0x97; //Clock Divder          -     -      -       -     -  CLKS2 CLKS1 CLKS0 xxxx,x000

//-----------------------------------

sfr BUS_SPEED = 0xA1; //Stretch register      -     -    ALES1   ALES0   -   RWS2  RWS1  RWS0 xx10,x011

/*

ALES1 and ALES0:

00 : The P0 address setup time and hold time to ALE negative edge is one clock cycle

01 : The P0 address setup time and hold time to ALE negative edge is two clock cycles.

10 : The P0 address setup time and hold time to ALE negative edge is three clock cycles. (default)

11 : The P0 address setup time and hold time to ALE negative edge is four clock cycles.

RWS2,RWS1,RWS0:

000 : The MOVX read/write pulse is 1 clock cycle.

001 : The MOVX read/write pulse is 2 clock cycles.

010 : The MOVX read/write pulse is 3 clock cycles.

011 : The MOVX read/write pulse is 4 clock cycles. (default)

100 : The MOVX read/write pulse is 5 clock cycles.

101 : The MOVX read/write pulse is 6 clock cycles.

110 : The MOVX read/write pulse is 7 clock cycles.

111 : The MOVX read/write pulse is 8 clock cycles.

*/

//--------------------------------------------------------------------------------

//新一代 1T 8051系列 单片机中断特殊功能寄存器

//有的中断控制、中断标志位散布在其它特殊功能寄存器中,这些位在位地址中定义

//其中有的位无位寻址能力,请参阅 新一代 1T 8051系列 单片机中文指南

//                                           7     6     5    4     3    2    1    0   Reset Value

sfr IE      = 0xA8;  //中断控制寄存器        EA  ELVD  EADC   ES   ET1  EX1  ET0  EX0  0x00,0000

//-----------------------

sbit EA       = IE^7;

sbit ELVD     = IE^6; //低压监测中断允许位

sbit EADC     = IE^5; //ADC 中断允许位

sbit ES       = IE^4;

sbit ET1      = IE^3;

sbit EX1      = IE^2;

sbit ET0      = IE^1;

sbit EX0      = IE^0;

//-----------------------

sfr IE2       = 0xAF;  //Auxiliary Interrupt   -     -     -    -     -    -  ESPI  ES2  0000,0000B

//-----------------------

//                                          7     6     5    4    3    2    1    0    Reset Value

sfr IP      = 0xB8; //中断优先级低位      PPCA  PLVD  PADC  PS   PT1  PX1  PT0  PX0   0000,0000

//--------

sbit PPCA     = IP^7;  //PCA 模块中断优先级

sbit PLVD     = IP^6;  //低压监测中断优先级

sbit PADC     = IP^5;  //ADC 中断优先级

sbit PS       = IP^4;

sbit PT1      = IP^3;

sbit PX1      = IP^2;

sbit PT0      = IP^1;

sbit PX0      = IP^0;

//-----------------------

//                                         7      6      5     4     3     2     1     0    Reset Value

sfr IPH   = 0xB7; //中断优先级高位       PPCAH  PLVDH  PADCH  PSH  PT1H  PX1H  PT0H  PX0H   0000,0000

sfr IP2   = 0xB5; //                       -      -      -     -     -     -   PSPI   PS2   xxxx,xx00

sfr IPH2  = 0xB6; //                       -      -      -     -     -     -   PSPIH  PS2H  xxxx,xx00

//-----------------------

//新一代 1T 8051系列 单片机I/O 口特殊功能寄存器

//                                      7     6     5     4     3     2     1     0         Reset Value

sfr P0   = 0x80; //8 bitPort0          P0.7  P0.6  P0.5  P0.4  P0.3  P0.2  P0.1  P0.0       1111,1111

sfr P0M0 = 0x94; //                                                                         0000,0000

sfr P0M1 = 0x93; //                                                                         0000,0000

sfr P1   = 0x90; //8 bitPort1          P1.7  P1.6  P1.5  P1.4  P1.3  P1.2  P1.1  P1.0       1111,1111

sfr P1M0 = 0x92; //                                                                         0000,0000

sfr P1M1 = 0x91; //                                                                         0000,0000

sfr P1ASF = 0x9D; //P1 analog special function

sfr P2   = 0xA0; //8 bitPort2          P2.7  P2.6  P2.5  P2.4  P2.3  P2.2  P2.1  P2.0       1111,1111

sfr P2M0 = 0x96; //                                                                         0000,0000

sfr P2M1 = 0x95; //                                                                         0000,0000

sfr P3   = 0xB0; //8 bitPort3          P3.7  P3.6  P3.5  P3.4  P3.3  P3.2  P3.1  P3.0       1111,1111

sfr P3M0 = 0xB2; //                                                                         0000,0000

sfr P3M1 = 0xB1; //                                                                         0000,0000

sfr P4   = 0xC0; //8 bitPort4          P4.7  P4.6  P4.5  P4.4  P4.3  P4.2  P4.1  P4.0       1111,1111

sfr P4M0 = 0xB4; //                                                                         0000,0000

sfr P4M1 = 0xB3; //                                                                         0000,0000

//                                      7      6         5         4      3     2     1     0     Reset Value

sfr P4SW = 0xBB; //Port-4 switch    -   LVD_P4.6  ALE_P4.5  NA_P4.4   -     -     -     -    x000,xxxx

sfr P5   = 0xC8; //8 bitPort5           -     -       -      -    P5.3  P5.2  P5.1  P5.0    xxxx,1111

sfr P5M0 = 0xCA; //                                                                         0000,0000

sfr P5M1 = 0xC9; //                                                                         0000,0000

//--------------------------------------------------------------------------------

//新一代 1T 8051系列 单片机定时器特殊功能寄存器

//                                          7     6     5     4     3     2     1     0     Reset Value

sfr TCON = 0x88; //T0/T1 Control           TF1   TR1   TF0   TR0   IE1   IT1   IE0   IT0    0000,0000

//-----------------------------------

sbit TF1 = TCON^7;

sbit TR1 = TCON^6;

sbit TF0 = TCON^5;

sbit TR0 = TCON^4;

sbit IE1 = TCON^3;

sbit IT1 = TCON^2;

sbit IE0 = TCON^1;

sbit IT0 = TCON^0;

//-----------------------------------

sfr TMOD = 0x89; //T0/T1 Modes             GATE1 C/T1  M1_1  M1_0  GATE0 C/T0  M0_1  M0_0   0000,0000

sfr TL0  = 0x8A; //T0 Low Byte                                                              0000,0000

sfr TH0  = 0x8C; //T0 High Byte                                                             0000,0000

sfr TL1  = 0x8B; //T1 Low Byte                                                              0000,0000

sfr TH1  = 0x8D; //T1 High Byte                                                             0000,0000

//--------------------------------------------------------------------------------

//新一代 1T 8051系列 单片机串行口特殊功能寄存器

//                                          7     6     5     4     3     2     1     0     Reset Value

sfr SCON = 0x98; //Serial Control         SM0/FE SM1   SM2   REN   TB8   RB8    TI    RI    0000,0000

//-----------------------------------

sbit SM0 = SCON^7;  //SM0/FE

sbit SM1 = SCON^6;

sbit SM2 = SCON^5;

sbit REN = SCON^4;

sbit TB8 = SCON^3;

sbit RB8 = SCON^2;

sbit TI  = SCON^1;

sbit RI  = SCON^0;

//-----------------------------------

sfr SBUF = 0x99; //Serial Data Buffer                                                     xxxx,xxxx

sfr SADEN = 0xB9; //Slave Address Mask                                                    0000,0000

sfr SADDR = 0xA9; //Slave Address                                                         0000,0000

//-----------------------------------

//                                7      6      5      4      3      2     1     0        Reset Value

sfr S2CON = 0x9A; //S2 Control  S2SM0  S2SM1  S2SM2  S2REN  S2TB8  S2RB8  S2TI  S2RI      00000000B

sfr S2BUF = 0x9B; //S2 Serial Buffer                                                      xxxx,xxxx

sfr BRT = 0x9C; //S2 Baud-Rate Timer                                                    0000,0000

//--------------------------------------------------------------------------------

//新一代 1T 8051系列 单片机看门狗定时器特殊功能寄存器

sfr WDT_CONTR = 0xC1; //Watch-Dog-Timer Control register

//                                      7     6     5      4       3      2   1   0     Reset Value

//                                  WDT_FLAG  -  EN_WDT CLR_WDT IDLE_WDT PS2 PS1 PS0    xx00,0000

//-----------------------

//--------------------------------------------------------------------------------

//新一代 1T 8051系列 单片机PCA/PWM 特殊功能寄存器

//                                         7     6     5     4     3     2     1     0     Reset Value

sfr CCON   = 0xD8;   //PCA 控制寄存器。    CF    CR    -     -     -     -    CCF1  CCF0   00xx,xx00

//-----------------------

sbit CF     = CCON^7; //PCA计数器溢出标志,由硬件或软件置位,必须由软件清0。

sbit CR     = CCON^6; //1:允许 PCA 计数器计数, 必须由软件清0。

//-

//-

sbit CCF1   = CCON^1; //PCA 模块1 中断标志, 由硬件置位, 必须由软件清0。

sbit CCF0   = CCON^0; //PCA 模块0 中断标志, 由硬件置位, 必须由软件清0。

//-----------------------

sfr CMOD  = 0xD9; //PCA 工作模式寄存器。   CIDL   -     -     -   CPS2   CPS1  CPS0  ECF   0xxx,x000

/*

CIDL: idle 状态时 PCA 计数器是否继续计数, 0: 继续计数, 1: 停止计数。

CPS2: PCA 计数器脉冲源选择位 2。

CPS1: PCA 计数器脉冲源选择位 1。

CPS0: PCA 计数器脉冲源选择位 0。

CPS2   CPS1   CPS0

0      0      0    系统时钟频率 fosc/12。

0      0      1    系统时钟频率 fosc/2。

0      1      0    Timer0 溢出。

0      1      1    由 ECI/P3.4 脚输入的外部时钟,最大 fosc/2。

1      0      0    系统时钟频率,  Fosc/1

1      0      1    系统时钟频率/4,Fosc/4

1      1      0    系统时钟频率/6,Fosc/6

1      1      1    系统时钟频率/8,Fosc/8

ECF: PCA计数器溢出中断允许位, 1--允许 CF(CCON.7) 产生中断。

*/

//-----------------------

sfr CL     = 0xE9; //PCA 计数器低位                                                        0000,0000

sfr CH     = 0xF9; //PCA 计数器高位                                                        0000,0000

//-----------------------

//                                         7     6      5      4     3     2     1     0     Reset Value

sfr CCAPM0 = 0xDA; //PCA 模块0 PWM 寄存器  -   ECOM0  CAPP0  CAPN0  MAT0  TOG0  PWM0  ECCF0   x000,0000

sfr CCAPM1 = 0xDB; //PCA 模块1 PWM 寄存器  -   ECOM1  CAPP1  CAPN1  MAT1  TOG1  PWM1  ECCF1   x000,0000

//ECOMn = 1:允许比较功能。

//CAPPn = 1:允许上升沿触发捕捉功能。

//CAPNn = 1:允许下降沿触发捕捉功能。

//MATn  = 1:当匹配情况发生时, 允许 CCON 中的 CCFn 置位。

//TOGn  = 1:当匹配情况发生时, CEXn 将翻转。

//PWMn  = 1:将 CEXn 设置为 PWM 输出。

//ECCFn = 1:允许 CCON 中的 CCFn 触发中断。

//ECOMn  CAPPn  CAPNn  MATn  TOGn  PWMn  ECCFn

//  0      0      0     0     0     0     0   0x00   未启用任何功能。

//  x      1      0     0     0     0     x   0x21   16位CEXn上升沿触发捕捉功能。

//  x      0      1     0     0     0     x   0x11   16位CEXn下降沿触发捕捉功能。

//  x      1      1     0     0     0     x   0x31   16位CEXn边沿(上、下沿)触发捕捉功能。

//  1      0      0     1     0     0     x   0x49   16位软件定时器。

//  1      0      0     1     1     0     x   0x4d   16位高速脉冲输出。

//  1      0      0     0     0     1     0   0x42   8位 PWM。

//ECOMn  CAPPn  CAPNn  MATn  TOGn  PWMn  ECCFn

//  0      0      0     0     0     0     0   0x00   无此操作

//  1      0      0     0     0     1     0   0x42   普通8位PWM, 无中断

//  1      1      0     0     0     1     1   0x63   PWM输出由低变高可产生中断

//  1      0      1     0     0     1     1   0x53   PWM输出由高变低可产生中断

//  1      1      1     0     0     1     1   0x73   PWM输出由低变高或由高变低都可产生中断

//-----------------------

sfr CCAP0L = 0xEA; //PCA 模块 0 的捕捉/比较寄存器低 8 位。                                    0000,0000

sfr CCAP0H = 0xFA; //PCA 模块 0 的捕捉/比较寄存器高 8 位。                                    0000,0000

sfr CCAP1L = 0xEB; //PCA 模块 1 的捕捉/比较寄存器低 8 位。                                    0000,0000

sfr CCAP1H = 0xFB; //PCA 模块 1 的捕捉/比较寄存器高 8 位。                                    0000,0000

//-----------------------

//                                                       7   6   5   4   3   2    1     0    Reset Value

sfr PCA_PWM0 = 0xF2; //PCA 模块0 PWM 寄存器。            -   -   -   -   -   -  EPC0H EPC0L   xxxx,xx00

sfr PCA_PWM1 = 0xF3; //PCA 模块1 PWM 寄存器。            -   -   -   -   -   -  EPC1H EPC1L   xxxx,xx00

//PCA_PWMn:    7      6      5      4      3      2      1      0

//             -      -      -      -      -      -    EPCnH  EPCnL

//B7-B2: 保留

//B1(EPCnH): 在 PWM 模式下,与 CCAPnH 组成 9 位数。

//B0(EPCnL): 在 PWM 模式下,与 CCAPnL 组成 9 位数。

//--------------------------------------------------------------------------------

//新一代 1T 8051系列 单片机 ADC 特殊功能寄存器

//                                            7        6      5       4         3      2    1    0   Reset Value

sfr ADC_CONTR = 0xBC; //A/D 转换控制寄存器 ADC_POWER SPEED1 SPEED0 ADC_FLAG ADC_START CHS2 CHS1 CHS0 0000,0000

sfr ADC_RES  = 0xBD;  //A/D 转换结果高8位 ADCV.9 ADCV.8 ADCV.7 ADCV.6 ADCV.5 ADCV.4 ADCV.3 ADCV.2 0000,0000

sfr ADC_RESL = 0xBE;  //A/D 转换结果低2位                                           ADCV.1 ADCV.0 0000,0000

//--------------------------------------------------------------------------------

//新一代 1T 8051系列 单片机 SPI 特殊功能寄存器

//                                      7     6     5     4     3     2     1     0    Reset Value

sfr SPCTL  = 0xCE; //SPI Control Register  SSIG  SPEN  DORD  MSTR  CPOL  CPHA  SPR1  SPR0  0000,0100

sfr SPSTAT = 0xCD; //SPI Status Register   SPIF  WCOL   -     -     -     -     -     -    00xx,xxxx

sfr SPDAT  = 0xCF; //SPI Data Register                                                     0000,0000

//--------------------------------------------------------------------------------

//新一代 1T 8051系列 单片机 IAP/ISP 特殊功能寄存器

sfr IAP_DATA    = 0xC2;

sfr IAP_ADDRH   = 0xC3;

sfr IAP_ADDRL   = 0xC4;

//                                                7    6    5      4    3    2    1     0    Reset Value

sfr IAP_CMD     = 0xC5; //IAP Mode Table          0    -    -      -    -    -   MS1   MS0   0xxx,xx00

sfr IAP_TRIG    = 0xC6;

sfr IAP_CONTR   = 0xC7; //IAP Control Register  IAPEN SWBS SWRST CFAIL  -   WT2  WT1   WT0   0000,x000

//--------------------------------------------------------------------------------

51单片机auxr寄存器_STC12C5A60S2单片机AD采样程序及其寄存器讲解相关推荐

  1. c语言ad采样程序思路,单片机AD采样程序及其寄存器讲解

    描述 ad采样的步骤:首先将外部的信号,通过电路或者已有的AD芯片转换成 主CPU能接受的电压 信号.但是此电压信号必须转换成8.10 .12位或更高位数的数字才能进一步做计算.另外转换成位数多少表明 ...

  2. 51单片机auxr寄存器_MCS-51单片机特殊功能寄存器详解

    1.      定时器/计数器的方式寄存器TMOD TMOD是一个8位的特殊功能寄存器,对应的地址是89H,不可位寻址. A      主要完成三个功能: *确定选择定时器还是计数器: *选择何种工作 ...

  3. 51单片机auxr寄存器_AT89S51存储器的结构

    AT89S51单片机存储器结构的特点之一是将程序存储器和数据存储器分开(称为哈佛结构),并有各自的对这两个不同的存储器空间的访问指令. AT89S51的存储器空间可划分为如下4类. 1.程序存储器空间 ...

  4. 单片机ad显示程序c语言,pic单片机ad转换c程序分享

    A/D转换器是用来通过一定的电路将模拟量转变为数字量.模拟量可以是电压.电流等电信号,也可以是压力.温度.湿度.位移.声音等非电信号.但在A/D转换前,输入到A/D转换器的输入信号必须经各种传感器把各 ...

  5. STM8单片机通过PWM触发ADC同步采样

      在做数字开关电源开发过程中使用最多的就是PWM功能和ADC采样功能.ADC采样时采样的时间点很重要,必须在PWM输出高电平的时候取采样,这样采样出来的数据才是最准确的.在STM8单片机中,可以通过 ...

  6. STM8单片机ADC带缓存的连续采样模式

      在上一篇文章中说了STM8的ADC连续采样模式,为了提高采样的精度和速率,STM8单片机还提供了带缓存的连续采样模式,也就是说ADC会连续采集8个数据,放在缓存中,读取数据时可以一次从缓存中读取8 ...

  7. 基于51单片机数字频率计仿真设计(proteus仿真+程序+原理图+参考报告+器件清单)

    51单片机数字频率计仿真设计 51单片机数字频率计仿真设计 主要功能 任务书 实物图 仿真图 原理图 信号采集模块 脉冲产生模块 分频模块 程序 设计报告 全部参考资料 资料下载链接 51单片机数字频 ...

  8. 基于51单片机汽车胎压温度监测报警系统(程序+仿真+原理图+元件清单)

    功能介绍: 采用51单片机作为主控单片机,通过采集传感器的胎压和DS18b20的温度,显示到LCD1602上面,并且可以通过按键设置温度和压力的阈值,超过此值蜂鸣器进行报警,可以及时的提醒驾驶员胎压或 ...

  9. 入门单片机选择51还是stm32?入门单片机有哪些好的教学视频?

    不知道大家还记不记得自己小学时候自己的梦想? 有人想成为医生.有人想成为医生,有人想成为飞行员,而我想成为发明家. 可能真是我这种想法,也导致我的性格从小就比较内向,毕业出来以后也从事技术. 人生的上 ...

最新文章

  1. linux加微软的数据库,在Linux上使用Microsoft SQL – 安装SQL
  2. 少侠请重新来过 - Vue学习笔记(二) - Vue生命周期
  3. opencv图像清晰度计算_收藏|分析君带你认识Python中的十大图像处理工具
  4. linux yun nginx,Linux - CentOS 7 通过Yum源安装 Nginx
  5. Repeater控件里面取不到CheckBox的值
  6. 注册表删除chrome插件
  7. MySQL数据库开发的三十六条军规
  8. 行业领先!5G投资1100亿! 20个中国移动5G成功案例分享( 业绩+案例 )
  9. ASP.NET课设——新闻发布系统
  10. 账龄分析表excel模板_Excel技巧 | 简单而强大的功能 数据统计分析必备—数据透视表...
  11. 软件测试服务方案ppt,测试方案(测试策略).ppt
  12. Java权限设计思路
  13. 微信小程序的登录流程
  14. linux中怎么生成hwaddr,linux 下 hwaddr 和 macaddr的区别
  15. Tangent Element调色台的设计和功能同等重要
  16. 怎样让健康码截图合并一张图片_健康码拼图
  17. lol计算机内存,电脑内存快满了,在玩LOL是弹出内存不足。然后清理了下内存设置了下虚拟内存后电脑出现滴咚的声音并卡机...
  18. 在VisualBasic6.0中实现0.5数值修约
  19. 66、气体灭火系统的巡查内容
  20. sqlserver设计表不允许保存更改,阻止保存要求重新创建表的更改

热门文章

  1. FFMPEG结构体分析之AVStream
  2. JSON、Protobuf、Thrift、MessagePack 对比和开发指南
  3. 性能测试工具curl-loader(linux)
  4. TensorFlow文件操作
  5. Redis持久化 RDB和AOF 比较与选择
  6. 如何使用git上传本地文件到码云上【详细步骤】
  7. Zookeeper02_zk集群搭建
  8. 多线程与高并发(一):单机高并发应该掌握的线程基础:线程状态,异常与锁等
  9. PAT1001 A+B Format (20 分)
  10. androidtabhost缓存_Android学习笔记(一):TabHost存放多个Activity