D.C. in theory, everything should work, but in practice, things may not work quite right. It can be things like marginally different speeds between a pin switching high and low, which are then exaggerated by drives that respond slight differently to high/low inputs and/or slight lag due to the different switching speeds. However with modern drives, it's pretty much a non-issue, but why take the chance?

Personally, given the choice of doing something in hardware or software, I'd personally do it in hardware every time, as it helps eliminate potential issues.