I don't know about the vicodin, but you can give him Benadryl (the regular tablets) in case there is any inflamed or swollen tissue within his leg. 1mg for every pound he weighs, every 6-8 hours. It should also make him a bit drowsy, which may help with pain.
Get him to a vet though, because dogs generally have a very high pain tolerance, and when they show that they're hurting, it's usually not good. I had a Boxer that ruptured the ligaments in both back knees. The vet said the injuries appeared to be 1-3 months old, but he first starting limping about a week before I took him into the vet! He had to have two very expensive surgeries to fix his knees. Had we caught the injuries earlier, the surgies may have been able to be avoided.

Poor baby.. I hope he's ok. Give him a hug for me!!!!