> old models, say 16F84 not having them The F84 does have them, and I think legacy and backward compatibility is partly the reason You'll notice that interrupt-on-change is also on PortB, which I'm sure was originally intended for keypad interfacing. Manuals still cite a keypad and IOC example ================= Here's a little (hah!) problem I had yesterday, pull-up related. Eventually I had the dim recollection of something like it before, which led to the solution I have a handful of 18F1320s as slaves to an 18F4550. A 12F675 provides a 1Hz /tick to all on a common line I want to use one of these 1320s for analogue measurement, and set it up to do so. But the 4550 wouldn't recognise that 1320 in the system. I spent quite some time with the scope and an analyser, going through the 1320 s/w to try and figure out why it wasn't acknowledging the 4550's identification request. I could see nothing wrong anywhere, or physically, and it's s/w that runs OK on other 1320s in the system Then I had a look at the tick line, which is involved in the initial synchronisation between all micros. I found low-going pulse wasn't going below 2V, and therefore not being detected by the 1320, which therefore didn't allow it to proceed to the ID section So, this time init s/w was pulled apart. But what is there to look at ? TRIS and set the AD registers, that's about it movlw b'00101000' ; 0 bbclk ; 0 bbdata ; 1 /MCLR ; 0 Vee ; 1 Vref+ (5.12V) ; 0 IRQ out ; 1 AN1 ; 1 AN0 movwf trisa movlw b'00010011' ; 0 tick LED ; 0 sample LED ; 0 n/u ; 1 UART Rx and 10ms reference ; 0 SDA ; 0 SCL ; 1 UART Tx (temporary) ; 1 tick i/p movwf trisb movlw b'01000000' ; 01 Vref+, Vss ; x ; 000 channel 0 ; 0 go/done ; 0 A/D module off movwf adcon0 movlw b'11111100' ; 0 AN1 ; 0 AN0 movwf adcon1 movlw b'10000000' ; 1 right-justified ; x ; 000 Tad ; 000 clock movwf adcon2 bcf tick ;synch wait_tk btfss tick ;INT0IF=1 bra $-2 ;a bit more code, then clrf intcon clrf intcon2 bsf intcon2,7 ;pull-ups off clrf intcon3 Then the penny dropped. I had this happen once before and the solution is ....... Move the intcon clearance to BEFORE the tris setting or the whole thing just doesn't work. It seems to me that the logic gets its panties in a bunch for some reason and a TRIS = 1 setting is ignored, making the desired pin wholly or partially an output, which in this case was fighting the output of the 12F675 BTW, another 1320 is using 4-bit IOC, and b4 is also Rx, which is a bit of a nuisance. Similarly some pin multiplexing on the 4550 means it isn't a drop-in for earlier 18F45xx -- http://www.piclist.com PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist