📄 main.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 + -