dyh386 发表于 2008-11-17 17:19:32

新手---發個自己學習的小程式CVAVR寫的ADC+LCD 【恢复】

/*****************************************************

This program was produced by the

CodeWizardAVR V1.24.5 Professional

Automatic Program Generator

?Copyright 1998-2005 Pavel Haiduc, HP InfoTech s.r.l.

http://www.hpinfotech.com

e-mail:office@hpinfotech.com



Project : 

Version : 

Date    : 2008/11/17

Author  : F4CG                            

Company : F4CG                            

Comments: 





Chip type           : ATmega16

Program type        : Application

Clock frequency     : 8.000000 MHz

Memory model        : Small

External SRAM size  : 0

Data Stack size     : 256

*****************************************************/



#include <mega16.h>

#include <stdlib.h>

// Alphanumeric LCD Module functions

#asm

   .equ __lcd_port=0x15 ;PORTC

#endasm

#include <lcd.h>



// Standard Input/Output functions

#include <stdio.h>



#define FIRST_ADC_INPUT 0

#define LAST_ADC_INPUT 0

unsigned char adc_data;

#define ADC_VREF_TYPE 0x20

// ADC interrupt service routine

// with auto input scanning    

char cvalue;

float fvalue;

char svalue;

interrupt  void adc_isr(void)

{

register static unsigned char input_index=0;

// Read the 8 most significant bits

// of the AD conversion result

adc_data=ADCH;

// Select next ADC input

if (++input_index> (LAST_ADC_INPUT-FIRST_ADC_INPUT))

   input_index=0;

ADMUX=(FIRST_ADC_INPUT|ADC_VREF_TYPE)+input_index;

// Start the AD conversion

ADCSRA|=0x40;  

cvalue = adc_data;

}



// Declare your global variables here



void main(void)

{

// Declare your local variables here



// Input/Output Ports initialization

// Port A initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 

PORTA=0x00;

DDRA=0x00;



// Port B initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 

PORTB=0x00;

DDRB=0x00;



// Port C initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 

PORTC=0x00;

DDRC=0x00;



// Port D initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 

PORTD=0x00;

DDRD=0x00;



// Timer/Counter 0 initialization

// Clock source: System Clock

// Clock value: Timer 0 Stopped

// Mode: Normal top=FFh

// OC0 output: Disconnected

TCCR0=0x00;

TCNT0=0x00;

OCR0=0x00;



// Timer/Counter 1 initialization

// Clock source: System Clock

// Clock value: Timer 1 Stopped

// Mode: Normal top=FFFFh

// OC1A output: Discon.

// OC1B output: Discon.

// Noise Canceler: Off

// Input Capture on Falling Edge

TCCR1A=0x00;

TCCR1B=0x00;

TCNT1H=0x00;

TCNT1L=0x00;

ICR1H=0x00;

ICR1L=0x00;

OCR1AH=0x00;

OCR1AL=0x00;

OCR1BH=0x00;

OCR1BL=0x00;



// Timer/Counter 2 initialization

// Clock source: System Clock

// Clock value: Timer 2 Stopped

// Mode: Normal top=FFh

// OC2 output: Disconnected

ASSR=0x00;

TCCR2=0x00;

TCNT2=0x00;

OCR2=0x00;



// External Interrupt(s) initialization

// INT0: Off

// INT1: Off

// INT2: Off

MCUCR=0x00;

MCUCSR=0x00;



// Timer(s)/Counter(s) Interrupt(s) initialization

TIMSK=0x00;



// USART initialization

// Communication Parameters: 8 Data, 1 Stop, No Parity

// USART Receiver: On

// USART Transmitter: On

// USART Mode: Asynchronous

// USART Baud rate: 9600

UCSRA=0x00;

UCSRB=0x18;

UCSRC=0x86;

UBRRH=0x00;

UBRRL=0x33;



// Analog Comparator initialization

// Analog Comparator: Off

// Analog Comparator Input Capture by Timer/Counter 1: Off

ACSR=0x80;

SFIOR=0x00;



// ADC initialization

// ADC Clock frequency: 125.000 kHz

// ADC Voltage Reference: AREF pin

// ADC Auto Trigger Source: Free Running

// Only the 8 most significant bits of

// the AD conversion result are used

ADMUX=FIRST_ADC_INPUT|ADC_VREF_TYPE;

ADCSRA=0xEE;

SFIOR&=0x1F;



// LCD module initialization

lcd_init(16);



// Global enable interrupts

#asm("sei")



while (1)

      {

      // Place your code here

      fvalue = (float)cvalue*5/255;

      ftoa(fvalue,5,svalue);

      lcd_putsf("V");

      lcd_gotoxy(0,0);

      lcd_puts(svalue);

      };

}



Code,Hex,Proteus文件ourdev_502174.rar(文件大小:18K) (原文件名:adlcd.rar)

本贴被 dyh386 编辑过,最后修改时间:2008-11-17,17:30:19.

armok 发表于 2008-11-18 10:11:51

acetuo 发表于 2008-11-18 10:07:16

我来顶你!!!!!!!!!!!!嘿嘿!!!!!!!!!!

cazhcs 发表于 2009-3-10 10:21:06

我也顶顶你~

ldh119 发表于 2009-8-20 20:32:43

我也顶顶你
页: [1]
查看完整版本: 新手---發個自己學習的小程式CVAVR寫的ADC+LCD 【恢复】