当前位置:
文档之家› atmega128单片机系列例程
atmega128单片机系列例程
ADCSRA=0x00; // ADC
ADMUX = 0X00;
// Aref
ADC0
ACSR=(1<<ACD);
ADCSRA = (1<<ADEN)|(1<<ADSC)|(1<<ADATE)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1);
//ADEN
ADC;ADSC,ADC
ADIE,ADC
: :k : ************************************************************************ ****/ void display(unsigned int k)// { DDRE|=1<<2; PORTE|=1<<2; DDRA=0XFF; PORTA=k; } #define SS 0 #define SCK 1 #define MOSI 2 #define MISO 3 #define SS_H() PORTB|=(1<<SS) #define SS_L() PORTB&=~(1<<SS)
#define led0_en() {DDRB|=1<<4;PORTB|=(1<<4);} // #define led0_dis() {DDRB|=1<<4;PORTB&=~(1<<4);} // #define led1_en() {DDRB|=1<<5;PORTB|=(1<<5);} #define led1_dis() {DDRB|=1<<5;PORTB&=~(1<<5);} #define led2_en() {DDRB|=1<<6;PORTB|=(1<<6);} #define led2_dis() {DDRB|=1<<6;PORTB&=~(1<<6);} #define led3_en() {DDRB|=1<<7;PORTB|=(1<<7);} #define led3_dis() {DDRB|=1<<7;PORTB&=~(1<<7);} #define OE 7 #define point 3 #define dp 7 #include <iom128v.h>
if(point==1) HC_595_OUT(table[led_buffer[2]]|(1<<dp)); else HC_595_OUT(table[led_buffer[2]]); led1_en(); delay_nus(60); led1_dis();
if(point==2) HC_595_OUT(table[led_buffer[1]]|(1<<dp)); else HC_595_OUT(table[led_buffer[1]]);
}
void leddis_update(void)
{
/*
*/
if(point==0)
HC_595_OUT(table[led_buffer[3]]|(1<<dp));
else
HC_595_OUT(table[led_buffer[3]]);
led0_en();
delay_nus(60);
led0_dis();
1
TCNT1H=0XF0; //
TCNT1L=0XBE;
TCCR1A=0X00; //
1
TCCR1B=0X05; // 1024
}
interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
TCNT1H=0XF0; //
TCNT1L=0XBE;
DDRE|=1<<2;
************************************************************************ ****/ void delay(void) {
int i; for(i=0;i<1800;i++); } /*********************************************************************** *****
#include <macros.h>
const unsigned char table[]={0x3F,0x06,0x5B,0x4F,0x66,
0x6D,0x7D,0x07,0x7F,0x6F,
0x77,0x7C,0x39,0x5E,0x79,0x71,0x00};
volatile unsigned char led_buffer[4];
*/
/*
2010 11 13
*/
//Aref AVCC(+5V), Aref
/*
AD
*/
/***********************************************************************
****/
/*********************************
********************************/
#include <iom128v.h>
#include <macros.h>
/********************************
*******************************/
extern const unsigned char tab[]={0x3f,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
*****
:ADC
:
:
************************************************************************
****/
void adc_init(void)
{
DDRF&=0XFE; //PORTF0
ADC0
PORTF&=0XFE; //PORTF0
/***********************************************************************
****/
/*ADC
*/
/*
ATmega128
*/
/* :RC 8MHZ
*/
/*
ICCAVR 7.13A
*/
/*E-Mail:number007cool@
{
/*
*/
SPDR = Data;
/*
*/
while(!(SPSR & (1<<SPIF)))
;
}
/*
HC595
*/
void HC_595_init(void)
{
DDRC |= (1<<OE); // PORTC7
PORTC &= (1<<OE); //
595
PORTB = 0x0F; //
spi_init();
//N ms
/* spi
*/
void spi_init(void)
{
DDRB |= (1<<MOSI)|(1<<SCK)|(1<<SS);// MOSI SCK
SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0)|(1<<SPR1);// SPI
}
/*spi
*/
void SPI_MasterTransmit(char Data)
led2_en(); delay_nus(60); led2_dis();
/*
*/
if(point=3)
HC_595_OUT(table[led_buffer[0]]|(1<<dp));
else
HC_595_OUT(table[led_buffer[0]]);
led3_en();
delay_nus(60);
ATMEGA128
沧
minios@沧
avr 16L Makefie
icc avr winavr
.
avr/io.h
makefile
atmega128 ICC AVR
winavr
makefile
makefile
code vision avr
icc avr iom128v.h
128
atmega128. cvavr mega128.h
void delay_1us(void)
//1us
{
asm("nop");
}
void delay_nus(unsigned int n)
//N us
{
unsigned int i=0;
for (i=0;i<n;i++)
delay_1us();
}
//0,1,2,3,4 //5,6,7,8,9 //a,b,c,d,e,f
PORTE|=1<<2;
DDRA=0xff;
PORTA=cnt;
// led
B
cnt++;
if(cnt==255)
cnt=0;
}
void main() {
//DDRB=0XFF; SREG|=0X80; TIMSK=0X04; timer1_init(); while(1) {; } }