⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 相关富士通单片机实用资料5
💻 C
字号:
#include "MB90540.h"
unsigned int ADCResults;
const char welcome[100]= "Welcome at FUJITSU,This is a testing route of ADC ";
const char typechar[100]= "Please type any char";
void InitADC(void)
{
	//enable 7 channel analog 
	ADER = 0xff;
	// ADC control status register 0,
	// signal mode,sample channel 0 -7
	ADCS0 = 0x07;
	// ADC control status register 1
	// disable interrupt,software activation
	ADCS1 = 0x00;
	// ADC data register,10 bit resolution
	ADCR1 = 0x08; 
}
void InitUart(void)
{
	/* initialize UART1 e.g. operation mode, baud rate, stop bit, data length etc. */
	/* set clockspeed as PLLX4 in start.asm */
	DDR4_D45 = 1;				 /* Make SOT1 working */
	SMR1 = 0x01;				 /* serial mode register */
	SCR1 = 0x13;				 /* serial control register */
	U1CDCR = 0x88;				 /* prescaler control register */
         						 /* baud rate 9600*/
}
void Putch (char ch)             /* sends a char */
{
	while (SSR1_TDRE == 0);	     /* wait for transmit buffer empty 	*/
	 SODR1 = ch;                 /* put ch into buffer			*/
}
void Puts (const char *Name2)    /* Puts a String to UART */
{
 char c;
 int i,len;
 
  len = strlen(Name2);
  for (i=0; i<len; i++)          /* go through string */
  {
	c=(Name2[i]);                /* pick char */
	Putch (c);                   /* send it out */
  }
}
unsigned char Getch()
{
	unsigned char ch;
	while( SSR1_RDRF == 0);
	ch = SIDR1;
	return ch;
}

int GetADCResults()
{
	// wait ADC convertion complete
	while(ADCS1_INT == 0); 
	// bulit 16 bit
	ADCResults = (ADCR1&0x03)<<8;
	// ADCR1(16 BIT) or ADCR0( 8 BIT) 
	ADCResults = ADCResults | ADCR0; 
	// clear convert flag
	ADCS1_INT = 0;
	return ADCResults;
}
void delay(void)
{
	int k;
	for(k = 0; k<= 32760; k++);
}
void main(void)
{
	int i,j;
	unsigned int k[9];
	unsigned char HiByte,LowByte;
	i = 0;
	// enable PORT2 as Output
	DDR2 = 0xff;
	// inital UART
	InitUart();
	// display Welcom
	Puts(welcome);
	Putch(10);
	Putch(13);
	// inital ADC 
	InitADC();	
	// start ADC
	ADCS1_STRT=1;
	while(1)
	{
		// read ad converter result 
		k[i]=GetADCResults();
		i=i+1;
		if(i >= 8)
		{
			i=0;
			PDR2 = 0xaa;
			delay();
			PDR2 = 0x55;
			delay();
			for(j=0;j<=7;j++)
			{
				// get ad result converter high byte
				HiByte=k[j]>>8;
				// get ad result converter low byte
				LowByte=k[j] & 0xff;
				// transmit low byte
				Putch(LowByte);
				// transmit high byte
				Putch(HiByte);
			}
			    Puts(typechar);
			    Putch(10);
				Putch(13);
				Getch();
				// restart ad converter
				ADCS1_STRT = 1;
		}
	}
}

⌨️ 快捷键说明

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