• Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

PIC microcontroller

Not open for further replies.


New Member
Hey guys, I want to generate short duration pulses on three different pins of PIC16F877A. I want the total duration of pulses for 12us as follows:

The pulses on pin 1 and pin 2 will start at the same time, the pulse on pin 1 will stop at 6us whereas the pulse on pin2 will stop at 8us which marks the beginning of the pulse on the pin 3 which will last for 4us.

Thanks in advance.

A graphical illustration is attached below.


Well-Known Member
If this is the only task you're going to perform on the PIC than big-banging as Nigel suggests is the best way to go. For example, if running at 1 MHz (4 MHz FOSC) (RA0 as pin 1, RA1 as pin 2, RA2 as pin 3):

  ; RA0 as pin 1, RA1 as pin 2, RA2 as pin 3
  movlw 0x3     ; pin 1 and 2 high, pin 3 low
  movwf PORTA   ; 0/12 us mark

  nop           ; 2 us mark

  nop           ; 4 us mark

  movlw 0x1     ; only pin 1 high
  movwf PORTA   ; 6 us mark

  movlw 0x4     ; only pin 3 high
  movwf PORTA   ; 8 us mark

  goto loop     ; takes 2 cycles to go back, then 2 cycles to arrive to 12 us mark

Otherwise, look at a PIC with at least 3 PWM cannels, such as PIC12F1501.
Not open for further replies.

Latest threads

EE World Online Articles