Aziz be careful from german people

.. //-------- External Port Definitions --------- #define EXTPORT_CTRL PORTD #define EXTPORT_ALE 6 // pin #20/PD6/ICP1 #define EXTPORT_DLE 7 // pin #21/PD7/OC2 #define EXTPORT_PORT PORTC .. // Op-code implementations .. //CMD_PCH: Change external port and write data // syntax: PCH <addr8> <data8> // addr8: Port Address (byte: 0=PORTE, 1=PORTF, 2=PORTG, 3=PORTH, ..) // data8: Port Data (byte: 0-255) ; clocks: 6+14 = 20 (16 MHz: 1250 ns, 20 MHz: 1000 ns) Cmd_PCH: ld PI_Param1, PI_PC+ ; (2) Get External Port Address ld PI_Param2, PI_PC+ ; (2) Get External Port Data ; Port Address Access cbi EXTPORT_CTRL, EXTPORT_DLE ; (2) Disable Data Transparent-Latch out EXTPORT_PORT, PI_Param1 ; (1) Write External Port Address sbi EXTPORT_CTRL, EXTPORT_ALE ; (2) Enable External Port Address Latch cbi EXTPORT_CTRL, EXTPORT_ALE ; (2) Latch External Port Address ; Port Data Access out EXTPORT_PORT, PI_Param2 ; (1) Write External Port Data sbi EXTPORT_CTRL, EXTPORT_DLE ; (2) Enable Data Transparent-Latch CMD_PREFETCH ; (4) Macro: Prefetch next op-code and decode
//CMD_PST: Store data into external port (parameter: port-data (byte) ) // direct op-code vector implementation // syntax: PST <data8> // data8: Port Data (byte: 0-255) ; cycles: (4) + 3 = 7 (16 MHz: 437.5 ns, 20 MHz: 350 ns) .ORG Cmd_Vector+CMD_PST ld PI_Port, PI_PC+ ; (2) Get External Port Data out EXTPORT_PORT, PI_Port ; (1) Write External Port Data CMD_PREFETCH ; (4) Macro: Prefetch next op-code and decode
//CMD_NOP3, NOP2, NOP1, NOP: no operation (direct implementation) // NOP3 cycles: (4) + 3 = 7 (16 MHz: 437.5 ns, 20 MHz: 350 ns) .ORG Cmd_Vector+CMD_NOP3 ; NOP+3 cpu-cycles nop // NOP2 cycles: (4) + 2 = 6 (16 MHz: 375 ns, 20 MHz: 300 ns) .ORG Cmd_Vector+CMD_NOP2 ; NOP+2 cpu-cycles nop // NOP1 cycles: (4) + 1 = 5 (16 MHz: 312.5 ns, 20 MHz: 250 ns) .ORG Cmd_Vector+CMD_NOP1 ; NOP+1 cpu-cycle nop // NOP cycles: (4) + 0 = 4 (16 MHz: 250 ns, 20 MHz: 200 ns) .ORG Cmd_Vector+CMD_NOP ; NOP CMD_PREFETCH ; (4) Macro: Prefetch next op-code and decode
//.. SWAIT decoding part (vector) //CMD_SWAIT2: active short wait, parameter: 8-bit delay counter .ORG Cmd_Vector+CMD_SWAIT2 ; SWAIT+2 cpu-cycles nop //CMD_SWAIT1: active short wait, parameter: 8-bit delay counter .ORG Cmd_Vector+CMD_SWAIT1 ; SWAIT+1 cpu-cycle nop //CMD_SWAIT: active short wait, parameter: 8-bit delay counter .ORG Cmd_Vector+CMD_SWAIT rjmp Cmdexe_SWAIT ; (2) //.. SWAIT implementation (execution code) //.. somewhere above 0x0100 program code address //CMD_SWAIT2: active short wait, parameter: 8-bit delay counter ; cycles: (6) + 2 + 1+n*3 = 9+n*3 //CMD_SWAIT1: active short wait, parameter: 8-bit delay counter ; cycles: (6) + 1 + 1+n*3 = 8+n*3 //CMD_SWAIT: active short wait, parameter: 8-bit delay counter ; cycles: (6) + 0 + 1+n*3 = 7+n*3, ;(16 MHz: 437.5 ns + n*187.5 ns, min: 625 ns, max: 48.4375 µs) (n=0 -> n=256) ;(20 MHz: 350 ns + n*150 ns, min: 500 ns, max: 38.750 µs) (n=0 -> n=256) Cmdexe_SWAIT: ld PI_Param, PI_PC+ ; (2) get delay counter Cmdexe_SWAITLoop: dec PI_Param ; (1) counter-- brne Cmdexe_SWAITLoop ; (2) for branch, (1) for loop end CMD_PREFETCH ; (4) Macro: Prefetch next op-code and decode
Comment