> The question is, would I be able to measure pulse-widths of about 100ms > by simply using a 10MHz clock instead of a 20MHz? And even greater by > using a 4MHz? You can measure the width of any pulse from a few nanoseconds upwards. To record the length of long pulses just use more of the internal RAM as counters. The higher the resolution, the more memory you'll use. Say if you use the timer interrupt, that will give you a resolution of ((crystal freq)/4)/256, eg for a 3.2768MHz = 3276800/4/256 = 819200/256 = 3200 interrupts per second or 312.5us resolution (without loading the timer or using the pre- scaler). A 10.24MHz would give you 100us resolution. Or you can measure the clock cycles in a loop that starts measuring when the pulse goes high, and exits when the pulse goes low. In the loop you would increment RAM counters. That would give you good resolution over a long period > > Would either the 16F84 or 16F877 be appropriate for this application, > assuming I don't need the additional I/O pins? The F84 (or preferably the F628) runs at the same speeds as the F877. A 20MHz crystal would give you 20,000,000/4 = 5,000,000 = 200ns instruction execution time. At 100ms (100,000,000ns) you'd need to count to 500,000,000 or 1DCD6500h, which would take just 4 RAM bytes 00 + 25856 (=101*256) + 13434880 (=205*65536) + 486539264 (=13*16777216) ------------------ 500,000,000 -- http://www.piclist.com hint: The PICList is archived three different ways. See http://www.piclist.com/#archives for details.