I work but it is hard
this code work
' pic16F877
'cycle = !-!_!-!_!-!_!-!_!-!__!--!_
' i use lcd just to see W0
' Define LCD registers and bits
DEFINE LCD_DREG PORTD
DEFINE LCD_DBIT 8
DEFINE LCD_RSREG PORTE
DEFINE LCD_RSBIT 0
DEFINE LCD_EREG PORTE
DEFINE LCD_EBIT 1
DEFINE OSC 4 ' use 20 MHZ oscillator
INCLUDE "modedefs.bas" ' Include serial modes
W0 var word
W1 var word
i var byte
up var PORTB.4
dn var PORTB.5
rst var portb.6
b0 var byte
PO var portb.3 ' Define pulse output pin
'initialisation
ADCON1 = %0000111
TRISA = %1
w0=100
i=0
B0=0
Low PO ' Initialize output polarity
intcon=%0001000
On Interrupt Goto bouton ' Define interrupt handler
INTCON = $90 ' Enable INTE interrupt
'*********************
pulse:
for i =1 to 5
Pulsout 3,W0 ' Generate pulse
pause W0/100 ' Intra-pulse delay
next i
Pulsout 3,W0
W1=W0*2
Pause W1/100
Pulsout 3,W1
'visualisation sur LCD
Lcdout $FE,$C0,"W0 = ",dec W0," "
Goto bouton
'*********************
inc:
W0 = W0 + 10
goto pulse
'*********************
decr:
W0 = W0 - 10
goto pulse
'*********************
reset:
w0 = 100
goto pulse
'*********************
bouton :
disable
button up,1,0,0,b0,1,inc 'si bouton1 sur port1=1 aller à calibration
button dn,1,0,0,b0,1,decr 'si bouton1 sur port1=1 aller à calibration
button rst,1,0,0,b0,1,reset 'si bouton1 sur port1=1 aller à calibration
enable
goto pulse
but why on the piture the period after double pulse the low period its not equal w0?




Bookmarks