Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
4
Добавлен:
29.02.2016
Размер:
5.67 Кб
Скачать
//#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);}
}

}




















































































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