Сообщение от sergei1403
|
PIC новый, при считывании пишет все 0000
|
Чистый ОДНОКРАТНЫЙ МК PIC12C имеет в памяти 0x3ff, включите чтение программатором БЕЗ МК, у вас возможны 2 варианта:
1) не исправен программатор, читает 0x000 и без вставленного МК.
2) ваш МК или неисправен или уже закрыт битом защиты
Когда добьётесь считывания 0x3ff по для проверки пропишите какой либо PIC12F PIC16F, а потом один байт в конце памяти PIC12С, убедится что PIC пишется вашим программатором.
Сообщение от yellow87
|
DISABLE_INTERRUPTS(GLOBAL);
ENABLE_INTERRUPTS(INT_TIMER0);
EXT_INT_EDGE(0, H_TO_L);
и директивы объявления прерываний:
#int_ext
#int_timer0
|
потому чтов PIC16C509 НЕТ прерываний.. вы вообще даташиты читаете перед тем как использовать МК?...
Ведь на первой страничке всегда указывается что вообще есть в данном МК. О прерываниях там не сказано, далее в тексте есть карта памяти МК, и там так же нет адреса вектора прерывания... а вы хотите их использовать...
Сообщение от yellow87
|
Зачем на другой контроллер переходить? Давайте с этим разберёмся!
|
для выполнения кода по таймеру я делал так.
Допустим в таймер для установки требуемого периода грузим число 0x5f, тогда делаем проверку
if (tmr0‹0x5f){//проверяем переполнение
tmr0=tmr0+0x5f;//грузим новый период
//исполняемый код
}
то есть произошло переполнение и пошёл отсчёт дальше, ведь неизвестно сколько времени будет тратиться на прверку и таймер сможет проскочить число "0x00" как в вашем примере.
А в этом случае сработает по переполнению. И нужно следить что бы время выполнения функции по переполнению не было больше чем период таймера.
И проверяйте такие вещи в симуляторе.