main.c

来自「这本书里共11章」· C语言 代码 · 共 52 行

C
52
字号
#include <C8051F310.h>
#include <stdio.h>

#define V_REF 3

#define BIT4 0x01 << 4
#define BIT5 0x01 << 5
#define BIT7 0x01 << 7

unsigned int volt;

void main(void)
{
/* disable to watchdog timer 
  EA = 0;
  WDTCN = 0xDE;
  WDTCN = 0xAD;
  EA = 1;*/

/* setup serial 0 */
  SCON0  = 0x50;    /* SCON0: mode 1, 8-bit UART, enable rcvr           */
  TMOD  |= 0x20;    /* TMOD:  timer 1, mode 2, 8-bit reload             */
  TH1    = 221;     /* TH1:   reload value for 9600 baud @ 16MHz        */
  TR1    = 1;       /* TR1:   timer 1 run                               */
  TI0    = 1;       /* TI0:   set TI to send first char of UART         */

  P1MDIN &= !0x01;  /* Set pin P1.0 as analog input                     */
  P1SKIP |= 0x01;   /* Remove pin P1.0 from the crossbar                */
  REF0CN  = 0x0A;   /* Set voltage reference to "internal"              */
  ADC0CF  = 0xF9;   /* Set analog amp gain to 1.0                       */
  AMX0P   = 0x00;   /* Set positive MUX to pin 0                        */
  AMX0N   = 0xFF;   /* Set negative MUX to ground                       */
  AD0EN   = 1;      /* Set AD1EN to activate the ADC                    */

/* Start first sample */ 
   AD0INT = 0;    /* Clear AD0INT flag                                  */
   AD0BUSY = 1;   /* Set AD0BUSY flag, this starts conversion           */

  while(1)
  {
    if(AD0INT)
    {
      volt = (ADC0H << 8) + ADC0L;
	    //printf ("ADC0 Count %4u = %01u.%04u Volts\r", volt,
      //  (unsigned) (volt * V_REF) >> 10,                      /* Output Integer Portion */
      //  (unsigned) ((volt * V_REF * 10000UL) >> 10UL) % 10000); /* Output Decimal Portion */      
      AD0INT = 0;    /* Clear AD0INT flag                         */
      AD0BUSY = 1;   /* Set AD0BUSY flag, this starts conversion  */
    }
  }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?