Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
12
Добавлен:
29.02.2016
Размер:
6 Кб
Скачать
//#include math.h
sfr P0=0x80;         ///инициализируем порнт P0
sfr P1=0x90;        ///инициализируем порнт P1
sfr P2=0xA0;          ///инициализируем порнт P2
sfr P3=0xB0;        ///инициализируем порнт P3
sfr IE=0xA8;     ///инициализируем регистор прерываний
sfr TMOD=0x89;     ///инициализируем регистор таймера
sfr TCON=0x88;    ///инициализируем  регистор таймера
sfr TH0=0x8C;     ///инициализируем регистор таймера
sfr TL0=0x8A;    ///инициализируем регистор таймера
sfr IP=0xB8;    ///инициализируем регистор парететов
sfr TH1=0x8D;    ///инициализируем регистор таймера
sfr TL1=0x8B;    //инициализируем регистор таймера
sbit P00=P0^0;
sbit P01=P0^1;
sbit P02=P0^2;
sbit P03=P0^3;
sbit P04=P0^4;
sbit P05=P0^5;
sbit P06=P0^6;
sbit P07=P0^7;
sbit P10=P1^0;
sbit P11=P1^1;
sbit P12=P1^2;
sbit P13=P1^3;
sbit P14=P1^4;
sbit P15=P1^5;
sbit P16=P1^6;
sbit P17=P1^7;
sbit P20=P2^0;
sbit P21=P2^1;
sbit P22=P2^2;
sbit P23=P2^3;
sbit P24=P2^4;
sbit P25=P2^5;
sbit P26=P2^6;
sbit P27=P2^7;
sbit P30=P3^0;
sbit P31=P3^1;
sbit P32=P3^2;
sbit P33=P3^3;
sbit P34=P3^4;
sbit P35=P3^5;
sbit P36=P3^6;
sbit P37=P3^7;
unsigned short count;       ///Эта переменная будет соответствовать количеству импульсов
unsigned short data name[16]={0x4B,0x49,0x52,0x49,0x45,0x4E,0x4B,0x4F,0x20,0x53,0x34,0x65,0x74,0x34,0x69,0x6B,};
unsigned char var;     // эта переменная будет определять нажатые кнопки(отображать МИН или кол. импульсов)
unsigned short min;     // эта переменная соотв. кол. минут

void vivod() interrupt 1 using 3 // прерывания от таймера 0
{}

void vivod_min() interrupt 3 using 3    /// прерывания от таймера 1
{
 unsigned short c1;
 unsigned short c2;
 TH1=252; /// соотв 1мс
 TL1=23;
 ++c1;
 if(c1==60000) /// соответствует 1 мин
 {
  c2++;
  min=count/c2;  /// расчет импульсов в минуту
  c1=0;
 }
}

void int1() interrupt 0 ///прерывание от кнопки 1 
{ 
  var=1;
  P32=1;  
}

void int3() interrupt 2 using 3///прерывание от кнопки 2
{
 var=0;
 P33=1;
}  
   
void Comand_MJKI (unsigned char command)//Обработка команд на МЖКИ, начале мжки работает в 8-разрядном режиме

{
 unsigned char temp_int_1; 
 P12=1;
 P2=command;
 P12=0;
 for (temp_int_1 = 0; temp_int_1 < 1000; temp_int_1++); ///задержка 2 мс
} 

void Data_MJKI (unsigned char data_mgki)//Вывод данных на МЖКИ записанных в сам генератор символов

{
 unsigned char temp_int_1;  
 P12=1;
 P10=1;
 P2=data_mgki;
 P12=0;
 P10=0;
 for (temp_int_1 = 0; temp_int_1 < 1000; temp_int_1++);///задержка 2 мс
}

void impulsi_vsego (void) /// расчитываем количество импульсов, спомощью счетчика C/T0
{ 
 count+=TH0 ;
 count=count<<4;
 count+=TL0;
} 

void Go_to_XY(unsigned char x, unsigned char y) // установка курсора в нужную нам строку и сегмент
{
 if (x > 15 ) { x=15;} // Коррекция возможной ошибки входных параметров
 if (y  > 1 ) { y=1; }
 if (y != 0 ) 
 { 
  x = x+ 0x80; ///установка курсора в нужную нам строку 1
  
 }
 if(y==0){ x=x+192;}/// установка курсора в нужную нам строку 2
  Comand_MJKI(x);
 }

void MJKI(unsigned short mjki)/// выделение числа и вывод его на мжки, макс число : 65000 импульсов
{
 unsigned char digit,d,n,k,t;
 digit=mjki/10000;//  выдуление 10000
 d=digit;
 if(d==0){Data_MJKI(0x20);}
 else{Data_MJKI(0x30+digit);}
 digit=(mjki-d*10000)/1000;//выдуление 1000
 if((d==0)&&(digit==0)){Data_MJKI(0x20);}
 else {Data_MJKI(0x30+digit);}
 n=(mjki-d*10000-digit*1000)/100;//выдуление 100
 if((d==0)&&(digit==0)&&(n==0)){Data_MJKI(0x20);}
 else {Data_MJKI(0x30+n);}
 k=(mjki-d*10000-digit*1000-n*100)/10;//выдуление 10
 if((d==0)&&(digit==0)&&(n==0)&&(k==0)){Data_MJKI(0x20);}
 else {Data_MJKI(0x30+k);} 
 t=mjki-d*10000-digit*1000-n*100-k*10;
 Data_MJKI(0x30+t); //выдуление 1

}
 
void Init_MJKI (void) /////Вначале мжки работает в 4-разрядном режиме
{
 unsigned int temp_int_1;
 P10=0;
 P11=0;
 P12=0;
 for (temp_int_1 = 0; temp_int_1 < 7000; temp_int_1++); // Пауза 15 мс, ждем пока выставятся начальные настройки.
 P2=52; // Настраиваем на 8-битную передачу команд/данных(отправляем старшую тетраду данных)
 P12=1; // Мигнал eneibl в высокий уровень
 P12=0; //Мигнал eneibl в низкий  уровень, что  соответствует записи данных в МЖКИ
 P2=255;//// Настраиваем на 8-битную передачу команд/данных(отправляем младшую тетраду данных)
 P12=1; //Мигнал eneibl в высокий уровень
 P12=0; //Мигнал eneibl в низкий  уровень, что  соответствует записи данных в МЖКИ
 for (temp_int_1 = 0; temp_int_1 < 2000; temp_int_1++);
 Comand_MJKI(0x01);//очистка экрана 
 Comand_MJKI(0x0F);// режим отображения, задаем параметры курсора
 Comand_MJKI(0x32); // присваение адреса СА в области СGRAM
 Comand_MJKI(0x14); // разрешение сдвига влево курсора
 Comand_MJKI(0x3C);// установка 2 строки
} 

void main (void)
 
{unsigned  int i;
 IE=255; // разрешение всех видов прерываний
 IP=5;     /// пререоретет от 1 и 2 инта
 TMOD=29;// Настройка таймера Т0 в режим счетчика с режимом работы 1
 TCON=80; // Запуск счетчика;
 TH1=0;  // заполнение таймера
 TL1=0;// заполнение таймера
 Init_MJKI();//Инициализая МЖКИ

Go_to_XY(0,1);   ////Выводим в верхнюю строку (KIRIENKO s4ey4ik)  
for( i=0;i<16;i++)  

{

Data_MJKI(name[i]);

} 
           
while(1)
{
 P34=1;
 impulsi_vsego(); 
Go_to_XY(8,0);///В эту область (верхняя строка, 8 сегмент) будет выводится число импульсов.
  if(var==1)
  {
   MJKI(min);
  }
  if(var==0){MJKI(count);}
}

}










 









































































Соседние файлы в папке Курсач Кириенко(Серому)