/***********************************************************************/ /* */ /* FILE :H83694F0004.c */ /* DATE :Sun, Dec 16, 2012 */ /* DESCRIPTION :Main Program */ /* CPU TYPE :H8/3694F */ /* */ /* This file is generated by Renesas Project Generator (Ver.4.16). */ /* */ /***********************************************************************/ #include "stdio.h" #include "typedefine.h" #include "iodefine.h" void demo01(void); void getadc(unsigned int *); void itoa(char *,unsigned int); void Init_sci(); void Put_sci(char); void Put_sci_s(char *); void Get_sci(char *); void Wait01(void); int main() { unsigned int adc_data; unsigned long tmp_data; unsigned int lp; char out_str[10]; // ****************** // 1.Initialize // ****************** // (1)Initialized SCI Init_sci(); // (2)Put Message Put_sci_s(" H8/3694F Connected OK>"); // ****************** // 2.Main Process // ****************** while( 1 ) { // (1)Get A/D-Converter-data getadc(&adc_data); tmp_data = adc_data ; tmp_data = tmp_data * (unsigned long)5000 / (unsigned long)1023; adc_data = (unsigned int)tmp_data ; // (2)Convert data-format itoa(out_str,adc_data); // (3)Put data // a)Titles Put_sci_s(" Volt= "); // b)Data for(lp=0;lp<5;lp++){ if(out_str[lp]<'0'||out_str[lp]>'9'){ // Put_sci(' '); }else{ Put_sci(out_str[lp]); } } // c)Unit Put_sci_s("[mV] "); // (4)Wait Wait01(); } } //**************************************************************************** // Function Name : getadc(unsigned int *adc_data) // Title : Get A/D-data // Input : // Output : //**************************************************************************** void getadc(unsigned int *adc_data) { AD.ADCSR.BYTE = 0x20; /* get AN(0)*/ // AD.ADCSR.BYTE = 0x21; /* get AN(1)*/ // AD.ADCSR.BYTE = 0x22; /* get AN(2)*/ // while((AD.ADCSR.BYTE & 0x80)==0); *adc_data= AD.ADDRA; /* get AN(0)*/ // *adc_data= AD.ADDRB; /* get AN(1)*/ // *adc_data= AD.ADDRC; /* get AN(2)*/ *adc_data= *adc_data >> 6; /* Get Data-Bit(15)-(6) */ } //**************************************************************************** // Function Name : Init_sci // Title : Initiarize Serial Comunication // Input : // Output : //**************************************************************************** void Init_sci() { IO.PMR1.BYTE = IO.PMR1.BYTE | (1<<1); SCI3.SCR3.BYTE = 0x00; SCI3.SMR.BYTE = 0x00; SCI3.BRR = 64; // OCS:20MHz,9600=64,38400=15 // SCR3 RIE:0(Intrupt Disable), TE:1(Send Enable), RE:1(Recive Enable) SCI3.SCR3.BYTE = SCI3.SCR3.BYTE | (0<<6) | (1<<5) | (1<<4); SCI3.SSR.BYTE = SCI3.SSR.BYTE & 0x80; } //**************************************************************************** // Function Name : Put_sci_s // Title : Put Serial Port (Strings) // Input : // Output : //**************************************************************************** void Put_sci_s(char out_s[]) { unsigned int lp=0; while(1){ if(out_s[lp]==0x00) break; Put_sci( out_s[lp] ) ; lp++; } } //**************************************************************************** // Function Name : Put_sci // Title : Put Serial Port (Character) // Input : // Output : //**************************************************************************** void Put_sci(char out_c) { // 1.Check TDRE flag while ((SCI3.SSR.BYTE & 0x80) == 0) ; // 2.Put data SCI3.TDR = out_c; } //**************************************************************************** // Function Name : Get_sci // Title : Get Serial Port (Character) // Input : // Output : //**************************************************************************** void Get_sci(char *in_c) { // 1.Check RDRF flag while((SCI3.SSR.BYTE & 0x40 ) == 0); // 2.Get data *in_c = SCI3.RDR; // 3.Clear RDRF flag SCI3.SSR.BYTE = SCI3.SSR.BYTE & 0xBf; } //**************************************************************************** // Function Name : itoa(char *,unsigned int) // Title : Convert Integer to Strings // Input : = sprintf // Output : //**************************************************************************** void itoa(char out_str[],unsigned int in_i) { int n0,n1,n2,n3,n4; int lp,chk; // 1.Convert Integer to Strings n0 = in_i / 10000 ; n1 = (in_i % 10000) / 1000 ; n2 = (in_i % 1000) / 100 ; n3 = (in_i % 100) / 10 ; n4 = in_i % 10 ; out_str[0] = (unsigned char)n0 | 0x30; out_str[1] = (unsigned char)n1 | 0x30; out_str[2] = (unsigned char)n2 | 0x30; out_str[3] = (unsigned char)n3 | 0x30; out_str[4] = (unsigned char)n4 | 0x30; out_str[5] = 0x00; // return; // 2.Zero sus chk=999; for(lp=0;lp<5;lp++){ if(out_str[lp]!='0'){ chk=lp; break; } } if(chk==999)chk=4; for(lp=0;lp