PURPOSE: To perform constantly accurate detection of a missfire by determining a difference in the number of revolutions of an engine between cylinders the combustion stroke order of which is reversed and deciding the starting and completion of the occurrence of a miss fire when the change of the difference is a negative or a positive value based on a given level.
CONSTITUTION: In an ECU 41, various sensors 8, 9, 25, 27, 29, 32, 34, and 35 to detect the operation state of an engine are connected to the input port of an I/O interface 45. Meanwhile, various actuators 11, 12, and 14 to control the operation state of the engine are connected to an output port. A CPU 42 controls an air-fuel ratio, an ignition timing, and the number of idle revolutions according to the control program of an ROM 43, and individually decides the misfire states of cylinders. In this case, a difference in the number of revolutions of an engine between cylinders the combustion stroke order of which is reversed is determined. Further, it is decided that the occurrence of a misfire is started when the change of the difference is a negative value below a given level of the difference between the cylinders and within a given range.