Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
8
Добавлен:
26.01.2023
Размер:
1.66 Кб
Скачать
#include <iom8535v.h>
#include <macros.h>
#define NUM 1000
int values1[2]={0,0};
int number1[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
int values2[3]={0,0,0};
int number2[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
	
void port_init(void)
{
PORTA=0;
DDRA = 0x00;	
PORTD = 0x00;
DDRD = 0xFF; 
PORTB = 0x00;
DDRB = 0x07;
}
	
void adc_init(void) 
{
ADMUX = 0x43;	
ACSR = 0x80;	
ADCSRA = 0xCF; 
}



#pragma interrupt_handler adc_isr1:15
void adc_isr1(void)
{
int v,i,sum,temp;
CLI ();
sum=0;
v=ADCL>>2;
sum=(0x30&v);
sum+=0x0F&v;	
v=ADCH;
sum+=(0x0f&v)*64;
 values1[0]=sum%16;
 values1[1]=sum/16;
   PORTB=0x02;
 for (i=0; i<NUM;	i++)
  PORTD=number1[values1[1]];
        PORTB=0x01;
	   for (i=0; i<NUM;	i++)	
  PORTD=number1[values1[0]];
ADCSRA|=0x40;	
SEI () ;
}

#pragma interrupt_handler adc_isr1:15
void adc_isr1(void)
{
int v,i,temp;
CLI ();
v=ADCL>>2;
temp=0x0f&v;
temp+=0x30&v;
v=ADCH;
temp+=(0x0f&v)*64;
Perevod(values2,&temp);
 PORTB=0x04;
 for (i=0; i<100;	i++)
  PORTD=number1[values2[0]];
   PORTB=0x02;
 for (i=0; i<100;	i++)
  PORTD=number1[values2[1]];
        PORTB=0x01;
	   for (i=0; i<100;	i++)	
  PORTD=number1[values2[2]];
ADCSRA|=0x40;	
SEI () ;
}

void Perevod (int values[],int *sum)
{
int i=0;
while (*sum>0)
  {
  values[i]=*sum%10;
  *sum/=10;
  i++;
  } 
  if (i==1)
  {
    values[1]=0;
	values[2]=0;
  }
  if (i==2)
  {
    values[2]=0;
  } 
}

void init_devices(void)
{
CLI ();
port_init();	
adc_init();	
SEI ();
}
//	
void main(void)
{
init_devices();
while (1)
{
}
}
Соседние файлы в папке Примеры решения лабораторных работ