HELLO, I HAVE THE SAME PROBLEM YOU HAD SOLVED. PLEASE HELP ME TO COMPILE THIS CODE.
Code:DEFINE OSC 4 @ DEVICE pic16F876 @ DEVICE pic16F876, WDT_OFF @ DEVICE pic16F876, PWRT_On @ DEVICE pic16F876, PROTECT_OFF TRISA=%11111111 TRISB=%00000000 TRISC=%00000000 PORTA=0 PORTB=0 PORTC=0 DEFINE LCD_DREG PORTB DEFINE LCD_DBIT 4 DEFINE LCD_RSREG PORTB DEFINE LCD_RSBIT 2 DEFINE LCD_EREG PORTB DEFINE LCD_EBIT 3 DEFINE LCD_BITS 4 DEFINE LCD_LINES 2 DEFINE CCP1_REG PORTC DEFINE CCP1_BIT 2 ON INTERRUPT GoTo KESME ADCON1 = 7 OPTION_REG=%10000010 INTCON=%10100001 TMR0=0 T2CON = %00000110 PR2=124 SYMBOL YUKARI=PORTA.0 SYMBOL ASAGI=PORTA.1 SYMBOL ARTTIR=PORTA.2 SYMBOL AZALT=PORTA.3 SYMBOL JOG=PORTA.4 SYMBOL DUR=PORTA.5 ROLE VAR PORTC.3 LED1 VAR PORTC.1 LED2 VAR PORTC.0 MODS VAR BIT YON VAR BIT U VAR BYTE W VAR BYTE ADR VAR BYTE SAYIH VAR BYTE SAYIL VAR BYTE SON VAR BYTE SYC VAR BYTE SNY VAR BYTE SAYAC VAR BYTE DUTY VAR BYTE I VAR WORD PERYOT VAR WORD HAM_DUTY VAR WORD FREKANS VAR WORD PAUSE 200 LCDOUT $FE,1 GIRIS: LCDOUT $FE,$83,"INVERTER" LCDOUT $FE,$C4,"WITH PWM" PAUSE 1500 LCDOUT $FE,1 DUTY=0:LED1=0:LED2=1 GOSUB FREKANS_HESAP GOSUB EKRAN GOSUB DUTY_YAZ GOSUB PWM_ON BASLA: IF DUTY>0 THEN IF JOG=0 AND YON=0 THEN YON=1 SON=DUTY GOTO SAG ENDIF IF JOG=0 AND YON=1 THEN YON=0 SON=DUTY GOTO SOL ENDIF ENDIF IF DUR=0 and duty>0 THEN GOTO DURDUR ENDIF GOSUB FREKANS_HESAP GOSUB DUTY_KONTROL GOSUB FREKANS_KONTROL GOTO BASLA FREKANS_KONTROL: IF ARTTIR=0 THEN WHILE ARTTIR=0:WEND PR2=PR2-1 gosub DUTY_YAZ IF PR2<5 THEN PR2=5 ENDIF IF AZALT=0 THEN WHILE AZALT=0:WEND PR2=PR2+1 gosub DUTY_YAZ IF PR2>124 THEN PR2=124 ENDIF GOSUB EKRAN RETURN DUTY_KONTROL: IF YUKARI=0 THEN sayac=0 DUTY=DUTY+1 IF DUTY=101 THEN DUTY=100 gosub DUTY_YAZ:GOSUB EKRAN WHILE YUKARI=0 W=1 IF SAYAC=>50 THEN W=0:SAYAC=50 DUTY=DUTY+1:GOSUB DELAY IF DUTY=101 THEN DUTY=100 ENDIF GOSUB DUTY_YAZ GOSUB EKRAN WEND W=0:SAYAC=0 ELSE W=0:SAYAC=0 ENDIF IF ASAGI=0 THEN sayac=0 DUTY=DUTY-1 IF DUTY=255 THEN DUTY=0 GOSUB DUTY_YAZ GOSUB EKRAN WHILE ASAGI=0 W=1 IF SAYAC=>30 THEN W=0:SAYAC=30 DUTY=DUTY-1:GOSUB DELAY IF DUTY=255 THEN DUTY=0 ENDIF GOSUB DUTY_YAZ GOSUB EKRAN WEND W=0 ELSE W=0:SAYAC=0 ENDIF RETURN SAG: DUTY=DUTY-1:GOSUB DELAY IF DUTY>100 THEN ROLE=1:LED1=1:LED2=0 GOTO DUTY_ARTTIR ENDIF GOSUB DUTY_YAZ:GOSUB EKRAN GOTO SAG DUTY_ARTTIR: DUTY=DUTY+1:GOSUB DELAY GOSUB DUTY_YAZ:GOSUB EKRAN IF DUTY=SON THEN GOTO BASLA ENDIF GOTO DUTY_ARTTIR DURDUR: DUTY=DUTY-1:GOSUB DELAY GOSUB DUTY_YAZ:GOSUB EKRAN IF DUTY=0 THEN GOTO BASLA ENDIF GOTO DURDUR SOL: DUTY=DUTY-1:GOSUB DELAY IF DUTY>100 THEN ROLE=0:LED1=0:LED2=1 GOTO DUTY_ARTTIR ENDIF GOSUB DUTY_YAZ:GOSUB EKRAN GOTO SOL DELAY: 'gecıkme FOR I=0 TO 255:NEXT RETURN DELAY1: FOR I=0 TO 150:NEXT RETURN FREKANS_HESAP: FREKANS=62500/(PR2+1) RETURN DUTY_YAZ: HAM_DUTY=(PR2+1)*DUTY/25 CCP1CON.4=ham_DUTY.0 CCP1CON.5=HAM_DUTY.1 CCPR1L=HAM_DUTY>>2 return PWM_ON: CCP1CON.2=1 CCP1CON.3=1 RETURN PWM_OFF: CCP1CON.2=0 CCP1CON.3=0 RETURN EKRAN: LCDOUT $FE,$80,"Duty %",#DUTY IF DUTY<100 THEN GOSUB HANE_AL1 LCDOUT $FE,ADR,$20 ENDIF lcdout $fe,$C0,"FREKANS=",#FREKANS GOSUB HANE_AL2 RETURN HANE_AL1: IF DUTY<100 OR DUTY>9 THEN ADR=$88 IF DUTY<10 THEN ADR=$87 RETURN HANE_AL2: IF FREKANS>10000 THEN LCDOUT $FE,$CD,"Hz" IF FREKANS<10000 AND FREKANS>999 THEN LCDOUT $FE,$CC,"Hz " IF FREKANS<1000 THEN LCDOUT $FE,$CB,"Hz " RETURN DISABLE KESME: IF W=1 THEN SAYAC=SAYAC+1 IF SAYAC=101 THEN SAYAC=0 ENDIF INTCON.2=0 RESUME ENABLE END




Bookmarks