Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
10/15/07 08:10
Read: times


 
#145758 - codes
Responding to: ???'s previous message
the added codes are
----------------------------------------------------------------
unsigned char xdata array0H[10];
unsigned char xdata array0L[10];
unsigned int xdata currentIndex;


if((currentIndex==NULL) || (currentIndex==10))
{

currentIndex =0;
}
array0H[currentIndex]=ADC0H;
array0L[currentIndex]=ADC0L;
currentIndex ++;
----------------------------------------------------------------

"Whole codes"
#include <c8051F200.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <intrins.h>

unsigned int q,value,value1,temp,totvalue,e;
unsigned char a,b,c,d;	

unsigned char xdata array0H[10];
unsigned char xdata array0L[10];
unsigned int xdata currentIndex;


sbit RS = P2^5; 	// RS (Register Select) for port 2.5
sbit RW = P2^6; 	// RW for Port 2.6
sbit E = P2^7; 		// Enable for Port 2.7

sbit DB0 = P3^0;	//DB = Data bus 
sbit DB1 = P3^1;
sbit DB2 = P3^2;
sbit DB3 = P3^3;
sbit DB4 = P3^4;
sbit DB5 = P3^5;
sbit DB6 = P3^6;
sbit DB7 = P3^7;				
	
float bit_value,result;

void config(void);
void ldelay(int time);
void enable();
void lcdinit (void);
void lcd_command(unsigned char m);
void print(unsigned char k);
//void hi();
void adcdata();
void voltage();
void result_dsp();


void config(void)
{
	// Configure the PRTnMX Registers	
	PRT0MX = 0x00;	// PRT0MX: Initial Reset Value
	PRT1MX = 0x00;	// PRT1MX: Initial Reset Value
	PRT2MX = 0x00;	// PRT2MX: Initial Reset Value

	// Port configuration (1 = Push Pull Output)
	PRT0CF = 0x00;	// Output configuration for P0 
	PRT1CF = 0xFF;	// Output configuration for P1 
	PRT2CF = 0xFF;// Output configuration for P2 
	PRT3CF = 0xFF; // Output configuration for P3

	P0MODE = 0x00; // Input configuration for P0
	P1MODE = 0xFF; // Input configuration for P1
	P2MODE = 0xFF; //Input configuration for P2
	P3MODE = 0xFF; // Input configuration for P3

	CPT0CN = 0x00;	// Comparator 0 Control Register
	CPT1CN = 0x00;	// Comparator 1 Control Register

	OSCXCN = 0x30;	// EXTERNAL Oscillator Control Register	
	OSCICN = 0x14;	// Internal Oscillator Control Register

	REF0CN = 0x03;	// Reference Control Register

	SPI0CN = 0x00;	// SPI Control Register
	SPI0CFG = 0x00;	// SPI Configuration Register
	SPI0CKR = 0x00;	// SPI Clock Rate Register

	SCON = 0x00;		// Serial Port Control Register
	PCON = 0x00;		// Power Control Register
/*----------------
 ADC Configuration
 -----------------*/
	AMX0SL = 0xE7;	// AMUX Channel Select Register; Analog input at P0.3 at pin 16                                                                                                                                                                                                                                                                                                                           
	ADC0CF = 0x78;	// ADC Configuration Register
	ADC0CN = 0x40;	// ADC Control Register
	
	ADC0LTH = 0x00;	// ADC Less-Than High Byte Register
	ADC0GTH = 0x00;	// ADC Greater-Than High Byte Register

/*------------------
 Timer Configuration
 -------------------*/
	CKCON = 0x00;	// Clock Control Register
	TH0 = 0x00;		// Timer 0 High Byte
	TL0 = 0x00;		// Timer 0 Low Byte
	TH1 = 0x00;		// Timer 1 High Byte
	TL1 = 0x00;		// Timer 1 Low Byte
	TMOD = 0x00;		// Timer Mode Register
	TCON = 0x00;		// Timer Control Register

	RCAP2H = 0x00;	// Timer 2 Capture Register High Byte
	RCAP2L = 0x00;	// Timer 2 Capture Register Low Byte	
	TH2 = 0x00;		// Timer 2 High Byte	
	TL2 = 0x00;		// Timer 2 Low Byte	
    T2CON = 0x00;	// Timer 2 Control Register	

	RSTSRC = 0x00;	// Reset Source Register

	IE = 0x00;		//Interrupt Enable
	IP = 0x00;		//Interrupt Priority
	EIE1 = 0x00;	//Extended Interrupt Enable 1
	EIE2 = 0x00;	//Extended Interrupt Enable 2
	EIP1 = 0x00;	//Extended Interrupt Priority 1
	EIP2 = 0x00;	//Extended Interrupt Priority 2

	// Watchdog Timer Configuration
	WDTCN=0xde;	//disable software
	WDTCN=0xad;	//watchdog timer
}



void ldelay (int time)
{
	long y;
	for (y=0; y<time;y++)
	{
	}
}

void enable()
{
	E = 1;
	ldelay(5);
	E = 0;
	ldelay(5);
}

void lcdinit(void)
{
	E=0;
	RW=0;
	RS=0;

	P3=0x38; 	// 8bit, 2 lines, default font
	enable();

	P3=0x0C;	// on display
	enable();

	P3=0x06;	// entry mode, not to shift
	enable();

	P3=0x01;	// clear dispay and cursor return
	enable();

	P3=0x02;	// cursor return
	enable();
}

void lcd_command(unsigned char m)
{
	P3 = m;
	RS = 0;
	RW = 0;
	enable();
}
void print(unsigned char k) 	
{
	P3 = k;
	RS = 1;
	RW = 0;
	enable();	
}


void voltage()
{
	unsigned char words[] = "Voltage:";
	for(q=0;q<9;q++)	//9 characters stored
	{
		print (words[q]);
	}
}


{
	
		ADCINT = 0;
		value=0;

		ADBUSY = 1;
//		ldelay(100);
		
		while(ADCINT==0);		//Is conversion complete ?

		if((currentIndex==NULL) || (currentIndex==10))
		{
		
		currentIndex =0;
		}
		array0H[currentIndex]=ADC0H;
		array0L[currentIndex]=ADC0L;
		currentIndex ++;


		value = ADC0L;
		e= ADC0H; 
		totvalue= value + (e*256);
//		ldelay(100);

//		ldelay(100);
		ADCINT=0;
		ADBUSY=0;

}

void bit_resolution()
{

	bit_value = 3.0/(4096);
	result = totvalue*bit_value;
	
}


void one()		/*convert 1st value	A.xxx */

{
	temp=result;
	temp = temp%10;
	a = temp+48;
	
}

void dec1()		/*convert 1st decimal place value	x.Bxx */
{
	temp=result*10;
	temp = temp%10;
	b = temp+48;
}

void dec2()		/*convert 2nd decimal place value	x.xCx */
{
	
	temp = result*100;
	temp = temp%10;
	c = temp+48;
}

void dec3()		/*convert 3rd decimal place value	x.xxD */

{
	temp = result*1000;
	temp = temp%10;
	d = temp+48;
}


void convert_all()
{
	one();
	dec1();
	dec2();
	dec3();
}


void displayD()		/* display 3 digit number */
{
	RS = 1;

	P3 = a;
	enable();
	
	print(0x2E); 	/*display ".", ASCII code is 2E for "."*/

	P3 = b;
	enable();
	
	P3 = c;
	enable();
	
	P3 = d;
	enable(); 
}


void result_dsp()
{
	
	bit_resolution();
	convert_all();
	displayD();
}

void main()
{
	config();

	lcdinit();		//Initialize LCD

	ADCEN = 1; 		//Enable ADC
   
   	ldelay(50);

	lcd_command(0x80);	//LCD command to display on the first line

	voltage();		//Display "Voltage="

	lcd_command(0x02);	//LCD command to return the cursor home
	lcd_command(0xC0);	//LCD command to display on the second line

   	adcdata();

	result_dsp();

	print(0x56);	//Display "V"

  	ldelay(4000);
   
}       
	 


List of 99 messages in thread
TopicAuthorDate
8051 in C programming            01/01/70 00:00      
   Read the manual!            01/01/70 00:00      
      Not in Keil            01/01/70 00:00      
         an old IAR compiler            01/01/70 00:00      
            is there any fundamental problem...            01/01/70 00:00      
               The C language            01/01/70 00:00      
               structures            01/01/70 00:00      
                  A Non Standard Extension            01/01/70 00:00      
                     just don't use it            01/01/70 00:00      
                        Similar problem            01/01/70 00:00      
                           Time            01/01/70 00:00      
   Read The Manual (sometimes abbreviated to RTFM)!            01/01/70 00:00      
      silicon laboratories            01/01/70 00:00      
         Compiler?            01/01/70 00:00      
            no.            01/01/70 00:00      
               actually            01/01/70 00:00      
         Aside: Keil            01/01/70 00:00      
         You are using Keil!            01/01/70 00:00      
            yes...            01/01/70 00:00      
               Learn to walk first!            01/01/70 00:00      
                  FYP            01/01/70 00:00      
                     12 Weeks            01/01/70 00:00      
            in parts            01/01/70 00:00      
               That's what I said            01/01/70 00:00      
                  (As) I Understand It (now) ;-)            01/01/70 00:00      
                  Misreading            01/01/70 00:00      
                     No problem :-)            01/01/70 00:00      
   the beauty of posting twice            01/01/70 00:00      
   error            01/01/70 00:00      
      include             01/01/70 00:00      
         probably best not to...            01/01/70 00:00      
            but why?            01/01/70 00:00      
               Because            01/01/70 00:00      
      solved            01/01/70 00:00      
         Textbook time!            01/01/70 00:00      
      undefined identifier            01/01/70 00:00      
         typedefs of types for shorthand            01/01/70 00:00      
            Shorthand vs. Portability            01/01/70 00:00      
               Plus            01/01/70 00:00      
                  Be careful            01/01/70 00:00      
                     The concise C spec            01/01/70 00:00      
                  Plus plus            01/01/70 00:00      
               Another one - Certainty!            01/01/70 00:00      
                  then, define your stdstdint.h            01/01/70 00:00      
                  shorthand can be VERY useful            01/01/70 00:00      
   hi...back            01/01/70 00:00      
      RTFM!            01/01/70 00:00      
         Two books you need            01/01/70 00:00      
            no book in hand yet            01/01/70 00:00      
               You need those books!            01/01/70 00:00      
                  :P            01/01/70 00:00      
               meaning            01/01/70 00:00      
                  In glorious technicolor...            01/01/70 00:00      
                  Back to K&R            01/01/70 00:00      
                     ... but if you put it into the context of a...            01/01/70 00:00      
                     Cool Colors            01/01/70 00:00      
                        what about the other '51/mcu Cs?            01/01/70 00:00      
                     pedantic            01/01/70 00:00      
                        ya..            01/01/70 00:00      
   higher resolution ADC            01/01/70 00:00      
      ADC fundamentals            01/01/70 00:00      
         Hi-Res ADC is pointless with poor input circuitry!            01/01/70 00:00      
      4 bits!            01/01/70 00:00      
      Time for a new thread!            01/01/70 00:00      
   xdata            01/01/70 00:00      
      Re-post the code & fully describe the situation            01/01/70 00:00      
      Block Comment style            01/01/70 00:00      
         codes            01/01/70 00:00      
            Not quite            01/01/70 00:00      
               no idea            01/01/70 00:00      
      analog input            01/01/70 00:00      
   how ?            01/01/70 00:00      
      Noob doc            01/01/70 00:00      
      there is no such thing            01/01/70 00:00      
         Already covered            01/01/70 00:00      
            Andy, I'm amazed            01/01/70 00:00      
   no            01/01/70 00:00      
      The link works            01/01/70 00:00      
         PDF Document            01/01/70 00:00      
   program added            01/01/70 00:00      
      I'm not sure what you're asking?            01/01/70 00:00      
         is it?            01/01/70 00:00      
            What??            01/01/70 00:00      
               ok            01/01/70 00:00      
                  Post your code properly!            01/01/70 00:00      
            Why read twice?            01/01/70 00:00      
               how?            01/01/70 00:00      
                  Accessing arrays            01/01/70 00:00      
                  some hints            01/01/70 00:00      
                     sfr16            01/01/70 00:00      
                        Did that            01/01/70 00:00      
                           re SFR16            01/01/70 00:00      
                           Naing Linn really needs to learn to do it himsel            01/01/70 00:00      
                           Thanks            01/01/70 00:00      
                  8 to 16 bit            01/01/70 00:00      

Back to Subject List