It is generally bad practice to throw in side effects (as printing) into your predicates. But on the other hand, your question doesn't make it clear how you want to get the decreasing values.
Either way, here is the logic of a counter:
down(N, N). % the counter value
down(N, X) :-
succ(N0, N), % one less, until you reach zero
down(N0, X). % next counter value
You can then either simply query:
?- down(3, X).
or if you prefer, you can print out everything at once:
?- forall( down(3, X), format("X = ~d~n", [X]) ).
See here for a demo that uses SWI-Prolog's SWISH.
Some comments: the use of succ/2 makes sure that the first argument is a non-negative integer. The use of forall/2 for printing demonstrates how to make the side effect explicit.