Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Вопросы начинающих

Вопросы начинающих Прежде чем задать вопрос, стоит воспользоваться поиском

Ответ
 
Опции темы Опции просмотра
Старый 06.03.2017, 19:14   #1
gromovi
Senior Member
 
Регистрация: 17.02.2009
Адрес: где-то там
Возраст: 34
Сообщений: 1,336
Вес репутации: 381/47
gromovi is just really nicegromovi is just really nicegromovi is just really nicegromovi is just really nice
По умолчанию pic16f886

Имею вот такой затык:
Код:
	znak(zxz/100);
	comm_1=0;
	delay_ms(1);
	comm_1=1;

	znak(zxz/10);
	comm_2=0;  вот с этого места какая то не понятка цифра загорается и при следующей команде тухнет 
	segment_dp=1;	
	delay_ms(1);
	comm_2=1;
	segment_dp=0;

	znak(zxz%10);
	comm_3=0; 
	delay_ms(1);
	comm_3=1;
Код:
#byte PORTA = 0x05
#bit  comm_1 = 0x05.7

#byte TRISC = 0x87
#byte PORTC = 0x07
#bit  segment_dp = 0x07.6
#bit  comm_2 = 0x07.1
#bit  comm_3 = 0x07.2
смотрю дизасассамблер и там вроде все хорошо
Код:
  02BF    1087     BCF 0x7, 0x1
217:               	segment_dp=1;	
  02C0    1707     BSF 0x7, 0x6
218:               	delay_ms(1);
  02C1    3001     MOVLW 0x1
  02C2    00BE     MOVWF 0x3e
  02C3    2231     CALL 0x231
219:               	comm_2=1;
  02C4    1487     BSF 0x7, 0x1
220:               	segment_dp=0;
  02C5    1307     BCF 0x7, 0x6
1-ая и 3-я цифры горят как надо. 2-ая цифра при числе от 0 до 059 зажигается как надо. но все что выше ... только 1-ый знак и 3-ий.
Чем лыжи мазать?
полный вид того что отлаживается
Код:
#include <main.h>

#byte TRISB = 0x86
#byte PORTB = 0x06

#byte PORTA = 0x05
#bit  comm_1 = 0x05.7

#byte TRISC = 0x87
#byte PORTC = 0x07
#bit  segment_dp = 0x07.6
#bit  comm_2 = 0x07.1
#bit  comm_3 = 0x07.2


#define segment_A_on  OUTPUT_HIGH(PIN_A6); 
#define segment_B_on  OUTPUT_HIGH(PIN_C3);
#define segment_C_on  OUTPUT_HIGH(PIN_C5);
#define segment_D_on  OUTPUT_HIGH(PIN_C7);
#define segment_E_on  OUTPUT_HIGH(PIN_A5);
#define segment_F_on  OUTPUT_HIGH(PIN_C0);
#define segment_G_on  OUTPUT_HIGH(PIN_C4);
//#define segment_dp_on  OUTPUT_HIGH(PIN_C6);

#define segment_A_off  OUTPUT_LOW(PIN_A6); 
#define segment_B_off  OUTPUT_LOW(PIN_C3);
#define segment_C_off  OUTPUT_LOW(PIN_C5);
#define segment_D_off  OUTPUT_LOW(PIN_C7);
#define segment_E_off  OUTPUT_LOW(PIN_A5);
#define segment_F_off  OUTPUT_LOW(PIN_C0);
#define segment_G_off  OUTPUT_LOW(PIN_C4);
//#define segment_dp_off  OUTPUT_LOW(PIN_C6);

//#define comm_1_off  OUTPUT_HIGH(PIN_A7);
//#define comm_2_off  OUTPUT_HIGH(PIN_C1);
//#define comm_3_off  OUTPUT_HIGH(PIN_C2);

//#define comm_1_on  OUTPUT_LOW(PIN_A7);
//#define comm_2_on  OUTPUT_LOW(PIN_C1);
//#define comm_3_on  OUTPUT_LOW(PIN_C2);

#define segment_plus_on OUTPUT_HIGH(PIN_B0);OUTPUT_HIGH(PIN_B1);
#define segment_plus_off OUTPUT_LOW(PIN_B0);OUTPUT_LOW(PIN_B1);

#define segment_minus_on OUTPUT_HIGH(PIN_B0);
#define segment_minus_off OUTPUT_LOW(PIN_B0);

 
#byte TRISB = 0x86
#byte PORTB = 0x06

char rom_ds18b20[9] = {0};
signed int16 temperature = 0;
signed int16 integer = 0;     
signed int16 frac = 0;
signed int16  result = 0;
union typeMyData_T{
   signed int16 full;
   struct    {
      signed int8 TL ;//
      signed int8 TH;//
   };
} TEMPERATURA;

//////////////////прототипы/////////////////////

/* инициализация датчика температуры ds18b20*/

void one_way_init(void)
{
OUTPUT_LOW(PIN_B5);//прижимаем в ноль
delay_us(480);//ждем 480 микросекунд для формирования RESET импульса
bit_set(TRISB,5);//отпускаем линию (пин на вход)
while( !bit_test (PORTB, 5))delay_cycles (1);
while( bit_test (PORTB, 5))delay_cycles (1);
while( !bit_test (PORTB, 5))delay_cycles (1);
}

/* формирование слота 0 */

void one_way_slot_low(void)
{
OUTPUT_LOW(PIN_B5);//прижимаем в ноль
delay_us(30);//ожидаем 30 микросекунд для гарантированой передачи 0-ля
bit_set(TRISB,5);//отпускаем линию (пин на вход)
}

/* формирование слота 1 */

void one_way_slot_high(void)
{
OUTPUT_LOW(PIN_B5);//прижимаем в ноль
delay_us(1);// не знаю зачем, по документации так надо
bit_set(TRISB,5);//отпускаем линию (пин на вход) / формируем высокий уровень на пине
delay_us(30);// ожидаем 30 микросекунд для гарантированой передачи 1-ы
}

/* формирование слота чтения*/

int1 one_way_read_bit(void)
{
OUTPUT_LOW(PIN_B5);//прижимаем в ноль
delay_us(1);// не знаю зачем, по документации так надо
bit_set(TRISB,5);//отпускаем линию (пин на вход) 
delay_us(10);
return( bit_test (PORTB, 5) );
}


/* передача произвольного байта младшим битом вперед */

void one_way_write(char write)
{
unsigned int8 i=0;
for(i=0;i<=7;i++)
	{
	if( bit_test (write, i) == 1) 
		{
		one_way_slot_high();
		}
	else
		{
		one_way_slot_low();
		}
	}
}

/* прием произвольного байта младшим битом вперед */

char one_way_read(void)
{
unsigned int8 i;
char read_byte;
for(i=0;i<=7;i++)
	{
	if( one_way_read_bit() == 1)
		{
		bit_set(read_byte,i);
		}
	else
		{
		bit_clear(read_byte,i);
		}
	}
return(read_byte);
}
/* запустикаем измерение температуры */
signed int16 one_way_convert(void)
{
signed int32 zz;
one_way_init();
one_way_write(0xcc);
one_way_write(0x44);
while( !one_way_read_bit() )delay_cycles (1);
one_way_init();
one_way_write(0xcc);
one_way_write(0xbe);
TEMPERATURA.TL = one_way_read();
TEMPERATURA.TH = one_way_read();
one_way_init();
zz=TEMPERATURA.full;
TEMPERATURA.full=(zz*625)/1000;
return TEMPERATURA.full;
}
/*получить показания датчика*/
/* прочитать ROM датчика и вернуть результат измерения (весь ром хранится в массиве rom_ds18b20[9]) */
void one_way_read_rom(void)
{
unsigned int8 ii;	
one_way_init();
one_way_write(0xcc);
one_way_write(0xbe);
for(ii=0;ii<=9;ii++)
	{
	rom_ds18b20[ii] = one_way_read();
	}
one_way_init();
}

void znak(int8 bnbn)
{
	switch (bnbn)
		{
		case 0: segment_A_on;segment_B_on;segment_C_on;segment_D_on;segment_E_on;segment_F_on;segment_G_off;break;
		case 1: segment_B_on;segment_C_on;segment_D_off;segment_E_off;segment_A_off;segment_F_off;segment_g_off;break;
		case 2: segment_A_on;segment_B_on;segment_G_on;segment_E_on;segment_D_on;segment_C_off;segment_F_off;break;
		case 3: segment_A_on;segment_B_on;segment_G_on;segment_C_on;segment_D_on;segment_E_off;segment_F_off;break;
		case 4: segment_F_on;segment_B_on;segment_G_on;segment_C_on;segment_A_off;segment_D_off;segment_E_off;break;
		case 5: segment_A_on;segment_F_on;segment_G_on;segment_C_on;segment_D_on;segment_B_off;segment_E_off;break;
		case 6: segment_A_on;segment_F_on;segment_E_on;segment_G_on;segment_D_on; segment_C_on;segment_B_off;break;
		case 7: segment_A_on;segment_B_on;segment_C_on;segment_G_off;segment_D_off;segment_E_off;segment_F_off;break;
		case 8: segment_A_on;segment_B_on;segment_C_on;segment_D_on;segment_E_on;segment_F_on;segment_G_on;break;
		case 9: segment_A_on;segment_B_on;segment_C_on;segment_D_on;segment_F_on;segment_G_on;segment_E_off;break;
		default: ;
		}
}

void print_f(signed int16 zxz)
{
comm_3=1;comm_2=1;comm_1=1;
if(zxz>0)
	{
	segment_plus_on;
	}
else 
	{
	segment_plus_off;segment_minus_on;zxz=zxz*(-1);
	}

	znak(zxz/100);
	comm_1=0;
	delay_ms(1);
	comm_1=1;

	znak(zxz/10);
	comm_2=0;
	segment_dp=1;	
	delay_ms(1);
	comm_2=1;
	segment_dp=0;

	znak(zxz%10);
	comm_3=0; 
	delay_ms(1);
	comm_3=1;
} 

///////////////////ПРЕРЫВНИЯ////////////////////

#INT_TIMER1
void  TIMER1_isr(void) 
{

}

#INT_TIMER2
void  TIMER2_isr(void) 
{

}

#INT_TIMER0
void  TIMER0_isr(void) 
{

}
//////////////////////////////////////////////////
void main()
{
int8 vb=0;;
	setup_adc_ports(NO_ANALOGS); 
	setup_adc(ADC_OFF); 
	setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1|RTCC_8_bit);		//128 us overflow
	setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);		//32,7 ms overflow
	setup_timer_2(T2_DIV_BY_4,49,1);		//100 us overflow, 100 us interrupt
	OUTPUT_A(0x00);
	OUTPUT_B(0x00);
	OUTPUT_C(0x00);
	while(1)
	print_f(60);
	enable_interrupts(INT_TIMER1);
	enable_interrupts(INT_TIMER2);
	enable_interrupts(INT_TIMER0);
//	enable_interrupts(GLOBAL);
	while(TRUE)
	{
one_way_convert();
one_way_read_rom();
	}
}
__________________
всех на волю
gromovi вне форума   Ответить с цитированием
Старый 06.03.2017, 19:23   #2
Guaho
Senior Member
 
Регистрация: 28.06.2013
Возраст: 45
Сообщений: 636
Вес репутации: 1416/35
Guaho has much to be proud ofGuaho has much to be proud ofGuaho has much to be proud ofGuaho has much to be proud ofGuaho has much to be proud ofGuaho has much to be proud ofGuaho has much to be proud ofGuaho has much to be proud ofGuaho has much to be proud ofGuaho has much to be proud of
По умолчанию Re: pic16f886

Цитата:
Сообщение от gromovi Посмотреть сообщение
...Чем лыжи мазать?...
Более подробной информацией - где "загораются" цифры - на ЖК или на LED индикаторе, или, может быть, на небе? Где схема? Слишком мало информации.
Guaho вне форума   Ответить с цитированием
Старый 06.03.2017, 19:33   #3
gromovi
Senior Member
 
Регистрация: 17.02.2009
Адрес: где-то там
Возраст: 34
Сообщений: 1,336
Вес репутации: 381/47
gromovi is just really nicegromovi is just really nicegromovi is just really nicegromovi is just really nice
По умолчанию Re: pic16f886

динамическая индикация, трех разрядный семисегментный индикатор.
компилятор CCS PIC
схема включения
Код:
#define segment_A_on  OUTPUT_HIGH(PIN_A6); 
#define segment_B_on  OUTPUT_HIGH(PIN_C3);
#define segment_C_on  OUTPUT_HIGH(PIN_C5);
#define segment_D_on  OUTPUT_HIGH(PIN_C7);
#define segment_E_on  OUTPUT_HIGH(PIN_A5);
#define segment_F_on  OUTPUT_HIGH(PIN_C0);
#define segment_G_on  OUTPUT_HIGH(PIN_C4);
//#define segment_dp_on  OUTPUT_HIGH(PIN_C6);

#define segment_A_off  OUTPUT_LOW(PIN_A6); 
#define segment_B_off  OUTPUT_LOW(PIN_C3);
#define segment_C_off  OUTPUT_LOW(PIN_C5);
#define segment_D_off  OUTPUT_LOW(PIN_C7);
#define segment_E_off  OUTPUT_LOW(PIN_A5);
#define segment_F_off  OUTPUT_LOW(PIN_C0);
#define segment_G_off  OUTPUT_LOW(PIN_C4);
//#define segment_dp_off  OUTPUT_LOW(PIN_C6);
общий вывод разрядов
//#define comm_1_off  OUTPUT_HIGH(PIN_A7);
//#define comm_2_off  OUTPUT_HIGH(PIN_C1);
//#define comm_3_off  OUTPUT_HIGH(PIN_C2);

//#define comm_1_on  OUTPUT_LOW(PIN_A7);
//#define comm_2_on  OUTPUT_LOW(PIN_C1);
//#define comm_3_on  OUTPUT_LOW(PIN_C2);
общий вывод разрядов изменен на вид
#byte PORTA = 0x05
#bit  comm_1 = 0x05.7

#byte TRISC = 0x87
#byte PORTC = 0x07
#bit  segment_dp = 0x07.6
#bit  comm_2 = 0x07.1
#bit  comm_3 = 0x07.2
__________________
всех на волю

Последний раз редактировалось gromovi; 06.03.2017 в 19:47.
gromovi вне форума   Ответить с цитированием
Старый 06.03.2017, 22:15   #4
gromovi
Senior Member
 
Регистрация: 17.02.2009
Адрес: где-то там
Возраст: 34
Сообщений: 1,336
Вес репутации: 381/47
gromovi is just really nicegromovi is just really nicegromovi is just really nicegromovi is just really nice
По умолчанию Re: pic16f886

пошел в обход
в мэйне
Код:
while(1)
{
	for(vb=-125;vb<=125;vb++)
	{
	for(vr=0;vr<=10;vr++)print_f(vb);
	}
}
вывод
Код:
void znak(int8 bnbn)
{
	switch (bnbn)
		{
		case 0: segment_A_on;segment_B_on;segment_C_on;segment_D_on;segment_E_on;segment_F_on;segment_G_off;break;
		case 1: segment_B_on;segment_C_on;segment_D_off;segment_E_off;segment_A_off;segment_F_off;segment_g_off;break;
		case 2: segment_A_on;segment_B_on;segment_G_on;segment_E_on;segment_D_on;segment_C_off;segment_F_off;break;
		case 3: segment_A_on;segment_B_on;segment_G_on;segment_C_on;segment_D_on;segment_E_off;segment_F_off;break;
		case 4: segment_F_on;segment_B_on;segment_G_on;segment_C_on;segment_A_off;segment_D_off;segment_E_off;break;
		case 5: segment_A_on;segment_F_on;segment_G_on;segment_C_on;segment_D_on;segment_B_off;segment_E_off;break;
		case 6: segment_A_on;segment_F_on;segment_E_on;segment_G_on;segment_D_on; segment_C_on;segment_B_off;break;
		case 7: segment_A_on;segment_B_on;segment_C_on;segment_G_off;segment_D_off;segment_E_off;segment_F_off;break;
		case 8: segment_A_on;segment_B_on;segment_C_on;segment_D_on;segment_E_on;segment_F_on;segment_G_on;break;
		case 9: segment_A_on;segment_B_on;segment_C_on;segment_D_on;segment_F_on;segment_G_on;segment_E_off;break;
		default: ;
		}
}

void print_f(signed int16 zxz)
{
if(zxz>0)//если число положительное то вывести +
	{
	segment_plus_on;
	}
else // иначе отрицательное выводим -
	{
	segment_plus_off;segment_minus_on;
	}
zxz=(unsigned int16)zxz; // приводим к целочисленному беззнаковому типу
//выводим первый разряд - сотни
	znak(zxz/100);
	comm_1=0;
	delay_ms(1);
	comm_1=1;
//выводим второй разряд - десятки
	znak((zxz%100)/10);
	comm_2=0;	
	delay_ms(1);
	comm_2=1;
//выводим третий разряд - еденицы	
	znak(zxz%10);
	comm_3=0; 
	delay_ms(1);
	comm_3=1;
//выводим запятую, в моем случае относится к 2-му разряду
	segment_A_off;segment_B_off;segment_C_off;segment_D_off;segment_E_off;segment_F_off;segment_G_off;//чистим все сегменты
	segment_dp=1;//включаем точку
	comm_2=0;//включаем общий для второго разряда
	delay_ms(1);//даем посветиться
	comm_2=1;//выключаем общий второго разряда
	segment_dp=0;//очищаем точку
}
результат вывод от -12,5 до +12,5(-125...+125) с шагом 0,1 (1)
разобраться почему вывод точки в 2-ой разряд его очищает мне не удалось.
Пин используемый для точки соединен с усартом, но он после ресета выкл.
может ток большой получается? и наприжение на пине падает? хрен его знает.
pdf заменить 3gp
Вложения
Тип файла: pdf VID_20170306_221829.pdf (1.93 Мб, 3 просмотров)
__________________
всех на волю

Последний раз редактировалось gromovi; 06.03.2017 в 22:28.
gromovi вне форума   Ответить с цитированием
Старый 07.03.2017, 05:13   #5
Марк
Senior Member
 
Аватар для Марк
 
Регистрация: 18.08.2007
Адрес: МО
Возраст: 57
Сообщений: 1,873
Вес репутации: 2415/79
Марк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond repute
По умолчанию Re: pic16f886

RMW
Выводить нужно буфер, а не разряды.
Марк вне форума   Ответить с цитированием
Старый 07.03.2017, 16:03   #6
gromovi
Senior Member
 
Регистрация: 17.02.2009
Адрес: где-то там
Возраст: 34
Сообщений: 1,336
Вес репутации: 381/47
gromovi is just really nicegromovi is just really nicegromovi is just really nicegromovi is just really nice
По умолчанию Re: pic16f886

Не понял Вас. Что такое RMW?
Буфер... создаем три переменных, называем это буфер, и вот их(переменные ) выводим?
__________________
всех на волю
gromovi вне форума   Ответить с цитированием
Старый 07.03.2017, 18:22   #7
Марк
Senior Member
 
Аватар для Марк
 
Регистрация: 18.08.2007
Адрес: МО
Возраст: 57
Сообщений: 1,873
Вес репутации: 2415/79
Марк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond repute
По умолчанию Re: pic16f886

В 10...16 пиках нет возможности читать выходную защелку, поэтому при битовых операциях на портах читаются выходные пины, затем модифицируется соответствующий разряд и весь байт записывается в защелку порта (процедура RMW - чтение-модификация-запись). Так выполняются обычные битовые операции типа bsf/bcf.
Из-за этого возникает эффект перезаписи состояния пина, который может оказаться нагружен и выходное напряжение будет ниже порога 1 (или выше нуля, если нагрузка от питания) для входных цепей на этом пине (особенно если там по входу триггер Шмитта).
Чтобы избежать оного эффекта, нужно все операции проводить на буферном регистре в ОЗУ, а в порт выводить сразу весь буфер.
Марк вне форума   Ответить с цитированием
Старый 08.03.2017, 20:22   #8
Sergey K
Senior Member
 
Регистрация: 23.10.2008
Адрес: Киев
Возраст: 34
Сообщений: 234
Вес репутации: 422/38
Sergey K is just really niceSergey K is just really niceSergey K is just really niceSergey K is just really niceSergey K is just really nice
По умолчанию Re: pic16f886

Еще добавлю, в коде подряд идет изменение битов в одном байте:
Код:
#bit  segment_dp = 0x07.6
#bit  comm_2 = 0x07.1
...
comm_2=0;  //вот с этого места какая то не понятка цифра загорается и при следующей команде тухнет 
segment_dp=1;
Если я правильно помню, то команда чтение-модификация-запись выполняется частично в "фоне", и в момент когда выполняется вторая команда на модификацию бита, первая команда еще не успела сохранить в регистре измененное значение, поэтому предыдущий бит может принять значение, который он имел до выполнения предыдущей команды. Поэтому рекомендовалось между изменением битов в одном байте делать минимум одну любую команду, кроме bsf/bcf, например nop. Либо, как сказали выше, в ОЗУ выставить биты в нужное состояние и одним махом записать в регистр.
Sergey K вне форума   Ответить с цитированием
Старый 11.03.2017, 20:53   #9
gromovi
Senior Member
 
Регистрация: 17.02.2009
Адрес: где-то там
Возраст: 34
Сообщений: 1,336
Вес репутации: 381/47
gromovi is just really nicegromovi is just really nicegromovi is just really nicegromovi is just really nice
По умолчанию Re: pic16f886

Марк спасибо огромное за разжевывание.
__________________
всех на волю
gromovi вне форума   Ответить с цитированием
Старый 11.03.2017, 20:54   #10
gromovi
Senior Member
 
Регистрация: 17.02.2009
Адрес: где-то там
Возраст: 34
Сообщений: 1,336
Вес репутации: 381/47
gromovi is just really nicegromovi is just really nicegromovi is just really nicegromovi is just really nice
По умолчанию Re: pic16f886

Цитата:
Сообщение от Sergey K Посмотреть сообщение
Поэтому рекомендовалось между изменением битов в одном байте делать минимум одну любую команду.
Да Вы правы, работает.
__________________
всех на волю
gromovi вне форума   Ответить с цитированием
Старый 11.03.2017, 20:56   #11
gromovi
Senior Member
 
Регистрация: 17.02.2009
Адрес: где-то там
Возраст: 34
Сообщений: 1,336
Вес репутации: 381/47
gromovi is just really nicegromovi is just really nicegromovi is just really nicegromovi is just really nice
По умолчанию Re: pic16f886

закончилось все так
Код:
void print_f(signed int16 zxz)
{
	if(zxz>0)
		{
		PORTB=0b00000011;
		}
	else
		{
		PORTB=0b00000001; 
		}
//выводим первый разряд - сотни
	switch (zxz/100)
		{
		case 0: PORTA=0b01100000; PORTC=0b10101111;break;
		case 1: PORTA=0b00000000; PORTC=0b00101110;break;			 	
		case 2: PORTA=0b01100000; PORTC=0b10011110;break;
		case 3: PORTA=0b01000000; PORTC=0b10111110;break;
		case 4: PORTA=0b00000000; PORTC=0b00111111;break;
		case 5: PORTA=0b01000000; PORTC=0b10110111;break;		
		case 6: PORTA=0b01100000; PORTC=0b10110111;break;
		case 7: PORTA=0b01000000; PORTC=0b00101110;break;
		case 8: PORTA=0b01100000; PORTC=0b10111111;break;
		case 9: PORTA=0b01000000; PORTC=0b10111111;break;
		default: 
		}
	delay_ms(1);
//выводим второй разряд - десятки
	switch ((zxz%100)/10)
		{
		case 0: PORTA=0b11100000; PORTC=0b11101101;break;
		case 1: PORTA=0b10000000; PORTC=0b01101100;break;			 	
		case 2: PORTA=0b11100000; PORTC=0b11011100;break;
		case 3: PORTA=0b11000000; PORTC=0b11111100;break;
		case 4: PORTA=0b10000000; PORTC=0b01111101;break;
		case 5: PORTA=0b11000000; PORTC=0b11110101;break;		
		case 6: PORTA=0b11100000; PORTC=0b11110101;break;
		case 7: PORTA=0b11000000; PORTC=0b01101100;break;
		case 8: PORTA=0b11100000; PORTC=0b11111101;break;
		case 9: PORTA=0b11000000; PORTC=0b11111101;break;
		default: 
		}	
	delay_ms(1);
//выводим третий разряд - еденицы	
	switch (zxz%10)
		{
		case 0: PORTA=0b11100000; PORTC=0b10101011;break;
		case 1: PORTA=0b10000000; PORTC=0b00101010;break;			 	
		case 2: PORTA=0b11100000; PORTC=0b10011010;break;
		case 3: PORTA=0b11000000; PORTC=0b10111010;break;
		case 4: PORTA=0b10000000; PORTC=0b00111011;break;
		case 5: PORTA=0b11000000; PORTC=0b10110011;break;		
		case 6: PORTA=0b11100000; PORTC=0b10110011;break;
		case 7: PORTA=0b11000000; PORTC=0b00101010;break;
		case 8: PORTA=0b11100000; PORTC=0b10111011;break;
		case 9: PORTA=0b11000000; PORTC=0b10111011;break;
		default: 
		}
	delay_ms(1);
PORTC=0b10111111;
}
не читабельно, но работает четко.
__________________
всех на волю
gromovi вне форума   Ответить с цитированием
Старый 12.03.2017, 04:10   #12
CERGEI
Senior Member
 
Аватар для CERGEI
 
Регистрация: 11.07.2009
Возраст: 35
Сообщений: 514
Вес репутации: 183/36
CERGEI has a spectacular aura aboutCERGEI has a spectacular aura about
По умолчанию Re: pic16f886

Цитата:
Сообщение от gromovi Посмотреть сообщение
не читабельно, но работает четко.
Откроешь проект через месяц и будет вспоминать что за нолики и единички
CERGEI вне форума   Ответить с цитированием
Старый 12.03.2017, 06:51   #13
Марк
Senior Member
 
Аватар для Марк
 
Регистрация: 18.08.2007
Адрес: МО
Возраст: 57
Сообщений: 1,873
Вес репутации: 2415/79
Марк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond repute
По умолчанию Re: pic16f886

Это просто дешифратор, а case показывает его значение.
Вспоминать ничего не требуется.
Марк вне форума   Ответить с цитированием
Старый 12.03.2017, 22:31   #14
gromovi
Senior Member
 
Регистрация: 17.02.2009
Адрес: где-то там
Возраст: 34
Сообщений: 1,336
Вес репутации: 381/47
gromovi is just really nicegromovi is just really nicegromovi is just really nicegromovi is just really nice
По умолчанию Re: pic16f886

Цитата:
Сообщение от CERGEI Посмотреть сообщение
Откроешь проект через месяц и будет вспоминать что за нолики и единички
в проекте дефайны по пинам сохранены как коменты, коими можно воспользоваться для освежения памяти.
Хотя Марк прав, нечего там вспоминать.
__________________
всех на волю
gromovi вне форума   Ответить с цитированием
Старый 13.03.2017, 09:41   #15
Greg
Super Moderator
 
Регистрация: 25.02.2007
Адрес: Moscow, ODBS
Сообщений: 6,562
Вес репутации: 4996/152
Greg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond repute
По умолчанию Re: pic16f886

Цитата:
Сообщение от gromovi Посмотреть сообщение
Хотя Марк прав, нечего там вспоминать.
всегда делайте через define. если какие-то значения одинаковые - то будет, что вспомнить (на новой плате).
Greg вне форума   Ответить с цитированием
Старый 13.03.2017, 18:50   #16
gromovi
Senior Member
 
Регистрация: 17.02.2009
Адрес: где-то там
Возраст: 34
Сообщений: 1,336
Вес репутации: 381/47
gromovi is just really nicegromovi is just really nicegromovi is just really nicegromovi is just really nice
По умолчанию Re: pic16f886

Цитата:
Сообщение от Greg Посмотреть сообщение
всегда делайте через define. если какие-то значения одинаковые - то будет, что вспомнить (на новой плате).
Приятные будут воспоминания. Спасибо за совет.
__________________
всех на волю
gromovi вне форума   Ответить с цитированием
Старый 14.03.2017, 03:26   #17
CERGEI
Senior Member
 
Аватар для CERGEI
 
Регистрация: 11.07.2009
Возраст: 35
Сообщений: 514
Вес репутации: 183/36
CERGEI has a spectacular aura aboutCERGEI has a spectacular aura about
По умолчанию Re: pic16f886

Может легче модуль https://ru.aliexpress.com/item/MAX72...d-1f5430f2fd9c

А лучше OLED I2C дисплей, даже на морозе не будет тупить https://ru.aliexpress.com/item/Free-...6805-uR7uBY3Rz
Миниатюры
2017-03-14_08-38-41.png  

Последний раз редактировалось CERGEI; 14.03.2017 в 03:39.
CERGEI вне форума   Ответить с цитированием
Старый 14.03.2017, 15:08   #18
DimaS
Senior Member
 
Регистрация: 05.04.2008
Адрес: Israel
Возраст: 44
Сообщений: 1,314
Вес репутации: 1747/64
DimaS has a brilliant futureDimaS has a brilliant futureDimaS has a brilliant futureDimaS has a brilliant futureDimaS has a brilliant futureDimaS has a brilliant futureDimaS has a brilliant futureDimaS has a brilliant futureDimaS has a brilliant futureDimaS has a brilliant futureDimaS has a brilliant future
По умолчанию Re: pic16f886

Цитата:
Сообщение от CERGEI Посмотреть сообщение

А лучше OLED I2C дисплей, даже на морозе не будет тупить
Часто исползую.
Такие есть не только "просто синие" но и 2-х цветные - верхние 16 строк желтые, остальные синие. Очень удобно, вверху загловок (обычно инверсно - черными буквами на желтом фоне, а ниже синими по черному уже текст.
DimaS вне форума   Ответить с цитированием
Старый 14.03.2017, 15:39   #19
Sergey K
Senior Member
 
Регистрация: 23.10.2008
Адрес: Киев
Возраст: 34
Сообщений: 234
Вес репутации: 422/38
Sergey K is just really niceSergey K is just really niceSergey K is just really niceSergey K is just really niceSergey K is just really nice
По умолчанию Re: pic16f886

Были бы они большего размера.... Дюймов 5... (у меня крупный текст для пожилых работяг)
Sergey K вне форума   Ответить с цитированием
Старый 14.03.2017, 16:57   #20
gromovi
Senior Member
 
Регистрация: 17.02.2009
Адрес: где-то там
Возраст: 34
Сообщений: 1,336
Вес репутации: 381/47
gromovi is just really nicegromovi is just really nicegromovi is just really nicegromovi is just really nice
По умолчанию Re: pic16f886

Вообще склоняюсь больше к АЛ304 и стм8. У меня решающим является размер. Но в сторону oled lcd смотрю с большим интересом. Есть ли они совсем миниатюрные? Ну чтоб три цифры влазило и знак. Высота ну не более 1см. длина 3см... потолок. Желательно 0.8см*2см.
Что бесит у китайцев - отсутсвие размеров и используемого драйвера. После беглого просмотра надо вступать в переписку.
__________________
всех на волю
gromovi вне форума   Ответить с цитированием
Старый 14.03.2017, 17:08   #21
ampersant
Senior Member
 
Аватар для ampersant
 
Регистрация: 26.02.2008
Адрес: IgorV
Сообщений: 2,255
Вес репутации: 4364/100
ampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond repute
По умолчанию Re: pic16f886

нужны крупные буквы? Монитор + проц с выводом в VGA 650*480 или 800*600
ampersant вне форума   Ответить с цитированием
Старый 14.03.2017, 18:12   #22
gromovi
Senior Member
 
Регистрация: 17.02.2009
Адрес: где-то там
Возраст: 34
Сообщений: 1,336
Вес репутации: 381/47
gromovi is just really nicegromovi is just really nicegromovi is just really nicegromovi is just really nice
По умолчанию Re: pic16f886

Цитата:
Сообщение от ampersant Посмотреть сообщение
нужны крупные буквы? Монитор + проц с выводом в VGA 650*480 или 800*600
...совсем миниатюрные... вечер, усталость. понимаю.
__________________
всех на волю
gromovi вне форума   Ответить с цитированием
Старый 14.03.2017, 18:30   #23
ampersant
Senior Member
 
Аватар для ampersant
 
Регистрация: 26.02.2008
Адрес: IgorV
Сообщений: 2,255
Вес репутации: 4364/100
ampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond repute
По умолчанию Re: pic16f886

Цитата:
Сообщение от Sergey K Посмотреть сообщение
Были бы они большего размера.... Дюймов 5... (у меня крупный текст для пожилых работяг)
А так?
ampersant вне форума   Ответить с цитированием
Старый 14.03.2017, 18:49   #24
gromovi
Senior Member
 
Регистрация: 17.02.2009
Адрес: где-то там
Возраст: 34
Сообщений: 1,336
Вес репутации: 381/47
gromovi is just really nicegromovi is just really nicegromovi is just really nicegromovi is just really nice
По умолчанию Re: pic16f886

Цитата:
Сообщение от ampersant Посмотреть сообщение
А так?
становится понятно кому адресовано.
__________________
всех на волю
gromovi вне форума   Ответить с цитированием
Старый 14.03.2017, 19:13   #25
ampersant
Senior Member
 
Аватар для ampersant
 
Регистрация: 26.02.2008
Адрес: IgorV
Сообщений: 2,255
Вес репутации: 4364/100
ampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond repute
По умолчанию Re: pic16f886

Цитата:
Сообщение от gromovi Посмотреть сообщение
становится понятно кому адресовано.
а миниатюризация текста лет через 5-10 естественным образом пройдет
ampersant вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PIC16F886 и прерывания Ruslan Продукция MICROCHIP 31 21.12.2011 15:51
RC0 и pic16f886 Siemens1974 Вопросы начинающих 13 10.03.2011 09:41
PIC16F886 + MPLAB + ICD2 Vovka Продукция MICROCHIP 2 04.10.2010 19:50
Частотомер на PIC16F886 Ruslan Продукция MICROCHIP 38 29.01.2010 11:09
Чем зашить PIC16F886? Vovka Продукция MICROCHIP 12 26.01.2010 20:51


Часовой пояс GMT +3, время: 03:31.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd. Перевод: zCarot