[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
Здравствуйте.
Программа с PIC16F84 может легко быть перенесена на PIC16F628, но вот на что надо обратить внимание.
1. Биты конфигурации.
- Если бит LVP=1, то включен режим низковольтного программирования и вывод RB4 как порт ввода/вывода использоваться не может.
- Если в устройстве используется внешний сброс микроконтроллера, то бит MCLRE должен быть 1.
- Обратите внимание на биты конфигурации тактового генератора.
2. При инициализации PORTA необходимо отключить компаратор (поскольку в PIC16F84 его нет):
CLRF PORTA
MOVLW 0X07
MOVWF CMCON
BCF STATUS, RP1
BSF STATUS, RP0
MOVLW 0x1F
MOVWF TRISA
3. В PIC16F84 бит разрешения прерываний от EEPROM памяти EEIE находиться в регистре INTCON<6>, в PIC16F628 на этом месте бит разрешения прерываний от периферийных модулей PEIE. Проверьте размещение битов прерываний от EEPROM памяти данных.
4. Регистры общего назначения в PIC16F84 начинаются с адреса 0Ch/8Ch в банках 0/1 соответственно. В PIC16F628 регистры специального назначения расположены в первых 32 регистрах банков памяти (0-1F для банка 0). Некорректное обращение с этими регистрами может привести к непредсказуемой работе программы.
5. В PIC16F84 область памяти данных 8Ch – CFh отображается на 0Ch – 4Fh. В PIC16F628 отображаемая область памяти данных во всех банка расположена по адресу 70h –7Fh.
6. В PIC16F84 два банка памяти, поэтому бит PR1 (для прямой адресации) и IRP (для косвенной адресации) в регистре STATUS не имели значения. В PIC16F628 четыре банка памяти данных, и указанные биты управляют их выбором. Проверьте использование этих битов в программе.
Если чего забыл, дополните.
Программа должна работать нормально, т.к. назначение выводов у этих микроконтроллеров совпадает (у PIC16F628 естественно добавились новые функции).
С уважением, Александр.
E-mail: info@telesys.ru