Every Triangular pulse is disturb.
Code:
' chip - PIC18F4620
@ __CONFIG _CONFIG1H, _OSC_HSPLL_1H
@ __CONFIG _CONFIG3H, _PBADEN_OFF_3H & _MCLRE_ON_3H
DEFINE OSC 40
INCLUDE "modedefs.bas"
include "My_EasyPIC4_LCD.bas"
DEFINE ADC_BITS 10
DEFINE ADC_CLOCK 2
ADCON0 = %00001111
ADCON1 = %00001011
B0 VAR WORD
B1 VAR WORD
B2 VAR WORD
B3 VAR WORD
B4 VAR WORD
B5 VAR WORD
B6 VAR WORD
C0 VAR BYTE
C1 VAR BYTE
PAUSE 1000
LCDOUT $FE,1
PAUSE 1000
TRISB=$00
TRISD=%11110000 'Bits-4,5,6,7 Inputs, & Bits-3,2,1,0 Outputs of PORTD
Keyscane:
LCDOUT $FE, 1
LCDOUT "Scanning"
IF PORTD.4 = 1 THEN SquareWave
IF PORTD.5 = 1 THEN TriangularWave
IF PORTD.5 = 1 THEN SineWave
GOTO Keyscane
SineWave: IF PORTD.5 = 1 THEN SineWave 'Wait for release button
TRISD=$00 'Make PortD an Output Port
LCDOUT $FE, 1
LCDOUT "Sine-Wave"
pause 200
C0=0 'Initialize the Sine Angle
Init_Sine: TRISD=$00 'PortD an Output Port
PORTD=((((SIN C0)+127)/10)*5)+50 '(+127) Removes the Negative Values
'Ampitude (Peak Value) = 1/2 of 5/10
'of the Maximum Output Voltage
'50 Represents the DC Offset
'DC Offset = 1/2 of 50/255
'of the Maximum Output Voltage
'The DC Offset is Measured between Zero
'and the Negative Peak of the Sinewave.
'To Obtain the Maximum Value, Change
'Both the 5 and the 10 to a 1.
pauseus 1 'Pause Allowed between Angle Changes
'This will create, approximately, 100 Hz
C0=C0+1 'Increments the Sine Angle by 1 out of 255
GOTO Init_Sine
SquareWave: IF PORTD.4 = 1 THEN SquareWave
TRISD=$00
LCDOUT $FE, 1
LCDOUT "Square-Wave"
PAUSE 200
Init_Square: TRISD=$00 'PortD an Output Port
PORTD=0 'Square-Wave at PortD
'Starting with Decimal 0 out of 255
'of the Maximum Output Voltage.
PAUSEUS 2 'The Smallest PAUSE Allowed is 5 micro-seconds.
'approximately 46KHz.
PORTD=255
PAUSEUS 2
GOTO Init_Square
TriangularWave: IF PORTD.5 = 1 THEN TriangularWave
TRISD=$00
LCDOUT $FE, 1
LCDOUT "Triangle-Wave"
PAUSE 500
Init_Triangluar: TRISD=$00 'PortD an Output Port
PORTD=0 'Triangle-Wave at PortD
'Starting with Decimal 0 out of 255
'of the Maximum Output Voltage.
PAUSE 1 'The Smallest PAUSE Allowed is 1 micro-second.
'10 micro-seconds, in 1 micro-second steps,
'approximately, 40KHz.
PORTD=25
PAUSEUS 1
PORTD=50
PAUSEUS 1
PORTD=75
PAUSEUS 1
PORTD=100
PAUSEUS 1
PORTD=125
PAUSEUS 1
PORTD=150
PAUSEUS 1
PORTD=175
PAUSEUS 1
PORTD=200
PAUSEUS 1
PORTD=225
PAUSEUS 1
PORTD=255
PAUSEUS 1
PORTD=225
PAUSEUS 1
PORTD=200
PAUSEUS 1
PORTD=175
PAUSEUS 1
PORTD=150
PAUSEUS 1
PORTD=125
PAUSEUS 1
PORTD=100
PAUSEUS 1
PORTD=75
PAUSEUS 1
PORTD=50
PAUSEUS 1
PORTD=25
GOTO Init_Triangluar
END
.
Bookmarks