An internal combustion engine (1) causes an air/fuel mixture in a cylinder
to combust due to ignition by a spark plug (14). The engine controller
(50) calculates a crank angle at knock on the basis of an operating state
of the engine (1) (53 54), calculates a knock intensity on the basis of
this crank angle at knock (54), calculates a limit ignition timing at
which knock is not generated, on the basis of the knock intensity (54),
and controls the ignition timing of the spark plug (14) to the limit
ignition timing at which knock is not generated (55). Therefore, suitable
control of the ignition timing is achieved, by means of a small number of
adaptation steps.