Zmieszany niektórymi postami postanowiłem sprawdzić różnicę między komendami
Set PORTA.2 oraz
Set PINA.2
Program w Bascomie banalny:
kod wynikowy w asemblera:
Drugi przykład:
kod wynikowy asemblera:
Teraz prośba i pytanie do znawców asemblera o sprawdzenie i wykazanie różnicy.
Pierwszy przykład celowo bez config porta = output.
Set PORTA.2 oraz
Set PINA.2
Program w Bascomie banalny:
$regfile = "m32def.dat"
$crystal = 16000000
Set Porta.2
Set Pina.3
kod wynikowy w asemblera:
-----------------------------------
AVR DISASSEMBLER LISTING
Address Opcode Instruction
-----------------------------------
000000 940C JMP L1
000001 002A
000002 9518 RETI
000003 0000 NOP
000004 9518 RETI
000005 0000 NOP
000006 9518 RETI
000007 0000 NOP
000008 9518 RETI
000009 0000 NOP
00000A 9518 RETI
00000B 0000 NOP
00000C 9518 RETI
00000D 0000 NOP
00000E 9518 RETI
00000F 0000 NOP
000010 9518 RETI
000011 0000 NOP
000012 9518 RETI
000013 0000 NOP
000014 9518 RETI
000015 0000 NOP
000016 9518 RETI
000017 0000 NOP
000018 9518 RETI
000019 0000 NOP
00001A 9518 RETI
00001B 0000 NOP
00001C 9518 RETI
00001D 0000 NOP
00001E 9518 RETI
00001F 0000 NOP
000020 9518 RETI
000021 0000 NOP
000022 9518 RETI
000023 0000 NOP
000024 9518 RETI
000025 0000 NOP
000026 9518 RETI
000027 0000 NOP
000028 9518 RETI
000029 0000 NOP
00002A E58F L1: LDI R24,$5F
00002B BF8D OUT SPL,R24
00002C E4C0 LDI YL,$40
00002D E3E8 LDI ZL,$38
00002E 2E4E MOV R4,ZL
00002F E088 LDI R24,$08
000030 BF8E OUT SPH,R24
000031 E0D8 LDI YH,$08
000032 E0F8 LDI ZH,$08
000033 2E5F MOV R5,ZH
000034 EFEE LDI ZL,$FE
000035 E0F7 LDI ZH,$07
000036 E6A0 LDI XL,$60
000037 E0B0 LDI XH,$00
000038 95A8 WDR
000039 B784 IN R24,MCUCSR
00003A 2E08 MOV R0,R24
00003B 7F87 ANDI R24,$F7
00003C BF84 OUT MCUCSR,R24
00003D E188 LDI R24,$18
00003E 2799 CLR R25
00003F BD81 OUT WDTCR,R24
000040 BD91 OUT WDTCR,R25
000041 2788 CLR R24
000042 938D L2: ST X+,R24
000043 9731 SBIW ZH:ZL,1
000044 F7E9 BRNE L2
000045 2466 CLR R6
000046 9ADA SBI PORTA,PA2
000047 9ACB SBI PINA,PINA3
000048 9731 L3: SBIW ZH:ZL,1
000049 F7F1 BRNE L3
00004A 9508 RET
00004B 9468 BSET 6
00004C F862 BLD R6,2
00004D 9508 RET
00004E 94E8 BCLR 6
00004F F862 BLD R6,2
000050 9508 RET
Drugi przykład:
$regfile = "m32def.dat"
$crystal = 16000000
Config Porta = Output
Set Porta.2
Set Pina.3kod wynikowy asemblera:
-----------------------------------
AVR DISASSEMBLER LISTING
Address Opcode Instruction
-----------------------------------
000000 940C JMP L1
000001 002A
000002 9518 RETI
000003 0000 NOP
000004 9518 RETI
000005 0000 NOP
000006 9518 RETI
000007 0000 NOP
000008 9518 RETI
000009 0000 NOP
00000A 9518 RETI
00000B 0000 NOP
00000C 9518 RETI
00000D 0000 NOP
00000E 9518 RETI
00000F 0000 NOP
000010 9518 RETI
000011 0000 NOP
000012 9518 RETI
000013 0000 NOP
000014 9518 RETI
000015 0000 NOP
000016 9518 RETI
000017 0000 NOP
000018 9518 RETI
000019 0000 NOP
00001A 9518 RETI
00001B 0000 NOP
00001C 9518 RETI
00001D 0000 NOP
00001E 9518 RETI
00001F 0000 NOP
000020 9518 RETI
000021 0000 NOP
000022 9518 RETI
000023 0000 NOP
000024 9518 RETI
000025 0000 NOP
000026 9518 RETI
000027 0000 NOP
000028 9518 RETI
000029 0000 NOP
00002A E58F L1: LDI R24,$5F
00002B BF8D OUT SPL,R24
00002C E4C0 LDI YL,$40
00002D E3E8 LDI ZL,$38
00002E 2E4E MOV R4,ZL
00002F E088 LDI R24,$08
000030 BF8E OUT SPH,R24
000031 E0D8 LDI YH,$08
000032 E0F8 LDI ZH,$08
000033 2E5F MOV R5,ZH
000034 EFEE LDI ZL,$FE
000035 E0F7 LDI ZH,$07
000036 E6A0 LDI XL,$60
000037 E0B0 LDI XH,$00
000038 95A8 WDR
000039 B784 IN R24,MCUCSR
00003A 2E08 MOV R0,R24
00003B 7F87 ANDI R24,$F7
00003C BF84 OUT MCUCSR,R24
00003D E188 LDI R24,$18
00003E 2799 CLR R25
00003F BD81 OUT WDTCR,R24
000040 BD91 OUT WDTCR,R25
000041 2788 CLR R24
000042 938D L2: ST X+,R24
000043 9731 SBIW ZH:ZL,1
000044 F7E9 BRNE L2
000045 2466 CLR R6
000046 EF8F LDI R24,$FF
000047 BB8A OUT DDRA,R24
000048 9ADA SBI PORTA,PA2
000049 9ACB SBI PINA,PINA3
00004A 9731 L3: SBIW ZH:ZL,1
00004B F7F1 BRNE L3
00004C 9508 RET
00004D 9468 BSET 6
00004E F862 BLD R6,2
00004F 9508 RET
000050 94E8 BCLR 6
000051 F862 BLD R6,2
000052 9508 RET
Teraz prośba i pytanie do znawców asemblera o sprawdzenie i wykazanie różnicy.
Pierwszy przykład celowo bez config porta = output.
