MPLAB X IDE
Re: MPLAB X IDE
Ради интереса установил MPASM X IDE v5.35 и при компиляции получил сообщение, что:
MPASM is not supported on 64 bit Operating Systems. Please consider migrating your project "QWERTY" configuration "default" to XC8 Assembler or continue to use a previously released IDE.
Видно в этом вся "закавыка" и была. Ну да ладно, для меня пока и MPLAB X IDE v2.35 с избытком хватит. За совет спасибо, обязательно изучим рекомендованный ресурс.
MPASM is not supported on 64 bit Operating Systems. Please consider migrating your project "QWERTY" configuration "default" to XC8 Assembler or continue to use a previously released IDE.
Видно в этом вся "закавыка" и была. Ну да ладно, для меня пока и MPLAB X IDE v2.35 с избытком хватит. За совет спасибо, обязательно изучим рекомендованный ресурс.
- КРАМ
- Друг Кота
- Сообщения: 25155
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: MPLAB X IDE
[uquote="veresk132",url="/forum/viewtopic.php?p=4225624#p4225624"]Ради интереса установил MPASM X IDE v5.35 и при компиляции получил сообщение, что:
MPASM is not supported on 64 bit Operating Systems.[/uquote]
Вам это сообщение как то помешало работать? У вас не собрался работающий проект? Или вам не о чем поговорить?
Милейший, у меня примерно полсотни 8-битных коммерческих проектов сейчас собраны именно на 5.35 и только 16-разрядные на 5.45 и то лишь потому, что некоторые из них сделаны на новейших чипах поддерживаемых в полной мере, начиная с 5.45 и старше. Всё на АСМе.
Один из них, который есть на домашнем компе:

MPASM is not supported on 64 bit Operating Systems.[/uquote]
Вам это сообщение как то помешало работать? У вас не собрался работающий проект? Или вам не о чем поговорить?
Милейший, у меня примерно полсотни 8-битных коммерческих проектов сейчас собраны именно на 5.35 и только 16-разрядные на 5.45 и то лишь потому, что некоторые из них сделаны на новейших чипах поддерживаемых в полной мере, начиная с 5.45 и старше. Всё на АСМе.
Один из них, который есть на домашнем компе:
Re: MPLAB X IDE
Написал альтернативный кряк(оптимизация Pro) для компиляторов XC8(PIC/AVR)/XC16/XC32.
Ничего патчить не нужно, работает даже в Linux\Win11
Ссыль.
Ничего патчить не нужно, работает даже в Linux\Win11
Ссыль.
Re: MPLAB X IDE
пару слов, как и что делает кряк?
в частности вот это
в частности вот это
Код: Выделить всё
...
sudo update-binfmts --install xclm-hack /opt/microchip/xc8/v2.36/bin/xclm-hack --magic `(hexdump -e '16/1 "%02x"' -n 64 /opt/microchip/xc8/v2.36/bin/xclm | sed -e 's/../\\\x&/g')`
sudo service binfmt-support start
Енот - это кот, только инкогнито!
p.s. держитесь обоими руками, а то прорвет...
p.s. держитесь обоими руками, а то прорвет...
Re: MPLAB X IDE
sunjob, binfmts работает как демон(служба в фоне), оно отслеживает любой указанный формат при исполнении его, если в заголовке ELF(исполняемого линукс) файла найдет HEX код, который указан в формате ("x7f\x45\....") -- оно будет запускать/заменять любой сервис, подменяя этот файл на тот, который указали(или например исполнять этот файл через какой-нибудь отладчик, к примеру).
У меня binfmts работал для запуска 32битных исполняемых файлов в 64бит системе(можете найти в интернете инструкцию) - практически также работает как этот кряк.
У меня binfmts работал для запуска 32битных исполняемых файлов в 64бит системе(можете найти в интернете инструкцию) - практически также работает как этот кряк.
Re: MPLAB X IDE
спасибо!
Енот - это кот, только инкогнито!
p.s. держитесь обоими руками, а то прорвет...
p.s. держитесь обоими руками, а то прорвет...
Re: MPLAB X IDE
Здраствуйте уважаемые коты, при изучении MPLAB X IDE вроде начало получатся, уже накидал несколько функций кода, вроде всё работало пока не начал объединять всё воедино. А именно написал функцию Delay_ms(), всё ок, запустил прерывания от таймера тоже всё ОК. Когда сложил всё вместе и тут всё поплыло, если работает Delay_ms() то программа вылетает в рестарт или работает не корректно, при использовании цикла for(i=0;i<800000;i++) (long i) тоже начинает работать некорректно(почему то цикл ускоряется раз в 10
). Стоит выключить прерывание от таймера и всё начинает работать как надо 0_о 
Ссылка на проект: https://drive.google.com/file/d/12bHBic ... sp=sharing
Если надо могу выложить в виде текста на странице, там просто несколько файлов, объединённых в один проект.
Добавлено after 31 minute 44 seconds:
Цикл пауза реализован был так:
Ссылка на проект: https://drive.google.com/file/d/12bHBic ... sp=sharing
Если надо могу выложить в виде текста на странице, там просто несколько файлов, объединённых в один проект.
Добавлено after 31 minute 44 seconds:
Цикл пауза реализован был так:
Код: Выделить всё
void main()
Init();
while(1)
{
for(i=0;i<800000;i++){}
LED1INV();
}
Re: MPLAB X IDE
alex_, что-то вы намудрили с таймером.
Там проще некуда, желательно делать как все делают, прерывание в скажем 1мс записывать в long переменную millis.
Например как устроен таймер у меня в main(я не разделял всё, т.к. там несколько строчек)
Помимо полноценной функции _delay_ms тут есть еще _millis которой можно сравнивать время(например она нужна для работы с кнопками(дребезг и задержка нажатия))
У меня частота прямая 8Mhz, Если у Вас прескаляр, то нужно делить еще это значение.
Учился по этой ссылке
http://zattouka.net/GarageHouse/micon/M ... RtoLED.htm
(Google переводчик Вам в помощь)
Там проще некуда, желательно делать как все делают, прерывание в скажем 1мс записывать в long переменную millis.
Например как устроен таймер у меня в main(я не разделял всё, т.к. там несколько строчек)
Код: Выделить всё
....
....
#define _XTAL_FREQ 8000000 // Required for Timer1(millis,delay) and Timer2(PWM) (specify clock 8MHz)
#include <xc.h>
volatile unsigned long millis = 0;
void __interrupt() isr(void) {
if (TMR1IF) {
TMR1IF = 0; //Clear interrupt Timer1 flag
unsigned short tpr = _XTAL_FREQ/1000;
tpr = 0xFFFF - tpr;
TMR1H = tpr >> 8; //Set Initial Value of Timer1
TMR1L = tpr & 0xFF; //*
millis++;
}
}
unsigned long _millis(void) {
return millis;
}
void _delay_ms(unsigned long value) {
unsigned long curMillis = millis;
while((millis - curMillis) < value);
millis = curMillis;
}
void setup_timer1(void) {
OSCCON = 0b01110010; //8MHZ internal clock.
// Set up TIMER1 to tick at 1ms intervals.
// The oscillator of Timer1 ticks at FOSC(without prescaler).
// That is 8MHz or 1/8000000 seconds per tick.
// or 0.000000125s, or 0.000125ms, so 1 ms is 8000 ticks.
TMR1CS1 = 0; //System Clock (FOSC) for Timer1
TMR1CS0 = 1; //*
unsigned short tpr = _XTAL_FREQ/1000;
tpr = 0xFFFF - tpr;
TMR1H = tpr >> 8; //Set Initial Value of Timer1
TMR1L = tpr & 0xFF; //*
TMR1IF = 0; //Clear interrupt Timer1 flag
TMR1IE = 1; //Enable Timer1 Overflow Interrupt
TMR1ON = 1; //Turn on TMR1
// Enable the interrupt system
PEIE = 1; // Enable Peripheral Interrupt
GIE = 1; // Enable Global Interrupt
}
void main(void)
{
setup_timer1();
while(1) {
}
....
....
У меня частота прямая 8Mhz, Если у Вас прескаляр, то нужно делить еще это значение.
Учился по этой ссылке
http://zattouka.net/GarageHouse/micon/M ... RtoLED.htm
(Google переводчик Вам в помощь)
Последний раз редактировалось Deoptim Пн авг 01, 2022 22:18:14, всего редактировалось 1 раз.
Re: MPLAB X IDE
[uquote="Deoptim",url="/forum/viewtopic.php?p=4267730#p4267730"]alex_, что-то вы намудрили с таймером[/uquote]
Не исключено, но судя по примеру вроде делал все тоже самое, и самое интересное что ведь работает, пока ещё чего нибудь не добавишь
С другой стороны, чего это надо добавить в таймер чтобы while заглючило
В примере просто 2 таймера первый пока выкл, пока со вторым не разобрался, + прерывание по входу но пока тоже выкл, хотя оно когда было вкл вроде не мешало
Не исключено, но судя по примеру вроде делал все тоже самое, и самое интересное что ведь работает, пока ещё чего нибудь не добавишь
С другой стороны, чего это надо добавить в таймер чтобы while заглючило
В примере просто 2 таймера первый пока выкл, пока со вторым не разобрался, + прерывание по входу но пока тоже выкл, хотя оно когда было вкл вроде не мешало
Re: MPLAB X IDE
Прерывание завелось, после того как поменял одно слово в обработчике прерывания
было void __ISR (_TIMER_2_VECTOR, IPL4SRS ) T2Interrupt(void)
стало void __ISR (_TIMER_2_VECTOR, IPL4AUTO) T2Interrupt(void)
Пока ещё не разобрался по чему, но в режиме SRS контроллер входит в прерывание, далее пару микросекунд и вылетаем на перезагрузку
Deoptim, тут дело уже в векторном прерывании, на 8 битный контроллерах всё было тоже ок, а тут не туда вектор запулишь и усё.
Сокращение вышеописанного цикла в while(1) тоже было связано с бесконечным рестартом, не успевал досчитать до конца.
было void __ISR (_TIMER_2_VECTOR, IPL4SRS ) T2Interrupt(void)
стало void __ISR (_TIMER_2_VECTOR, IPL4AUTO) T2Interrupt(void)
Пока ещё не разобрался по чему, но в режиме SRS контроллер входит в прерывание, далее пару микросекунд и вылетаем на перезагрузку
Deoptim, тут дело уже в векторном прерывании, на 8 битный контроллерах всё было тоже ок, а тут не туда вектор запулишь и усё.
Сокращение вышеописанного цикла в while(1) тоже было связано с бесконечным рестартом, не успевал досчитать до конца.
Re: MPLAB X IDE
Что то совсем сюда никто не заходит
Копая IDE наткнулся на очередные грабли: была написана функция Delay(ms, us, cyc). Посчитав и прогнав через симулятор выставил коэффициенты чтобы +- попадало, рассчитано было исходя из тактовой частоты 80МГц -> nop 12.5 ns. Но при заливке я сильно удивился когда увидел что nop затрачивает 100ns в 8 раз больше
И самое интересное что таймеры были посчитаны исходя из 80МГц и там всё совпало, как будто где то какой то предделитель пропустил
Пример кода:
Значение регистра OSCCON=0х 01 45 33 22, на выходе получаем частоту 50КГц 10мкс на фронт и 10мкс на спад, по 100ns на NOP
COSC = 011 => Primary Oscillator with PLL module (XTPLL, HSPLL or ECPLL) 8МГц
FPLLIDIV = 001 = Divide by 2 8/2=4МГц
PLL Multiplier = 20x Multiplier 4*20=80Мгц
PLL Output Divider = PLL Divide by 1 =80МГц
Ну и вроде это всё, что связано с настройкой системной частоты, или я что то пропустил
Копая IDE наткнулся на очередные грабли: была написана функция Delay(ms, us, cyc). Посчитав и прогнав через симулятор выставил коэффициенты чтобы +- попадало, рассчитано было исходя из тактовой частоты 80МГц -> nop 12.5 ns. Но при заливке я сильно удивился когда увидел что nop затрачивает 100ns в 8 раз больше
И самое интересное что таймеры были посчитаны исходя из 80МГц и там всё совпало, как будто где то какой то предделитель пропустил
Пример кода:
Спойлер
Код: Выделить всё
// DEVCFG3
#pragma config USERID = 0xFFFF // Enter Hexadecimal value (Enter Hexadecimal value)
// DEVCFG2
#pragma config FPLLIDIV = DIV_2 // PLL Input Divider (2x Divider)
#pragma config FPLLMUL = MUL_20 // PLL Multiplier (20x Multiplier)
#pragma config UPLLIDIV = DIV_2 // USB PLL Input Divider (2x Divider)
#pragma config UPLLEN = ON // USB PLL Enable (Enabled)
#pragma config FPLLODIV = DIV_1 // System PLL Output Clock Divider (PLL Divide by 1)
// DEVCFG1
#pragma config FNOSC = PRIPLL // Oscillator Selection Bits (Primary Osc w/PLL (XT+,HS+,EC+PLL))
#pragma config FSOSCEN = ON // Secondary Oscillator Enable (Enabled)
#pragma config IESO = OFF // Internal/External Switch Over (Disabled)
#pragma config POSCMOD = XT // Primary Oscillator Configuration (XT osc mode)
#pragma config OSCIOFNC = OFF // CLKO Output Signal Active on the OSCO Pin (Disabled)
#pragma config FPBDIV = DIV_1 // Peripheral Clock Divisor (Pb_Clk is Sys_Clk/1)
#pragma config FCKSM = CSDCMD // Clock Switching and Monitor Selection (Clock Switch Disable, FSCM Disabled)
#pragma config WDTPS = PS8192 // Watchdog Timer Postscaler (1:8192)
#pragma config FWDTEN = OFF // Watchdog Timer Enable (WDT Disabled (SWDTEN Bit Controls))
// DEVCFG0
#pragma config DEBUG = OFF // Background Debugger Enable (Debugger is disabled)
#pragma config ICESEL = ICS_PGx2 // ICE/ICD Comm Channel Select (ICE EMUC2/EMUD2 pins shared with PGC2/PGD2)
#pragma config PWP = OFF // Program Flash Write Protect (Disable)
#pragma config BWP = OFF // Boot Flash Write Protect bit (Protection Disabled)
#pragma config CP = OFF // Code Protect (Protection Disabled)
#define _XTAL_FREQ 80000000
#include <xc.h>
// Макросы и определения
#define Clear_WDT() (WDTCONbits.WDTCLR=1) // сброс сторожевого таймера
#define Led1 LATAbits.LATA10
#define LED3SET() LATESET = _LATE_LATE2_MASK;
#define LED3CLR() LATECLR = _LATE_LATE2_MASK;
#define LED3INV() LATEINV = _LATE_LATE2_MASK;
//-----------------------------------------------------
void main(void)
{
DDPCONbits.JTAGEN = 0; // Отключили JTAG port освободить порты RB10/11/12/RB13
Clear_WDT(); // сброс сторожевого таймера
// настройка портов микроконтроллера
//RA 0-15
TRISA = 0b0000000000000000; // регистр направления данных
PORTA = 0b0000000000000000; // регистр приема данных
LATA = 0b0000000000000000; // регистр передаваемых данных
ODCA = 0b0000000000000000; // регистр настройки "открытого коллектора"
//RB 0-15
TRISB = 0b0000000000000000; // регистр направления данных
PORTB = 0b0000000000000000; // регистр приема данных
LATB = 0b0000000000000000; // регистр передаваемых данных
ODCB = 0b0000000000000000; // регистр настройки "открытого коллектора"
//RC 12-15
TRISC = 0b0000000000000000; // регистр направления данных
PORTC = 0b0000000000000000; // регистр приема данных
LATC = 0b0000000000000000; // регистр передаваемых данных
ODCC = 0b0000000000000000; // регистр настройки "открытого коллектора"
//RD 0-11
TRISD = 0b0000000000000000; // регистр направления данных
PORTD = 0b0000000000000000; // регистр приема данных
LATD = 0b0000000000000000; // регистр передаваемых данных
ODCD = 0b0000000000000000; // регистр настройки "открытого коллектора"
//RE 0-7
TRISE = 0b0000000000000000; // регистр направления данных
PORTE = 0b0000000000000000; // регистр приема данных
LATE = 0b0000000000000000; // регистр передаваемых данных
ODCE = 0b0000000000000000; // регистр настройки "открытого коллектора"
//RF 0-1, 3-5
TRISF = 0b0000000000000000; // регистр направления данных
PORTF = 0b0000000000000000; // регистр приема данных
LATF = 0b0000000000000000; // регистр передаваемых данных
ODCF = 0b0000000000000000; // регистр настройки "открытого коллектора"
//RG 2-3, 6-9
TRISG = 0b0000000000000000; // регистр направления данных
PORTG = 0b0000000000000000; // регистр приема данных
LATG = 0b0000000000000000; // регистр передаваемых данных
ODCG = 0b0000000000000000; // регистр настройки "открытого коллектора"
//-------------------------------------------------------------------------------
do
{
LED3SET();
// 10 us
asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop"); asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop");
asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop"); asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop");
asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop"); asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop");
asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop"); asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop");
asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop"); asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop");
asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop"); asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop");
asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop"); asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop");
asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop"); asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop");
asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop"); asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop");
asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop"); asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop");
LED3CLR();
// 10 us
asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop"); asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop");
asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop"); asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop");
asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop"); asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop");
asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop"); asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop");
asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop"); asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop");
asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop"); asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop");
asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop"); asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop");
asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop"); asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop");
asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop"); asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop");
asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop"); asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop");
}while(1);
}
COSC = 011 => Primary Oscillator with PLL module (XTPLL, HSPLL or ECPLL) 8МГц
FPLLIDIV = 001 = Divide by 2 8/2=4МГц
PLL Multiplier = 20x Multiplier 4*20=80Мгц
PLL Output Divider = PLL Divide by 1 =80МГц
Ну и вроде это всё, что связано с настройкой системной частоты, или я что то пропустил
- КРАМ
- Друг Кота
- Сообщения: 25155
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: MPLAB X IDE
[uquote="alex_",url="/forum/viewtopic.php?p=4278270#p4278270"]Что то совсем сюда никто не заходит.....или я что то пропустил
[/uquote]Пропустили конечно.
Можно только догадываться, что речь идет о PIC32.
Кстати, там есть немного разные ядра MIPS32. Поэтому следовало бы указать о каком чипе речь.
Не вникал в даташит, но в регистре управляющем редукцией ядра часто дефолт совсем не единичный делитель...
Плюс к этому, чтобы понять почему у вас задержка не реализуется согласно расчету, следует посмотреть листинг дизасма. Особенно в части реализации ЦИКЛА.
Ну и не надо столько нопов городить. Достаточно нескольких (2...3) с разным количеством по нулю и единице в порту.
Можно только догадываться, что речь идет о PIC32.
Не вникал в даташит, но в регистре управляющем редукцией ядра часто дефолт совсем не единичный делитель...
Плюс к этому, чтобы понять почему у вас задержка не реализуется согласно расчету, следует посмотреть листинг дизасма. Особенно в части реализации ЦИКЛА.
Ну и не надо столько нопов городить. Достаточно нескольких (2...3) с разным количеством по нулю и единице в порту.
Re: MPLAB X IDE
PIC32MX460f512L, нопов наставил чтобы проблему было видно наверняка(если прошить контроллер), в жизни столько нопов само собой не поставлю
Дизасм пришлю завтра. но самое интересное в компиляторе микроси(недоардуина) нопы выполняются положенные им 12,5 нс, начал копать дизасм(микроси) но пока не силён в асме и не выявил корень проблемы.
Дизасм пришлю завтра. но самое интересное в компиляторе микроси(недоардуина) нопы выполняются положенные им 12,5 нс, начал копать дизасм(микроси) но пока не силён в асме и не выявил корень проблемы.
- КРАМ
- Друг Кота
- Сообщения: 25155
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: MPLAB X IDE
[uquote="alex_",url="/forum/viewtopic.php?p=4278344#p4278344"]пока не силён в асме[/uquote]
Там все просто. Есть инструкции не выполняющие ветвления - эти почти все одноцикловые. А вот с ветвлениями все сложно из-за перезагрузки конвейера. Там может быть много циклов... Поэтому я и говорю про дизасм ЦИКЛА. Или нужно сравнивать ветви с разным количеством нопов. Вывод в порт тоже не быстрый.
Там все просто. Есть инструкции не выполняющие ветвления - эти почти все одноцикловые. А вот с ветвлениями все сложно из-за перезагрузки конвейера. Там может быть много циклов... Поэтому я и говорю про дизасм ЦИКЛА. Или нужно сравнивать ветви с разным количеством нопов. Вывод в порт тоже не быстрый.
Re: MPLAB X IDE
Как бы да, но пока не особо разбираюсь. Предварительно (не утверждаю в последней инстанции) но в цикле ветвления не увидел(дизасм), хотя могу и ошибаться. Нопов специально накидал много чтобы периферия оказывала как можно меньше влияния на расчёты в том числе и переход while(1). Весь материал на работе сейчас не могу его предоставить (КРАМ писал(а):Там все просто.
Re: MPLAB X IDE
MPLAB
MikroC
Спойлер
Код: Выделить всё
!void main(void)
!{
! DDPCONbits.JTAGEN = 0; // Отключили JTAG port освободить порты RB10/11/12/RB13
0x9D000000: LUI V0, -16511
0x9D000004: LBU A0, -3584(V0)
0x9D00000C: INS A0, ZERO, 3, 1
0x9D000010: SB A0, -3584(V0)
! Clear_WDT(); // сброс сторожевого таймера
0x9D000008: LUI V1, -16512
0x9D000014: LHU A0, 0(V1)
0x9D000020: ADDIU A2, ZERO, 1
0x9D000024: INS A0, A2, 0, 1
0x9D000028: SH A0, 0(V1)
! // настройка портов микроконтроллера
! //RA 0-15
! TRISA = 0b0000000000000000; // регистр направления данных
0x9D000018: LUI V0, -16504
0x9D000030: SW ZERO, 24576(V0)
! PORTA = 0b0000000000000000; // регистр приема данных
0x9D000038: SW ZERO, 24592(V0)
! LATA = 0b0000000000000000; // регистр передаваемых данных
0x9D00003C: SW ZERO, 24608(V0)
! ODCA = 0b0000000000000000; // регистр настройки "открытого коллектора"
0x9D000040: SW ZERO, 24624(V0)
!
! //RB 0-15
! TRISB = 0b0000000000000000; // регистр направления данных
0x9D000044: SW ZERO, 24640(V0)
! PORTB = 0b0000000000000000; // регистр приема данных
0x9D000048: SW ZERO, 24656(V0)
! LATB = 0b0000000000000000; // регистр передаваемых данных
0x9D00004C: SW ZERO, 24672(V0)
! ODCB = 0b0000000000000000; // регистр настройки "открытого коллектора"
0x9D000050: SW ZERO, 24688(V0)
! //RC 12-15
! TRISC = 0b0000000000000000; // регистр направления данных
0x9D000054: SW ZERO, 24704(V0)
! PORTC = 0b0000000000000000; // регистр приема данных
0x9D000058: SW ZERO, 24720(V0)
! LATC = 0b0000000000000000; // регистр передаваемых данных
0x9D00005C: SW ZERO, 24736(V0)
! ODCC = 0b0000000000000000; // регистр настройки "открытого коллектора"
0x9D000060: SW ZERO, 24752(V0)
! //RD 0-11
! TRISD = 0b0000000000000000; // регистр направления данных
0x9D000064: SW ZERO, 24768(V0)
! PORTD = 0b0000000000000000; // регистр приема данных
0x9D000068: SW ZERO, 24784(V0)
! LATD = 0b0000000000000000; // регистр передаваемых данных
0x9D00006C: SW ZERO, 24800(V0)
! ODCD = 0b0000000000000000; // регистр настройки "открытого коллектора"
0x9D000070: SW ZERO, 24816(V0)
! //RE 0-7
! TRISE = 0b0000000000000000; // регистр направления данных
0x9D000074: SW ZERO, 24832(V0)
! PORTE = 0b0000000000000000; // регистр приема данных
0x9D000078: SW ZERO, 24848(V0)
! LATE = 0b0000000000000000; // регистр передаваемых данных
0x9D00007C: SW ZERO, 24864(V0)
! ODCE = 0b0000000000000000; // регистр настройки "открытого коллектора"
0x9D000080: SW ZERO, 24880(V0)
! //RF 0-1, 3-5
! TRISF = 0b0000000000000000; // регистр направления данных
0x9D000084: SW ZERO, 24896(V0)
! PORTF = 0b0000000000000000; // регистр приема данных
0x9D000088: SW ZERO, 24912(V0)
! LATF = 0b0000000000000000; // регистр передаваемых данных
0x9D00008C: SW ZERO, 24928(V0)
! ODCF = 0b0000000000000000; // регистр настройки "открытого коллектора"
0x9D000090: SW ZERO, 24944(V0)
! //RG 2-3, 6-9
! TRISG = 0b0000000000000000; // регистр направления данных
0x9D000094: SW ZERO, 24960(V0)
! PORTG = 0b0000000000000000; // регистр приема данных
0x9D000098: SW ZERO, 24976(V0)
! LATG = 0b0000000000000000; // регистр передаваемых данных
0x9D00009C: SW ZERO, 24992(V0)
! ODCG = 0b0000000000000000; // регистр настройки "открытого коллектора"
0x9D0000A0: SW ZERO, 25008(V0)
!
!//----------
! do
! {
!
! LED3SET();
0x9D00001C: ADDIU A1, ZERO, 4
0x9D0000A4: SW A1, 24872(V0)
! // 10 us
! asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop"); asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop");
0x9D0000A8: NOP
0x9D0000AC: NOP
0x9D0000B0: NOP
0x9D0000B4: NOP
0x9D0000B8: NOP
0x9D0000BC: NOP
0x9D0000C0: NOP
0x9D0000C4: NOP
0x9D0000C8: NOP
0x9D0000CC: NOP
! asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop"); asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop");
0x9D0000D0: NOP
0x9D0000D4: NOP
0x9D0000D8: NOP
0x9D0000DC: NOP
0x9D0000E0: NOP
0x9D0000E4: NOP
0x9D0000E8: NOP
0x9D0000EC: NOP
0x9D0000F0: NOP
0x9D0000F4: NOP
! asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop"); asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop");
0x9D0000F8: NOP
0x9D0000FC: NOP
0x9D000100: NOP
0x9D000104: NOP
0x9D000108: NOP
0x9D00010C: NOP
0x9D000110: NOP
0x9D000114: NOP
0x9D000118: NOP
0x9D00011C: NOP
! asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop"); asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop");
0x9D000120: NOP
0x9D000124: NOP
0x9D000128: NOP
0x9D00012C: NOP
0x9D000130: NOP
0x9D000134: NOP
0x9D000138: NOP
0x9D00013C: NOP
0x9D000140: NOP
0x9D000144: NOP
! asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop"); asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop");
0x9D000148: NOP
0x9D00014C: NOP
0x9D000150: NOP
0x9D000154: NOP
0x9D000158: NOP
0x9D00015C: NOP
0x9D000160: NOP
0x9D000164: NOP
0x9D000168: NOP
0x9D00016C: NOP
!
! asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop"); asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop");
0x9D000170: NOP
0x9D000174: NOP
0x9D000178: NOP
0x9D00017C: NOP
0x9D000180: NOP
0x9D000184: NOP
0x9D000188: NOP
0x9D00018C: NOP
0x9D000190: NOP
0x9D000194: NOP
! asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop"); asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop");
0x9D000198: NOP
0x9D00019C: NOP
0x9D0001A0: NOP
0x9D0001A4: NOP
0x9D0001A8: NOP
0x9D0001AC: NOP
0x9D0001B0: NOP
0x9D0001B4: NOP
0x9D0001B8: NOP
0x9D0001BC: NOP
! asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop"); asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop");
0x9D0001C0: NOP
0x9D0001C4: NOP
0x9D0001C8: NOP
0x9D0001CC: NOP
0x9D0001D0: NOP
0x9D0001D4: NOP
0x9D0001D8: NOP
0x9D0001DC: NOP
0x9D0001E0: NOP
0x9D0001E4: NOP
! asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop"); asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop");
0x9D0001E8: NOP
0x9D0001EC: NOP
0x9D0001F0: NOP
0x9D0001F4: NOP
0x9D0001F8: NOP
0x9D0001FC: NOP
0x9D000200: NOP
0x9D000204: NOP
0x9D000208: NOP
0x9D00020C: NOP
! asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop"); asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop");
0x9D000210: NOP
0x9D000214: NOP
0x9D000218: NOP
0x9D00021C: NOP
0x9D000220: NOP
0x9D000224: NOP
0x9D000228: NOP
0x9D00022C: NOP
0x9D000230: NOP
0x9D000234: NOP
!
!
!
! LED3CLR();
0x9D00002C: ADDU A0, V0, ZERO
0x9D000034: ADDIU V1, ZERO, 4
0x9D000238: LUI V0, -16504
0x9D00023C: SW V1, 24868(A0)
! // 10 us
! asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop"); asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop");
0x9D000240: NOP
0x9D000244: NOP
0x9D000248: NOP
0x9D00024C: NOP
0x9D000250: NOP
0x9D000254: NOP
0x9D000258: NOP
0x9D00025C: NOP
0x9D000260: NOP
0x9D000264: NOP
! asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop"); asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop");
0x9D000268: NOP
0x9D00026C: NOP
0x9D000270: NOP
0x9D000274: NOP
0x9D000278: NOP
0x9D00027C: NOP
0x9D000280: NOP
0x9D000284: NOP
0x9D000288: NOP
0x9D00028C: NOP
! asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop"); asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop");
0x9D000290: NOP
0x9D000294: NOP
0x9D000298: NOP
0x9D00029C: NOP
0x9D0002A0: NOP
0x9D0002A4: NOP
0x9D0002A8: NOP
0x9D0002AC: NOP
0x9D0002B0: NOP
0x9D0002B4: NOP
! asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop"); asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop");
0x9D0002B8: NOP
0x9D0002BC: NOP
0x9D0002C0: NOP
0x9D0002C4: NOP
0x9D0002C8: NOP
0x9D0002CC: NOP
0x9D0002D0: NOP
0x9D0002D4: NOP
0x9D0002D8: NOP
0x9D0002DC: NOP
! asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop"); asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop");
0x9D0002E0: NOP
0x9D0002E4: NOP
0x9D0002E8: NOP
0x9D0002EC: NOP
0x9D0002F0: NOP
0x9D0002F4: NOP
0x9D0002F8: NOP
0x9D0002FC: NOP
0x9D000300: NOP
0x9D000304: NOP
!
! asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop"); asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop");
0x9D000308: NOP
0x9D00030C: NOP
0x9D000310: NOP
0x9D000314: NOP
0x9D000318: NOP
0x9D00031C: NOP
0x9D000320: NOP
0x9D000324: NOP
0x9D000328: NOP
0x9D00032C: NOP
! asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop"); asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop");
0x9D000330: NOP
0x9D000334: NOP
0x9D000338: NOP
0x9D00033C: NOP
0x9D000340: NOP
0x9D000344: NOP
0x9D000348: NOP
0x9D00034C: NOP
0x9D000350: NOP
0x9D000354: NOP
! asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop"); asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop");
0x9D000358: NOP
0x9D00035C: NOP
0x9D000360: NOP
0x9D000364: NOP
0x9D000368: NOP
0x9D00036C: NOP
0x9D000370: NOP
0x9D000374: NOP
0x9D000378: NOP
0x9D00037C: NOP
! asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop"); asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop");
0x9D000380: NOP
0x9D000384: NOP
0x9D000388: NOP
0x9D00038C: NOP
0x9D000390: NOP
0x9D000394: NOP
0x9D000398: NOP
0x9D00039C: NOP
0x9D0003A0: NOP
0x9D0003A4: NOP
! asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop"); asm ("nop");asm ("nop");asm ("nop");asm ("nop");asm ("nop");
0x9D0003A8: NOP
0x9D0003AC: NOP
0x9D0003B0: NOP
0x9D0003B4: NOP
0x9D0003B8: NOP
0x9D0003BC: NOP
0x9D0003C0: NOP
0x9D0003C4: NOP
0x9D0003C8: NOP
0x9D0003CC: J 0x9D0000A4
0x9D0003D0: NOP
Спойлер
Код: Выделить всё
;Address Opcode ASM
____SysVT:
0x9FC01180 0x0B400008 J ___GenExcept
0x9FC01184 0x70000000 NOP
; end of ____SysVT
____BootVT:
0xBFC00380 0x3C1E9D00 LUI R30, 40192
0xBFC00384 0x37DE0038 ORI R30, R30, 56
0xBFC00388 0x03C00008 JR R30
0xBFC0038C 0x70000000 NOP
; end of ____BootVT
_main:
;Led.c, 4 :: void main() {
0x9D000050 0x0F4000F0 JAL 2634023872
0x9D000054 0x70000000 NOP
;Led.c, 6 :: LED3_dir = 0;
0x9D000058 0x34020004 ORI R2, R0, 4
0x9D00005C 0x3C1EBF88 LUI R30, 49032
0x9D000060 0xAFC26104 SW R2, 24836(R30)
;Led.c, 7 :: DDPCONbits.JTAGEN = 0;
0x9D000064 0x3C1EBF81 LUI R30, 49025
0x9D000068 0x93C2F200 LBU R2, -3584(R30)
0x9D00006C 0x7C0218C4 INS R2, R0, 3, 1
0x9D000070 0x3C1EBF81 LUI R30, 49025
0x9D000074 0xA3C2F200 SB R2, -3584(R30)
;Led.c, 10 :: while(1)
L_main0:
;Led.c, 13 :: LED3=1;
0x9D000078 0x34020004 ORI R2, R0, 4
0x9D00007C 0x3C1EBF88 LUI R30, 49032
0x9D000080 0xAFC26128 SW R2, 24872(R30)
;Led.c, 15 :: asm nop;asm nop;asm nop;asm nop;asm nop; asm nop;asm nop;asm nop;asm nop;asm nop;
0x9D000084 0x70000000 NOP
0x9D000088 0x70000000 NOP
0x9D00008C 0x70000000 NOP
0x9D000090 0x70000000 NOP
0x9D000094 0x70000000 NOP
0x9D000098 0x70000000 NOP
0x9D00009C 0x70000000 NOP
0x9D0000A0 0x70000000 NOP
0x9D0000A4 0x70000000 NOP
0x9D0000A8 0x70000000 NOP
;Led.c, 16 :: asm nop;asm nop;asm nop;asm nop;asm nop; asm nop;asm nop;asm nop;asm nop;asm nop;
0x9D0000AC 0x70000000 NOP
0x9D0000B0 0x70000000 NOP
0x9D0000B4 0x70000000 NOP
0x9D0000B8 0x70000000 NOP
0x9D0000BC 0x70000000 NOP
0x9D0000C0 0x70000000 NOP
0x9D0000C4 0x70000000 NOP
0x9D0000C8 0x70000000 NOP
0x9D0000CC 0x70000000 NOP
0x9D0000D0 0x70000000 NOP
;Led.c, 17 :: asm nop;asm nop;asm nop;asm nop;asm nop; asm nop;asm nop;asm nop;asm nop;asm nop;
0x9D0000D4 0x70000000 NOP
0x9D0000D8 0x70000000 NOP
0x9D0000DC 0x70000000 NOP
0x9D0000E0 0x70000000 NOP
0x9D0000E4 0x70000000 NOP
0x9D0000E8 0x70000000 NOP
0x9D0000EC 0x70000000 NOP
0x9D0000F0 0x70000000 NOP
0x9D0000F4 0x70000000 NOP
0x9D0000F8 0x70000000 NOP
;Led.c, 18 :: asm nop;asm nop;asm nop;asm nop;asm nop; asm nop;asm nop;asm nop;asm nop;asm nop;
0x9D0000FC 0x70000000 NOP
0x9D000100 0x70000000 NOP
0x9D000104 0x70000000 NOP
0x9D000108 0x70000000 NOP
0x9D00010C 0x70000000 NOP
0x9D000110 0x70000000 NOP
0x9D000114 0x70000000 NOP
0x9D000118 0x70000000 NOP
0x9D00011C 0x70000000 NOP
0x9D000120 0x70000000 NOP
;Led.c, 19 :: asm nop;asm nop;asm nop;asm nop;asm nop; asm nop;asm nop;asm nop;asm nop;asm nop;
0x9D000124 0x70000000 NOP
0x9D000128 0x70000000 NOP
0x9D00012C 0x70000000 NOP
0x9D000130 0x70000000 NOP
0x9D000134 0x70000000 NOP
0x9D000138 0x70000000 NOP
0x9D00013C 0x70000000 NOP
0x9D000140 0x70000000 NOP
0x9D000144 0x70000000 NOP
0x9D000148 0x70000000 NOP
;Led.c, 21 :: asm nop;asm nop;asm nop;asm nop;asm nop; asm nop;asm nop;asm nop;asm nop;asm nop;
0x9D00014C 0x70000000 NOP
0x9D000150 0x70000000 NOP
0x9D000154 0x70000000 NOP
0x9D000158 0x70000000 NOP
0x9D00015C 0x70000000 NOP
0x9D000160 0x70000000 NOP
0x9D000164 0x70000000 NOP
0x9D000168 0x70000000 NOP
0x9D00016C 0x70000000 NOP
0x9D000170 0x70000000 NOP
;Led.c, 22 :: asm nop;asm nop;asm nop;asm nop;asm nop; asm nop;asm nop;asm nop;asm nop;asm nop;
0x9D000174 0x70000000 NOP
0x9D000178 0x70000000 NOP
0x9D00017C 0x70000000 NOP
0x9D000180 0x70000000 NOP
0x9D000184 0x70000000 NOP
0x9D000188 0x70000000 NOP
0x9D00018C 0x70000000 NOP
0x9D000190 0x70000000 NOP
0x9D000194 0x70000000 NOP
0x9D000198 0x70000000 NOP
;Led.c, 23 :: asm nop;asm nop;asm nop;asm nop;asm nop; asm nop;asm nop;asm nop;asm nop;asm nop;
0x9D00019C 0x70000000 NOP
0x9D0001A0 0x70000000 NOP
0x9D0001A4 0x70000000 NOP
0x9D0001A8 0x70000000 NOP
0x9D0001AC 0x70000000 NOP
0x9D0001B0 0x70000000 NOP
0x9D0001B4 0x70000000 NOP
0x9D0001B8 0x70000000 NOP
0x9D0001BC 0x70000000 NOP
0x9D0001C0 0x70000000 NOP
;Led.c, 24 :: asm nop;asm nop;asm nop;asm nop;asm nop; asm nop;asm nop;asm nop;asm nop;asm nop;
0x9D0001C4 0x70000000 NOP
0x9D0001C8 0x70000000 NOP
0x9D0001CC 0x70000000 NOP
0x9D0001D0 0x70000000 NOP
0x9D0001D4 0x70000000 NOP
0x9D0001D8 0x70000000 NOP
0x9D0001DC 0x70000000 NOP
0x9D0001E0 0x70000000 NOP
0x9D0001E4 0x70000000 NOP
0x9D0001E8 0x70000000 NOP
;Led.c, 25 :: asm nop;asm nop;asm nop;asm nop;asm nop; asm nop;asm nop;asm nop;asm nop;asm nop;
0x9D0001EC 0x70000000 NOP
0x9D0001F0 0x70000000 NOP
0x9D0001F4 0x70000000 NOP
0x9D0001F8 0x70000000 NOP
0x9D0001FC 0x70000000 NOP
0x9D000200 0x70000000 NOP
0x9D000204 0x70000000 NOP
0x9D000208 0x70000000 NOP
0x9D00020C 0x70000000 NOP
0x9D000210 0x70000000 NOP
;Led.c, 29 :: LED3=0;
0x9D000214 0x34020004 ORI R2, R0, 4
0x9D000218 0x3C1EBF88 LUI R30, 49032
0x9D00021C 0xAFC26124 SW R2, 24868(R30)
;Led.c, 31 :: asm nop;asm nop;asm nop;asm nop;asm nop; asm nop;asm nop;asm nop;asm nop;asm nop;
0x9D000220 0x70000000 NOP
0x9D000224 0x70000000 NOP
0x9D000228 0x70000000 NOP
0x9D00022C 0x70000000 NOP
0x9D000230 0x70000000 NOP
0x9D000234 0x70000000 NOP
0x9D000238 0x70000000 NOP
0x9D00023C 0x70000000 NOP
0x9D000240 0x70000000 NOP
0x9D000244 0x70000000 NOP
;Led.c, 32 :: asm nop;asm nop;asm nop;asm nop;asm nop; asm nop;asm nop;asm nop;asm nop;asm nop;
0x9D000248 0x70000000 NOP
0x9D00024C 0x70000000 NOP
0x9D000250 0x70000000 NOP
0x9D000254 0x70000000 NOP
0x9D000258 0x70000000 NOP
0x9D00025C 0x70000000 NOP
0x9D000260 0x70000000 NOP
0x9D000264 0x70000000 NOP
0x9D000268 0x70000000 NOP
0x9D00026C 0x70000000 NOP
;Led.c, 33 :: asm nop;asm nop;asm nop;asm nop;asm nop; asm nop;asm nop;asm nop;asm nop;asm nop;
0x9D000270 0x70000000 NOP
0x9D000274 0x70000000 NOP
0x9D000278 0x70000000 NOP
0x9D00027C 0x70000000 NOP
0x9D000280 0x70000000 NOP
0x9D000284 0x70000000 NOP
0x9D000288 0x70000000 NOP
0x9D00028C 0x70000000 NOP
0x9D000290 0x70000000 NOP
0x9D000294 0x70000000 NOP
;Led.c, 34 :: asm nop;asm nop;asm nop;asm nop;asm nop; asm nop;asm nop;asm nop;asm nop;asm nop;
0x9D000298 0x70000000 NOP
0x9D00029C 0x70000000 NOP
0x9D0002A0 0x70000000 NOP
0x9D0002A4 0x70000000 NOP
0x9D0002A8 0x70000000 NOP
0x9D0002AC 0x70000000 NOP
0x9D0002B0 0x70000000 NOP
0x9D0002B4 0x70000000 NOP
0x9D0002B8 0x70000000 NOP
0x9D0002BC 0x70000000 NOP
;Led.c, 35 :: asm nop;asm nop;asm nop;asm nop;asm nop; asm nop;asm nop;asm nop;asm nop;asm nop;
0x9D0002C0 0x70000000 NOP
0x9D0002C4 0x70000000 NOP
0x9D0002C8 0x70000000 NOP
0x9D0002CC 0x70000000 NOP
0x9D0002D0 0x70000000 NOP
0x9D0002D4 0x70000000 NOP
0x9D0002D8 0x70000000 NOP
0x9D0002DC 0x70000000 NOP
0x9D0002E0 0x70000000 NOP
0x9D0002E4 0x70000000 NOP
;Led.c, 37 :: asm nop;asm nop;asm nop;asm nop;asm nop; asm nop;asm nop;asm nop;asm nop;asm nop;
0x9D0002E8 0x70000000 NOP
0x9D0002EC 0x70000000 NOP
0x9D0002F0 0x70000000 NOP
0x9D0002F4 0x70000000 NOP
0x9D0002F8 0x70000000 NOP
0x9D0002FC 0x70000000 NOP
0x9D000300 0x70000000 NOP
0x9D000304 0x70000000 NOP
0x9D000308 0x70000000 NOP
0x9D00030C 0x70000000 NOP
;Led.c, 38 :: asm nop;asm nop;asm nop;asm nop;asm nop; asm nop;asm nop;asm nop;asm nop;asm nop;
0x9D000310 0x70000000 NOP
0x9D000314 0x70000000 NOP
0x9D000318 0x70000000 NOP
0x9D00031C 0x70000000 NOP
0x9D000320 0x70000000 NOP
0x9D000324 0x70000000 NOP
0x9D000328 0x70000000 NOP
0x9D00032C 0x70000000 NOP
0x9D000330 0x70000000 NOP
0x9D000334 0x70000000 NOP
;Led.c, 39 :: asm nop;asm nop;asm nop;asm nop;asm nop; asm nop;asm nop;asm nop;asm nop;asm nop;
0x9D000338 0x70000000 NOP
0x9D00033C 0x70000000 NOP
0x9D000340 0x70000000 NOP
0x9D000344 0x70000000 NOP
0x9D000348 0x70000000 NOP
0x9D00034C 0x70000000 NOP
0x9D000350 0x70000000 NOP
0x9D000354 0x70000000 NOP
0x9D000358 0x70000000 NOP
0x9D00035C 0x70000000 NOP
;Led.c, 40 :: asm nop;asm nop;asm nop;asm nop;asm nop; asm nop;asm nop;asm nop;asm nop;asm nop;
0x9D000360 0x70000000 NOP
0x9D000364 0x70000000 NOP
0x9D000368 0x70000000 NOP
0x9D00036C 0x70000000 NOP
0x9D000370 0x70000000 NOP
0x9D000374 0x70000000 NOP
0x9D000378 0x70000000 NOP
0x9D00037C 0x70000000 NOP
0x9D000380 0x70000000 NOP
0x9D000384 0x70000000 NOP
;Led.c, 41 :: asm nop;asm nop;asm nop;asm nop;asm nop; asm nop;asm nop;asm nop;asm nop;asm nop;
0x9D000388 0x70000000 NOP
0x9D00038C 0x70000000 NOP
0x9D000390 0x70000000 NOP
0x9D000394 0x70000000 NOP
0x9D000398 0x70000000 NOP
0x9D00039C 0x70000000 NOP
0x9D0003A0 0x70000000 NOP
0x9D0003A4 0x70000000 NOP
0x9D0003A8 0x70000000 NOP
0x9D0003AC 0x70000000 NOP
;Led.c, 43 :: }
0x9D0003B0 0x0B40001E J L_main0
0x9D0003B4 0x70000000 NOP
;Led.c, 44 :: }
L_end_main:
L__main_end_loop:
0x9D0003B8 0x0B4000EE J L__main_end_loop
0x9D0003BC 0x70000000 NOP
; end of _main
___FillZeros:
;__Lib_System.c, 161 ::
0x9D000000 0x27BDFFFC ADDIU SP, SP, -4
;__Lib_System.c, 163 ::
L___FillZeros0:
;__Lib_System.c, 164 ::
0x9D000004 0x12F60004 BEQ R23, R22, L___FillZeros1
;__Lib_System.c, 165 ::
0x9D000008 0x70000000 NOP
;__Lib_System.c, 166 ::
L____FillZeros4:
;__Lib_System.c, 167 ::
0x9D00000C 0xAEE00000 SW R0, 0(R23)
;__Lib_System.c, 168 ::
0x9D000010 0x0B400001 J L___FillZeros0
;__Lib_System.c, 169 ::
0x9D000014 0x26F70004 ADDIU R23, R23, 4
;__Lib_System.c, 170 ::
L___FillZeros1:
;__Lib_System.c, 172 ::
L_end___FillZeros:
0x9D000018 0x03E00008 JR RA
0x9D00001C 0x27BD0004 ADDIU SP, SP, 4
; end of ___FillZeros
___BootStartUp:
;__Lib_System.c, 68 ::
0xBFC00000 0x27BDFFFC ADDIU SP, SP, -4
;__Lib_System.c, 72 ::
0xBFC00004 0x70000000 NOP
;__Lib_System.c, 73 ::
0xBFC00008 0x70000000 NOP
;__Lib_System.c, 74 ::
0xBFC0000C 0x70000000 NOP
;__Lib_System.c, 75 ::
0xBFC00010 0x70000000 NOP
;__Lib_System.c, 76 ::
0xBFC00014 0x70000000 NOP
;__Lib_System.c, 77 ::
0xBFC00018 0x70000000 NOP
;__Lib_System.c, 78 ::
0xBFC0001C 0x70000000 NOP
;__Lib_System.c, 79 ::
0xBFC00020 0x70000000 NOP
;__Lib_System.c, 80 ::
0xBFC00024 0x70000000 NOP
;__Lib_System.c, 81 ::
0xBFC00028 0x70000000 NOP
;__Lib_System.c, 82 ::
0xBFC0002C 0x70000000 NOP
;__Lib_System.c, 83 ::
0xBFC00030 0x70000000 NOP
;__Lib_System.c, 84 ::
0xBFC00034 0x70000000 NOP
;__Lib_System.c, 85 ::
0xBFC00038 0x70000000 NOP
;__Lib_System.c, 86 ::
0xBFC0003C 0x70000000 NOP
;__Lib_System.c, 87 ::
0xBFC00040 0x70000000 NOP
;__Lib_System.c, 88 ::
0xBFC00044 0x70000000 NOP
;__Lib_System.c, 89 ::
0xBFC00048 0x70000000 NOP
;__Lib_System.c, 90 ::
0xBFC0004C 0x70000000 NOP
;__Lib_System.c, 91 ::
0xBFC00050 0x70000000 NOP
;__Lib_System.c, 94 ::
0xBFC00054 0x3C1DA000 LUI SP, 40960
0xBFC00058 0x37BD7FFC ORI SP, SP, 32764
;__Lib_System.c, 95 ::
0xBFC0005C 0x3C01A000 LUI GP, 40960
0xBFC00060 0x34218000 ORI GP, GP, 32768
;__Lib_System.c, 99 ::
0xBFC00064 0x401E6002 MFC0 R30, 12, 2
;__Lib_System.c, 100 ::
0xBFC00068 0x03C0E00A MOVZ R28, R30, R0
;__Lib_System.c, 101 ::
0xBFC0006C 0x7FDB1E80 EXT R27, R30, 26, 4
;__Lib_System.c, 102 ::
0xBFC00070 0x7F7E4984 INS R30, R27, 6, 4
;__Lib_System.c, 103 ::
0xBFC00074 0x409E6002 MTC0 R30, 12, 2
;__Lib_System.c, 104 ::
0xBFC00078 0x41C10800 WRPGPR GP, GP
;__Lib_System.c, 105 ::
0xBFC0007C 0x409C6002 MTC0 R28, 12, 2
;__Lib_System.c, 111 ::
0xBFC00080 0x3C02A421 LUI R2, 42017
0xBFC00084 0x34420583 ORI R2, R2, 1411
0xBFC00088 0x0040F00A MOVZ R30, R2, R0
0xBFC0008C 0x409E8000 MTC0 R30, 16, 0
;__Lib_System.c, 114 ::
0xBFC00090 0x0000100A MOVZ R2, R0, R0
0xBFC00094 0x0040F00A MOVZ R30, R2, R0
0xBFC00098 0x409E4800 MTC0 R30, 9, 0
;__Lib_System.c, 117 ::
0xBFC0009C 0x3C02FFFF LUI R2, 65535
0xBFC000A0 0x3442FFFF ORI R2, R2, 65535
0xBFC000A4 0x0040F00A MOVZ R30, R2, R0
0xBFC000A8 0x409E5800 MTC0 R30, 11, 0
;__Lib_System.c, 119 ::
0xBFC000AC 0x3C029FC0 LUI R2, 40896
0xBFC000B0 0x34421000 ORI R2, R2, 4096
0xBFC000B4 0x0040F00A MOVZ R30, R2, R0
0xBFC000B8 0x409E7801 MTC0 R30, 15, 1
;__Lib_System.c, 121 ::
0xBFC000BC 0x34020020 ORI R2, R0, 32
0xBFC000C0 0x0040F00A MOVZ R30, R2, R0
0xBFC000C4 0x409E6001 MTC0 R30, 12, 1
;__Lib_System.c, 123 ::
0xBFC000C8 0x3C020400 LUI R2, 1024
0xBFC000CC 0x0040F00A MOVZ R30, R2, R0
0xBFC000D0 0x409E6002 MTC0 R30, 12, 2
;__Lib_System.c, 124 ::
0xBFC000D4 0x0000100A MOVZ R2, R0, R0
0xBFC000D8 0x0040F00A MOVZ R30, R2, R0
0xBFC000DC 0x409E6003 MTC0 R30, 12, 3
;__Lib_System.c, 129 ::
0xBFC000E0 0x3C020010 LUI R2, 16
0xBFC000E4 0x0040F00A MOVZ R30, R2, R0
0xBFC000E8 0x409E6000 MTC0 R30, 12, 0
;__Lib_System.c, 132 ::
0xBFC000EC 0x34020032 ORI R2, R0, 50
0xBFC000F0 0x3C1EBF88 LUI R30, 49032
0xBFC000F4 0xAFC24000 SW R2, 16384(R30)
;__Lib_System.c, 137 ::
0xBFC000F8 0x34021000 ORI R2, R0, 4096
0xBFC000FC 0x3C1EBF88 LUI R30, 49032
0xBFC00100 0xAFC21000 SW R2, 4096(R30)
;__Lib_System.c, 143 ::
0xBFC00104 0x3C020080 LUI R2, 128
0xBFC00108 0x0040F00A MOVZ R30, R2, R0
0xBFC0010C 0x409E6800 MTC0 R30, 13, 0
;__Lib_System.c, 149 ::
0xBFC00110 0x3C1E9D00 LUI R30, hi_addr(_main+0)
;__Lib_System.c, 150 ::
0xBFC00114 0x37DE0050 ORI R30, R30, lo_addr(_main+0)
;__Lib_System.c, 152 ::
0xBFC00118 0x03C00008 JR R30
;__Lib_System.c, 153 ::
0xBFC0011C 0x70000000 NOP
;__Lib_System.c, 155 ::
L_end___BootStartUp:
0xBFC00120 0x03E00008 JR RA
0xBFC00124 0x27BD0004 ADDIU SP, SP, 4
; end of ___BootStartUp
___BootGenExcept:
;__Lib_System.c, 56 ::
0x9D000038 0x27BDFFFC ADDIU SP, SP, -4
;__Lib_System.c, 57 ::
L___BootGenExcept6:
;__Lib_System.c, 58 ::
0x9D00003C 0x0B40000F J L___BootGenExcept6
0x9D000040 0x70000000 NOP
;__Lib_System.c, 59 ::
L_end___BootGenExcept:
0x9D000044 0x27BD0004 ADDIU SP, SP, 4
0x9D000048 0x42000018 ERET
0x9D00004C 0x70000000 NOP
; end of ___BootGenExcept
___GenExcept:
;__Lib_System.c, 61 ::
0x9D000020 0x27BDFFFC ADDIU SP, SP, -4
;__Lib_System.c, 62 ::
L___GenExcept8:
;__Lib_System.c, 63 ::
0x9D000024 0x0B400009 J L___GenExcept8
0x9D000028 0x70000000 NOP
;__Lib_System.c, 64 ::
L_end___GenExcept:
0x9D00002C 0x27BD0004 ADDIU SP, SP, 4
0x9D000030 0x42000018 ERET
0x9D000034 0x70000000 NOP
; end of ___GenExcept
0x9D0003C0 0x03E0C80A MOVZ R25, RA, R0
0x9D0003C4 0x3C170000 LUI R23, 0
0x9D0003C8 0x36F70000 ORI R23, R23, 0
0x9D0003CC 0x3C160000 LUI R22, 0
0x9D0003D0 0x36D60000 ORI R22, R22, 0
0x9D0003D4 0x0F400000 JAL ___FillZeros
0x9D0003D8 0x70000000 NOP
0x9D0003DC 0x0320F80A MOVZ RA, R25, R0
0x9D0003E0 0x03E00008 JR RA
0x9D0003E4 0x70000000 NOP
Symbol List:
//** Routines locations **
//ADDRESS SIZE PROCEDURE
//----------------------------------------------
0x9D000000 [32] ___FillZeros
0x9D000020 [24] ___GenExcept
0x9D000038 [24] ___BootGenExcept
0x9D000050 [880] _main
0xBFC00000 [296] ___BootStartUp
//** Variables locations **
//ADDRESS SIZE VARIABLE
//----------------------------------------------
Re: MPLAB X IDE
Решил приложить осциллограммы для правдоподобности
MPLAB

MikroC

Из дизассемблера видно что код один и тот же, в микроси только перед стартом идёт некая конфигурация, которая и позволяет работать чипу на положенных ему 80МГц. Конфигурационная строка чипа в обоих случаях одинаковая: :102FF000FFFFFFFFD979F8FF7BC96DFFFFFFFF7F60 и была расписана выше.
MPLAB
MikroC
Из дизассемблера видно что код один и тот же, в микроси только перед стартом идёт некая конфигурация, которая и позволяет работать чипу на положенных ему 80МГц. Конфигурационная строка чипа в обоих случаях одинаковая: :102FF000FFFFFFFFD979F8FF7BC96DFFFFFFFF7F60 и была расписана выше.
Re: MPLAB X IDE
Похоже 32 пиками мало кто балуется, судя по куче ответов (
Гугл конечно в помощь, но несколько дней стучания головой об стену это, что то с чем то.
КРАМ, был в какой то степени прав, тут уже далеко не простое АЛУ, где послал команду и он тебе посчитал за n'ое количество тактов. Тут есть кеш, сопроцессор и задерржка чтения шлеш памяти, если это не настроишь то и получишь то же что и у меня.
Раньше это решалось строкой: SYSTEMConfig(SYS_FREQ, SYS_CFG_WAIT_STATES | SYS_CFG_PCACHE);
Сейчас фиг, надо доб библиотетеку хармони ставить, а ручками пока ещё не разобрался как и что нужно настроить
Гугл конечно в помощь, но несколько дней стучания головой об стену это, что то с чем то.
КРАМ, был в какой то степени прав, тут уже далеко не простое АЛУ, где послал команду и он тебе посчитал за n'ое количество тактов. Тут есть кеш, сопроцессор и задерржка чтения шлеш памяти, если это не настроишь то и получишь то же что и у меня.
Раньше это решалось строкой: SYSTEMConfig(SYS_FREQ, SYS_CFG_WAIT_STATES | SYS_CFG_PCACHE);
Сейчас фиг, надо доб библиотетеку хармони ставить, а ручками пока ещё не разобрался как и что нужно настроить
Re: MPLAB X IDE
По пикам похоже сказать некому, или не там запостил.
Ладно вопрос по теме:
Есть глобальные переменные которые находятся в файле Global.h
Всё объявлено через #ifndef, чтобы было подключено только 1 раз, чтобы файлы .с имели доступ к объявленным переменным. Почти в каждом .c файле идёт подключение к файлу Global.h, в компиляторе XC32v2.5 всё работало отлично, но после обновления компилятора до версии 4.1 вываливает кучу ошибок на тему многократного определения переменных как будто #ifndef не работает.
И ещё выпилили функцию itoa()
Ладно вопрос по теме:
Есть глобальные переменные которые находятся в файле Global.h
Всё объявлено через #ifndef, чтобы было подключено только 1 раз, чтобы файлы .с имели доступ к объявленным переменным. Почти в каждом .c файле идёт подключение к файлу Global.h, в компиляторе XC32v2.5 всё работало отлично, но после обновления компилятора до версии 4.1 вываливает кучу ошибок на тему многократного определения переменных как будто #ifndef не работает.
И ещё выпилили функцию itoa()
Re: MPLAB X IDE
alex_, <xc.h> подключали? Он также должен быть на уровне вашего Global.h(а не в нём) и первым в очереди xc.h, потом Global.h