Что необходимо для перевода программы с PIC16F84A на новый более мощный и более дешевый PIC16F628? Эти контроллеры совместимы по расположению выводов, но имеют различную внутреннюю структуру организации памяти, поэтому для перевода программы с PIC16F84A на PIC16F628 необходимо обратить внимание на отличия: Биты конфигурации. - Если бит LVP=1, то включен режим низковольтного программирования, при котором вывод RB4 как порт ввода/вывода использоваться не может. - Если в устройстве используется внешний сброс микроконтроллера, то бит MCLRE должен быть "1". - Обратите внимание на биты конфигурации тактового генератора. При инициализации PORTA необходимо отключить компаратор (поскольку в PIC16F84 его нет), ниже приведен пример программы: CLRF PORTA MOVLW 0X07 MOVWF CMCON BCF STATUS, RP1 BSF STATUS, RP0 MOVLW 0x1F MOVWF TRISA В PIC16F84А бит разрешения прерываний от EEPROM памяти EEIE находиться в регистре INTCON<6>, а в PIC16F628 на этом месте бит разрешения прерываний от периферийных модулей PEIE, а бит EEIE лежит в регистре PIE1<7>. Проверьте размещение битов прерываний от EEPROM памяти данных. Регистры работы с EEPROM лежат по разным адресам и разным банкам памяти. Регистры общего назначения в PIC16F84А начинаются с адреса 0Ch/8Ch в банках 0/1 соответственно. В PIC16F628 регистры специального назначения расположены в первых 32 регистрах банков памяти (0-1F для банка 0). Некорректное обращение с этими регистрами может привести к непредсказуемой работе программы. В PIC16F84А область памяти данных 8Ch - CFh отображается на 0Ch - 4Fh. В PIC16F628 отображаемая область памяти данных во всех банках расположена по адресу 70h -7Fh. В PIC16F84А два банка памяти, поэтому бит PR1 (для прямой адресации) и IRP (для косвенной адресации) в регистре STATUS не имели значения. В PIC16F628 четыре банка памяти данных, и указанные биты управляют их выбором. Проверьте использование этих битов в программе.