Tasker can do this by using the record audio task where you can select the source (Microphone, incomming call, outgoing call, call). Just tested it by creating a widget for microphone and one for Call. Downside is it looks like you'll need a third widget for a Record Audio Stop task as I didn't see anything about toggling the function. Also, "time limit" is only limited by the size of your SD card.