Standalone Arduino Expand I/O

Hay all;
i need a help with expand of my project.
i used standalone atmega328p of my arduino to switch on and switch off 10 motors by Relays.
the switching times depends on times that taken from RTC DS1307 every day.
my Problem is that i need to increase the motors "relays" to be 20 motor
i need more 10 points to my arduino (i used A4, A5 in RTC) any help !!!!!!!!!
Thank you

Use a couple of shift registers. TPIC6B595 with 8 outputs each capable of sinking 150mA continuous, 3 chips will let you control 24 relays while using just 3 IO pins on the 328P.

Thank you CrossRoads,
in that way, How can i control each point like normal I/O points

I just need to digitalWrite() each point alone

Every time you needed to switch a pin, you'd have to send new values to the shift registers, with that one bit set or unset. You can't use digitalWrite() to control pins on any sort of port expander.

Use SPI to send your outputs:

Maybe this one fits your current skill level:

Download their library and you can use a similar syntax to digitalWrite.

Or use an I2C port expander like PCF8574T.

PCF8574T.
"Latched outputs directly drive LEDs" Ok, sounds good for LEDs. What about motors?

"Total package sink capability of 80 mA" So, maybe 1 motor.

Driving 20 motors, keep the state of the motors in 3 bytes, each bit representing 1 motor.
When a motor state needs to change, change its bit, and send all 3 bytes out again. Pretty simple.