Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 04.11.2006, 11:26  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию

Начинаю отупевать...

Тестил прототип одного устройства.
Вкратце часы передающие время по rs232.
Решил повторить на ccs .


Код:
#include ‹12F629.h›
#fuses HS,NOMCLR,NOWDT,NOPROTECT
#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_A0,rcv=PIN_A1,bi  ts=9)


#define INTS_PER_SECOND 250    // (20000000/(4*256*256))

BYTE seconds;      // A running seconds counter
BYTE int_count;    // Number of interrupts left before a second has elapsed

STRUCT {
int1 sec;
}flag;

#int_rtcc                          // This function is called every time
void clock_isr() {                 // the RTCC (timer0) overflows (255-›0).
                                   // For this program this is apx 76 times
    if(--int_count==0) {           // per second.
      ++seconds;
      flag.sec=1;
      int_count=INTS_PER_SECOND;

    }

}


void main() {

   BYTE start;

   int_count=INTS_PER_SECOND;
   set_timer0(0);
   setup_counters( RTCC_INTERNAL, RTCC_DIV_16);
   enable_interrupts(INT_RTCC);
   enable_interrupts(GLOBAL);

   do {

   if(flag.sec)printf("%u

",seconds),flag.sec=0;


   } while (TRUE);

}
Собственно тупею здесь , если разделять операторы после IF точкой с запятой то операторы отделенные
от первого после условия выполняются как ELSE.
Если просто запятой то все ОК.
Вроде в "нормальном" С должна точка с запятой быть.
Чей это глюк? Мой или CCS ?


Код:
if(flag.sec)printf("%u

",seconds),flag.sec=0;
Реклама:
dosikus вне форума  
Непрочитано 04.11.2006, 12:17  
avr123-nm-ru
Почётный гражданин KAZUS.RU
 
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
avr123-nm-ru на пути к лучшему
По умолчанию

я советую использовать { } всегда !
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
avr123-nm-ru вне форума  
Непрочитано 04.11.2006, 13:07  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию

Ну а все таки если без скобок?
dosikus вне форума  
Непрочитано 04.11.2006, 15:13  
avr123-nm-ru
Почётный гражданин KAZUS.RU
 
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
avr123-nm-ru на пути к лучшему
По умолчанию

ну ИМХО очевидно ;

так как запятая вроде при объявлении нескольких переменных одного типа используется.
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
avr123-nm-ru вне форума  
Непрочитано 04.11.2006, 15:52  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию

Благодарю....
dosikus вне форума  
Непрочитано 04.11.2006, 21:37  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию

Код:
....................
....................    if(flag.sec)printf("%u

",seconds);flag.sec=0; 
00D7:  BTFSS  31.0
00D8:  GOTO   0E4
00D9:  MOVF   2F,W
00DA:  MOVWF  33
00DB:  MOVLW  1B
00DC:  MOVWF  34
00DD:  GOTO   07D
00DE:  MOVLW  0A
00DF:  MOVWF  35
00E0:  CALL   058
00E1:  MOVLW  0D
00E2:  MOVWF  35
00E3:  CALL   058
00E4:  BCF    31.0
....................
....................
....................    } while (TRUE);
....................
.................... }
00E5:  GOTO   0D7
00E6:  SLEEP
Код:
....................    do {
....................  
....................    if(flag.sec)printf("%u

",seconds),flag.sec=0;
00D7:  BTFSS  31.0
00D8:  GOTO   0E5
00D9:  MOVF   2F,W
00DA:  MOVWF  33
00DB:  MOVLW  1B
00DC:  MOVWF  34
00DD:  GOTO   07D
00DE:  MOVLW  0A
00DF:  MOVWF  35
00E0:  CALL   058
00E1:  MOVLW  0D
00E2:  MOVWF  35
00E3:  CALL   058
00E4:  BCF    31.0
....................
....................
....................    } while (TRUE);
....................
.................... }
00E5:  GOTO   0D7
00E6:  SLEEP

Да.... а я думал что операторы разделяються точкой с запятой.....

Походу это все же глюк
dosikus вне форума  
Непрочитано 04.11.2006, 22:31  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию

Да ...чудеса ...
Это работает.

Код:
If(flag.sec)
{
 printf("%u

",seconds); 
 flag.sec=0;
}
dosikus вне форума  
Непрочитано 04.11.2006, 23:43  
avr123-nm-ru
Почётный гражданин KAZUS.RU
 
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
avr123-nm-ru на пути к лучшему
По умолчанию

так как рекомендовано на:
avr123.nm.ru/05.htm - "Си для МК"
ВСЕГДА работает !
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
avr123-nm-ru вне форума  
Непрочитано 04.11.2006, 23:47  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию

Реклама ты наша ,ходячая....
dosikus вне форума  
Непрочитано 07.11.2006, 20:00  
moyaproba
Временная регистрация
 
Регистрация: 14.09.2006
Сообщений: 58
Сказал спасибо: 0
Сказали Спасибо 5 раз(а) в 1 сообщении
moyaproba на пути к лучшему
По умолчанию

Помогите, почему то из флеш памяти не читает, как хотелось:
Flash memory after being erased: FF FF FF FF FF FF FF FF
Flash memory after being written: 01 02 03 04 05 06 07 08
на самом деле:
Flash memory after being erased: FF FF FF FF FF FF FF FF
Flash memory after being written: FF FF FF FF FF FF FF FF
в чем глюк? МОжет протеуса?
Код:
#include ‹18F452.h› 
#fuses HS,NOWDT,PUT,BROWNOUT,NOLVP, NOPROTECT, CPB 
#use delay(clock=10000000) 
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, ERRORS) 

#define ROM_ADDR  0x4000 

//==================================== 
void main(void) 
{ 
int8 i; 
int8 write_data[8] = {1,2,3,4,5,6,7,8}; 
int8 read_data[8]  = {0,0,0,0,0,0,0,0}; 

printf("Flash write size = %u\n\r", getenv("FLASH_WRITE_SIZE")); 
printf("\n\r"); 

// Erase flash memory. 
erase_program_eeprom(ROM_ADDR); 

// Read flash memory. 
read_program_memory(ROM_ADDR, read_data, sizeof(read_data)); 

// Display it, to show it's erased. 
printf("Flash memory after being erased: "); 
for(i = 0; i ‹ sizeof(read_data); i++) 
    printf("%X ", read_data[i]); 
printf("\n\r"); 
printf("\n\r"); 

// Now write 8 bytes. 
write_program_memory(ROM_ADDR, write_data, sizeof(write_data)); 

// Read them back. 
read_program_memory(ROM_ADDR, read_data, sizeof(read_data)); 

// Display data read from Flash memory. 
printf("Flash memory after being written: "); 
for(i = 0; i ‹ sizeof(read_data); i++) 
    printf("%X ", read_data[i]); 
printf("\n\r"); 
printf("\n\r"); 

while(1); 
}
moyaproba вне форума  
 

Закладки
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
i2c+ccs pic Gladkih Микроконтроллеры, АЦП, память и т.д 9 18.04.2016 22:17
Вопрос по CCS PIC Gladkih Микроконтроллеры, АЦП, память и т.д 46 03.07.2010 10:00
CCS PIC C 4.020 fmssp Микроконтроллеры, АЦП, память и т.д 11 11.02.2009 12:17
CCS PIC C v.4.020 mishastik Микроконтроллеры, АЦП, память и т.д 0 23.01.2007 12:52
Компилятор CCS PIC C ver. 4.016 Full +лекарство fmssp Proteus, KiCAD и другие ECAD 1 04.12.2006 13:13


Часовой пояс GMT +4, время: 22:35.


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