Pic16f887 компиляция Си кода

Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить
Аватара пользователя
RoboC
Мудрый кот
Сообщения: 1795
Зарегистрирован: Ср апр 04, 2012 09:55:53
Откуда: Северодонецк
Контактная информация:

Pic16f887 компиляция Си кода

Сообщение RoboC »

Как заставить компилятор Hi-tech компилировать "SybolT_1= 1" без его дурацкой оптимизации(так же как SybolT_2= 3 ) ?

Код: Выделить всё

;main.c: 379: SybolT_2= 3;
	movlw	(03h)
	bsf	status, 5	;RP0=1, select bank3
	bsf	status, 6	;RP1=1, select bank3
	movwf	(??_main+0)^0180h+0
	movf	(??_main+0)^0180h+0,w
	bcf	status, 5	;RP0=0, select bank0
	bcf	status, 6	;RP1=0, select bank0
	movwf	(_SybolT_2)
	line	380
	
l11273:	
;main.c: 380: SybolT_1= 1;
	clrf	(_SybolT_1)
	bsf	status,0
	rlf	(_SybolT_1),f
	line	381
У того, кто делает — получается редко. У того, кто не делает — не получается никогда.
Реклама
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Pic16f887 компиляция Си кода

Сообщение Аlex »

Где Вы увидели оптимизацию ? Байт сбрасывается и вдвигается в него бит CARRY. Всё нормально...
Реклама
Аватара пользователя
RoboC
Мудрый кот
Сообщения: 1795
Зарегистрирован: Ср апр 04, 2012 09:55:53
Откуда: Северодонецк
Контактная информация:

Re: Pic16f887 компиляция Си кода

Сообщение RoboC »

SybolT_2= 3; 8 asm инструкций
SybolT_1= 1; 3 asm инструкции

И правда,где тут оптимизация, при прерывании после инструкции clrf (_SybolT_1) я получаю в обработчике прерываний на переменной SybolT_1 "0", вместо "1" :) . Причем, компилятор обрабатывает так только единицу - экономит машинные слова :wink: .
У того, кто делает — получается редко. У того, кто не делает — не получается никогда.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Pic16f887 компиляция Си кода

Сообщение Аlex »

при прерывании после инструкции clrf (_SybolT_1) я получаю в обработчике прерываний на переменной SybolT_1 "0", вместо "1"
А фраза "Атомарный доступ" Вам ни о чём не говорит ? :)
Реклама
Эиком - электронные компоненты и радиодетали
Ответить

Вернуться в «PIC»