<< Назад к оглавлению
Я плавно переделываю уроки на использование пакета MPLABX и компилятора XC8. Так как старые уже не поддерживается. Тем не менее, вы можете найти старую статью здесь. Так же точно можете скачать компилятор C18 и использовать его. XC8 несколько отличается
Итак, нам понадобится компилятор XC8. Его можно скачать с официального сайта. ссылка, либо же с зеркала зеркало
Итак, создаем проект в MPLABX
Это делается примерно так же как во втором уроке, только выбираем компилятор XC8
Это аналог программе, написанной в уроке 2.#include <p18f2550.h> #include <stdio.h> #include <stdlib.h> #include <p18f2550.h> #include "config.h" void delay(void) { long i; for (i=0;i<100000;i++); } int main(int argc, char** argv) { TRISA = 0; PORTA = 0; while (1) { PORTAbits.RA2 = 1; delay(); PORTAbits.RA2 = 0; delay(); }; return (EXIT_SUCCESS); } |
Сначала запускается функция main(). Идет настройка вывода сигнала через порт А (TRISA=0;) а потом обнуляется этот выход с порта А (PORTA=0); Далее идет бесконечный цикл, в котором мы мигаем лампочкой на порту RA2 и вызываем функцию задержки.
Пока что у вас не скомпилируется этот проект. Потому что в include стоит файл config.h, а мы пока его еще не создали. Там будут конфигурационные биты.
Необходимо их настроить. Для этого идем в Window->PIC memory views->configuration bits
откроется окно, и выставляем там FOSC=INTOSCIO, WDT=OFF, MCLRE=OFF
Щелкаем правой клавишей и Generate Source Code to Output. Эта опция создаст код, необходимый для задачи конфигурационных битов.
Копируем код, создаем файл заголовков config.h и вставляем сгенерированный код в конец файла.
Все обозначений навроде портов и встроенных устройств можно найти в файле p18f2550.h или p18f4550.h, так же всегда вы можете обратиться к ТО на контроллер.
директива #include <p18f2550.h> подключает заголовки для контроллера
#pragma config - Это опять же выбор конфигурационных битов для контроллера. См урок №2.
Эти настройки у нас хранятся теперь в файле config.h
Если вы будете использовать этот код с бутлоадером. А это намного удобнее, нам необходимо сдвинуть его в памяти программы на 0x1000. Если в C18 компиляторе для этого была специальная директива, то теперь для этого служит настройка компилятора. Грубо говоря, теперь когда мы пишем код в XС8, компилятор сам знает где должны быть прерывания, как размечена память, и.т.д. Все, что мы можем сделать - это сделать сдвиг.
Итак, чтобы программа корректно работала с бутлоадером, нужно сделать следующее:
File->Project properties
Потом XC8 global options (не XC8 compiler options, специально на это обращаю внимание), и пишем в поле additional options--CODEOFFSET=1000
Это означает, что весь код компилируется со сдвигом в 0x1000
Если вы захотите вставить код ассемблера в файл Си, то вам нужно будет его заключить между директивами
#asm
#endasm
Файлы проекта: ссылка