process (CLK, RES, SET,UP_DN)
begin
if RES ='0' then
MOD10OUT_temp <= (others => '0');
MOD10CARRY_temp<= '0';
elsif rising_edge(SET) then
MOD10OUT_temp <= MOD10OUT_temp+1;
if MOD10OUT_temp = "1010" then
MOD10OUT_temp <= "0000";
end if;
elsif rising_edge(CLK) then
if UP_DN ='1' then
MOD10OUT_temp <= MOD10OUT_temp+1;
if MOD10OUT_temp = "1010" then
MOD10OUT_temp <= "0000";
MOD10CARRY_temp <= '1';
else
MOD10CARRY_temp <= '0';
end if;
else
MOD10OUT_temp <= MOD10OUT_temp-1;
if MOD10OUT_temp = "1111" then
MOD10OUT_temp <= "1001";
MOD10CARRY_temp <= '1';
else
MOD10CARRY_temp <= '0';
end if;
end if;
end if;
end process;