Как бы да, но пока не особо разбираюсь. Предварительно (не утверждаю в последней инстанции) но в цикле ветвления не увидел(дизасм), хотя могу и ошибаться. Нопов специально накидал много чтобы периферия оказывала как можно меньше влияния на расчёты в том числе и переход while(1). Весь материал на работе сейчас не могу его предоставить (КРАМ писал(а):Там все просто.
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
//----------------------------------------------
Решил приложить осциллограммы для правдоподобности
MPLAB

MikroC

Из дизассемблера видно что код один и тот же, в микроси только перед стартом идёт некая конфигурация, которая и позволяет работать чипу на положенных ему 80МГц. Конфигурационная строка чипа в обоих случаях одинаковая: :102FF000FFFFFFFFD979F8FF7BC96DFFFFFFFF7F60 и была расписана выше.
MPLAB
MikroC
Из дизассемблера видно что код один и тот же, в микроси только перед стартом идёт некая конфигурация, которая и позволяет работать чипу на положенных ему 80МГц. Конфигурационная строка чипа в обоих случаях одинаковая: :102FF000FFFFFFFFD979F8FF7BC96DFFFFFFFF7F60 и была расписана выше.
Похоже 32 пиками мало кто балуется, судя по куче ответов (
Гугл конечно в помощь, но несколько дней стучания головой об стену это, что то с чем то.
КРАМ, был в какой то степени прав, тут уже далеко не простое АЛУ, где послал команду и он тебе посчитал за n'ое количество тактов. Тут есть кеш, сопроцессор и задерржка чтения шлеш памяти, если это не настроишь то и получишь то же что и у меня.
Раньше это решалось строкой: SYSTEMConfig(SYS_FREQ, SYS_CFG_WAIT_STATES | SYS_CFG_PCACHE);
Сейчас фиг, надо доб библиотетеку хармони ставить, а ручками пока ещё не разобрался как и что нужно настроить
Гугл конечно в помощь, но несколько дней стучания головой об стену это, что то с чем то.
КРАМ, был в какой то степени прав, тут уже далеко не простое АЛУ, где послал команду и он тебе посчитал за n'ое количество тактов. Тут есть кеш, сопроцессор и задерржка чтения шлеш памяти, если это не настроишь то и получишь то же что и у меня.
Раньше это решалось строкой: SYSTEMConfig(SYS_FREQ, SYS_CFG_WAIT_STATES | SYS_CFG_PCACHE);
Сейчас фиг, надо доб библиотетеку хармони ставить, а ручками пока ещё не разобрался как и что нужно настроить
По пикам похоже сказать некому, или не там запостил.
Ладно вопрос по теме:
Есть глобальные переменные которые находятся в файле 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()
- Реклама
alex_, <xc.h> подключали? Он также должен быть на уровне вашего Global.h(а не в нём) и первым в очереди xc.h, потом Global.h
[uquote="alex_",url="/forum/viewtopic.php?p=4281716#p4281716"]Есть глобальные переменные которые находятся в файле Global.h
Всё объявлено через #ifndef, чтобы было подключено только 1 раз, чтобы файлы .с имели доступ к объявленным переменным. Почти в каждом .c файле идёт подключение к файлу Global.h, в компиляторе XC32v2.5 всё работало отлично[/uquote]
Вообще то НЕ ДОЛЖНО было работать.
Какое отношение #ifndef имеет к ПЕРЕМЕННЫМ? Это условие К ДЕФАЙНАМ, а не к переменным.
Я канешна не великий знаток Си, но правила требуют объявления внешних к файлу глобальных переменных через extern. И никаких других способов я не знаю.
А так да, я тоже сделал аналогичный финт на XC8 года два назад (версия вроде бы 2.01), но когда решил повторить это в Кейле для АРМов, то был немедленно послан матом эррором.
ЗЫ. К вопросу о целесообразности заявленного.
Проблема с глобальными переменными лишь говорит о том, что код написан ..... (вставьте сами, чтобы не обижаться).
Глобальных переменных много быть не должно. А остальным не в падлу и extern приклеить.
Всё объявлено через #ifndef, чтобы было подключено только 1 раз, чтобы файлы .с имели доступ к объявленным переменным. Почти в каждом .c файле идёт подключение к файлу Global.h, в компиляторе XC32v2.5 всё работало отлично[/uquote]
Вообще то НЕ ДОЛЖНО было работать.
Какое отношение #ifndef имеет к ПЕРЕМЕННЫМ? Это условие К ДЕФАЙНАМ, а не к переменным.
Я канешна не великий знаток Си, но правила требуют объявления внешних к файлу глобальных переменных через extern. И никаких других способов я не знаю.
А так да, я тоже сделал аналогичный финт на XC8 года два назад (версия вроде бы 2.01), но когда решил повторить это в Кейле для АРМов, то был немедленно послан матом эррором.
ЗЫ. К вопросу о целесообразности заявленного.
Проблема с глобальными переменными лишь говорит о том, что код написан ..... (вставьте сами, чтобы не обижаться).
Глобальных переменных много быть не должно. А остальным не в падлу и extern приклеить.
Ага, иначе бы и в версии 2,5 не заработало. С этим косяком я уже разобрался, больше не забываю подключить xcDeoptim писал(а):alex_, <xc.h> подключали?
КРАМ, всё же компиляторы микроси и XC очень отличаются, по началу я даже офигевал от того как он это делает, а именно XC каждый файл .с он обрабатывает отдельно а потом склеивает всё вместе. Микроси же все инклуды подключает в общую кучу получая один файл и его разом компилирует за одно и оптимизирует. За счёт этого не надо каждый раз инклудить <xc.h> в каждом .с файле, и в экстернах смысл пропадает постольку компилятор в итоге видит только один склеенный файл main.c в котором все переменные и все функции проекта.
[uquote="alex_",url="/forum/viewtopic.php?p=4282067#p4282067"]в экстернах смысл пропадает постольку компилятор в итоге[/uquote]
Не нужно собственную частную целесообразность распространять на стандарт языка.
Не все что удобно будет безопасно. Объявление переменных - это выделение памяти, а определение литералов и собственных типов - это просто инструкции препроцессора. Поэтому в этих РАЗНЫХ процессах действуют РАЗНЫЕ правила.
И если Микрочип решил причесать вольности в компиляторе, то это их право и святая обязанность. Иначе переносимости не добъешься.
Не нужно собственную частную целесообразность распространять на стандарт языка.
Не все что удобно будет безопасно. Объявление переменных - это выделение памяти, а определение литералов и собственных типов - это просто инструкции препроцессора. Поэтому в этих РАЗНЫХ процессах действуют РАЗНЫЕ правила.
И если Микрочип решил причесать вольности в компиляторе, то это их право и святая обязанность. Иначе переносимости не добъешься.
Я абсолютно не спорю с Микрочипом, я про то, что насколько сильно микроси отклонились от языка, такое чувство (при переносе кода), как будто с китайского на татарский переводишь. Хотя не спорю, микроси удобнее и старт быстрее.
А кстати насколько язык c позволяет партировать код из MPLAB в среду CubeIDE, что планируется в ближайшем будущем.
Поэтому и слажу с него, глюки оптимизатора задолбали настолько, что готов все свои проекты перенести на МПЛаб.Не все что удобно будет безопасно.
А кстати насколько язык c позволяет партировать код из MPLAB в среду CubeIDE, что планируется в ближайшем будущем.
[uquote="alex_",url="/forum/viewtopic.php?p=4282106#p4282106"]из MPLAB в среду CubeIDE[/uquote]
Я не пользуюсь средой STM-а. Предпочитаю Keil. В Keil переносится на ура. Но нужно понимать, что переносится только аппаратно независимый код. То есть инициализацию, драйверы и обработчики прерываний нужно писать заново.
Я не пользуюсь средой STM-а. Предпочитаю Keil. В Keil переносится на ура. Но нужно понимать, что переносится только аппаратно независимый код. То есть инициализацию, драйверы и обработчики прерываний нужно писать заново.
[uquote="КРАМ",url="/forum/viewtopic.php?p=4282109#p4282109"]То есть инициализацию, драйверы и обработчики прерываний нужно писать заново.[/uquote]
Это да, знаем, проходили
mikroC for PIC32 -> mikroC for ARM
Это да, знаем, проходили
mikroC for PIC32 -> mikroC for ARM
Ботлоадером никто из гармонии случайно не пользовался? Я проект создал, залил, а где программу взять которая бы взаимодействовала с этим загрузчиком или она где то в самой среде MPLAB'a. Нашёл на просторах интернета пакет с программой PIC32UBL.exe (AN1388_Source_Code_2014_02_14), но это старьё уже не работает 
Ещё один момент выяснил дойдя до bootloader'a, настройки я храню за пределами основной прошивки, чтобы при перезаписи настроек не потереть прошивку, делал это вот так
Когда я открыл файл прошивки то несколько приофигел, если я использую одну константу компилятор ещё переваривает, если 2 константы с разными адресами, то тупо делит прошивку и часть ее располагает между этими константами, где по идее ничего лишнего быть не должно 
---
Основная прошивка должна лежать по адресу 0x1D000000-0x1D011000, после деления получаем 0x1D000000-0x1D00ECD0 и 0x1D020000-0x1D022010, константы располагаются по адресам 0x1D020000, 0x1D021000, 0x1D022000, и как раз оказываются в прошивке. А в диапазоне: 0x1D00ECD0 - 0x1D020000 одни FF
Код: Выделить всё
const unsigned char __attribute__((address(0x1D020000))) ConstTST []= {1,2,3,4,5,6,7,8,9,0};---
Основная прошивка должна лежать по адресу 0x1D000000-0x1D011000, после деления получаем 0x1D000000-0x1D00ECD0 и 0x1D020000-0x1D022010, константы располагаются по адресам 0x1D020000, 0x1D021000, 0x1D022000, и как раз оказываются в прошивке. А в диапазоне: 0x1D00ECD0 - 0x1D020000 одни FF
Кто ж такое Вам сказал, что не должно ?alex_ писал(а):то тупо делит прошивку и часть ее располагает между этими константами, где по идее ничего лишнего быть не должно
Вы зарезервировали для своих нужд эти адреса ? Скорее всего - нет. А компилятору пофиг, свободно - он забрал
Спасибо за наводку, поскольку среда для меня новая, ещё не во всём разобрался.
Зарезервировал память строкой: -mreserve=prog@0x1D020000:0x1D023000, но теперь константы туда положить не могу
Зарезервировал память строкой: -mreserve=prog@0x1D020000:0x1D023000, но теперь константы туда положить не могу
Вы если вмешиваетесь в адресацию, то делать это необходимо с помощью скрипта линкера.
- Сообщения: 6
- Зарегистрирован: Пт окт 28, 2022 14:28:02
Добрый день!
Подскажите, как передать extern char * _Lidata; из main.c в *.s?
Пробую использовать даташит, поэтому не заморачиваюсь с именами переменных. Проц в макете 877А
#include "main.h"
#include <xc.h>
//==============
unsigned int volt;
float inp_volt;
float akb_volt;
float out_volt;
unsigned char inp;
unsigned char akb;
unsigned char out;
unsigned char log, low_akb;
unsigned char uart;
unsigned char temp;
#define Baud_rate 9600
volatile unsigned char temp2;
extern char * _Lidata;
void barfunc();
void UART_Initialize()
{
TRISC=0X00;
Программа на асм:
#include <xc.inc>
psect barfunc,local,class=CODE,delta=2 ; PIC10/12/16
; psect barfunc,local,class=CODE,reloc=2 ; PIC18
global _ds19 ; extern of bar function goes in the C source file
_ds19:
movwf PORTA
; movf PORTA,w ; here we use a symbol defined via xc.inc
return
Подскажите, как передать extern char * _Lidata; из main.c в *.s?
Пробую использовать даташит, поэтому не заморачиваюсь с именами переменных. Проц в макете 877А
#include "main.h"
#include <xc.h>
//==============
unsigned int volt;
float inp_volt;
float akb_volt;
float out_volt;
unsigned char inp;
unsigned char akb;
unsigned char out;
unsigned char log, low_akb;
unsigned char uart;
unsigned char temp;
#define Baud_rate 9600
volatile unsigned char temp2;
extern char * _Lidata;
void barfunc();
void UART_Initialize()
{
TRISC=0X00;
Программа на асм:
#include <xc.inc>
psect barfunc,local,class=CODE,delta=2 ; PIC10/12/16
; psect barfunc,local,class=CODE,reloc=2 ; PIC18
global _ds19 ; extern of bar function goes in the C source file
_ds19:
movwf PORTA
; movf PORTA,w ; here we use a symbol defined via xc.inc
return
- Сообщения: 151
- Зарегистрирован: Ср дек 01, 2021 15:09:09
Добрый день.
Подскажите, при написании программы на ассемблере, используются большие или маленькие буквы? Я повторил пример из самоучителя, там было написано большими буквами, у меня повылазили ошибки при компиляции. Видел, что многие используют маленькие буквы. Размер букв имеет значение в ассемблере или нет?
Подскажите, при написании программы на ассемблере, используются большие или маленькие буквы? Я повторил пример из самоучителя, там было написано большими буквами, у меня повылазили ошибки при компиляции. Видел, что многие используют маленькие буквы. Размер букв имеет значение в ассемблере или нет?
Для написания резервированного синтаксиса ассемблера не имеет. Для остального кода зависит от настроек среды, но по дефолту имеет значение. То есть имена регистров и своих переменных чувствительны к регистру.


