A Pokemon's current status is determined by an unencrypted
dword in its data structure, though three of the four bytes don't seem to do anything so I have no idea why its a dword. This allows you to set a Pokemon's status by using a simplewritebytetooffset command and it will immediately take effect. The byte you have to change for the leading Pokemon in your party is 0x20242D4, your second Pokemon's offset is 100 bytes beyond it at 0x2024338, the third is another 100 bytes beyond that etc. Here's a quick list of what values will give which status:
There are also some ASM routines that allow you easily give a status to a Pokemon, special 0x64 in JPAN's engine is dedicated to this and Shiny Quagsire did a sleep routine in
his ASM tutorial that you could tailor for other statuses.