tested working code, on stc89c58rd+