
I had to decode a very noisy signal from 433MHz ASK RX module, so I did it with interrupts and capturing/measuring rise/fall time differences in uS with system_get_time in order to decode pulse widths.
I'm still working on it:
https://gist.github.com/zerog2k/00bad44d59bcd7937420
I think my ISR is quite heavy, but it works for the most part. Still tuning it, but I think i would have rather implemented this with a uS resolution timer: use interrupts to wait for sync header, then fire a short interval timer to read known number of signal states at regular interval (in uS), then when signal is done, I know that the next signal will come in 18 seconds - stop interrupts and sleep for 17 seconds before turning on interrupts and watching for next sync header.