Hello everyone !
First time poster.......have only worked with PIC's for a few years. So go easy on me. LOL
16F88
PBP 2.60c
PORTB.3 (wired to a LED)
PORTA.0 (wired to one side of a bi-color led)
PORTA.1 (wired to one side of a bi-color led)
now I can write a simple routine to turn portb.3 on and off with no problems.
But if I have it in my code it turns on for a split second and then back off. I added the bi-color led everywhere I have portb.3 to debug and the bi-color led works as I intended portb.3 to work.
NewTest.bas
Kinda stumped ! Any help would be appreciated.......
Thanks,
David Polakiewicz Jr
Code:DEFINE OSC 20 OSCCON = %01011100 TRISA = %11101100 TRISB = %11010111 CCP1CON = %00000000 'DISABLE THE CCP1 ON PORTB.3 ANSEL = %00001100 'MAKES A2 AND A3 ANALOG ADCON0 = %10000001 'SET ANALOG CLOCK SOURCE ADCON1 = %11000000 'RIGHT JUSTIFY THE 10BIT RESULTS OPTION_REG.7 = 0 'CLEAR THE PORTB PULL-UP RESISTORS DEFINE ADC_BITS 10 'SET ADC TO 10BIT DEFINE ADC_SAMPLEUS 50 'SET SAMPLE TIME 'ANALOG CHANNEL VARIABLES TRIMPOT1 VAR WORD 'ANALOG TRIMPOT #1 TRIMPOT2 VAR WORD 'ANALOG TRIMPOT #2 'OUTPUT TIME VARIABLES RAWRANDOM VAR WORD 'RAW RANDOM 16 BIT NUMBER ONTIME VAR WORD 'CONVERTED ON TIME OFFTIME VAR WORD 'CONVERTED OFF TIME ONCOUNT VAR WORD 'ON COUNT ONTOTAL VAR WORD 'TOTAL ON TIME LEFT OFFTOTAL VAR WORD 'TOTAL OFF TIME LEFT TIMELEFTRESULT VAR WORD 'TIME LEFT RESULT OFFLEFTRESULT VAR WORD 'OFF TIME LEFT RESULT 'COUNT VARIABLES A VAR WORD 'ON TIME COUNT VARIABLE (COUNTS SECONDS) B VAR WORD 'OFF TIME COUNT VARIABLE (COUNTS SECONDS) C VAR WORD 'OFF TIME COUNT VARIABLE (COUNTS SECONDS) 'HOLDING BITS ONREMAINDER VAR BIT 'ON FOR REMAINDER OF HR HIGH PORTA.1 LOW PORTA.0 HIGH PORTB.3 PAUSE 2000 LOW PORTA.1 HIGH PORTA.0 LOW PORTB.3 :RESETVARIABLES serout PORTB.5,6,["*****VARIABLES RESET*****",13] ONTOTAL = 60 'PRESET WITH 60 SECONDS OFFTOTAL = 3540 'PRESET WITH 59 MIN (60 SEC ARE USED FOR ON TIME) A = 0 B = 0 C = 0 :BEGIN :OFFCALC RANDOM RAWRANDOM 'GET RANDOM 16 BIT OFFTIME = RAWRANDOM / 218 'CONVERT TO A 0-300 SECOND NUMBER TIMELEFTRESULT = OFFTOTAL - OFFTIME 'CALC THE TIME LEFT AFTER NEW RANDOM OFF serout PORTB.5,6,["ON TOTAL=",#ONTOTAL,13] serout PORTB.5,6,["OFF TOTAL=",#OFFTOTAL,13] serout PORTB.5,6,["OFFTIME=",#OFFTIME,13] serout PORTB.5,6,["TIME LEFT RESULT=",#TIMELEFTRESULT,13] serout PORTB.5,6,["______________________________",13] IF (TIMELEFTRESULT > 3540) | (TIMELEFTRESULT < ontOTAL) then 'CHECK TO SEE IF THE ONTIME ID GREATER THAN THE TIMELEFT RESULT OFFLEFTRESULT = OFFTOTAL - ONTOTAL 'IF IT IS THEN SUBTRACT THE ON TOTAL FROM THE OFF TOTAL high PORTB.3 'TURN ON THE OUTPUT FOR ONTIME REMAINDER HIGH PORTA.1 LOW PORTA.0 FOR a = 0 TO ONTOTAL PAUSE 1000 serout PORTB.5,6,["1"] NEXT a LOW PORTB.3 LOW PORTA.1 HIGH PORTA.0 for B = 0 TO OFFTOTAL 'TURN OFF OUTPUT FOR THE OFF REMAINDER PAUSE 10 serout PORTB.5,6,["2"] NEXT B serout PORTB.5,6,[,13] GOTO RESETVARIABLES ENDIF HIGH PORTB.3 'TURN ON THE OUTPUT HIGH PORTA.1 LOW PORTA.0 serout PORTB.5,6,["ON NORMAL XXXXXX",13] PAUSE 1000 '1 SECOND ON TIME LOW PORTB.3 LOW PORTA.1 HIGH PORTA.0 serout PORTB.5,6,["OFF NORMAL OOOOOO",13] FOR C = 0 TO OFFTIME serout PORTB.5,6,["."] PAUSE 10 NEXT C serout PORTB.5,6,[".",13] C = 0 ONTOTAL = ONTOTAL - 1 OFFTOTAL = OFFTOTAL - OFFTIME :ONTIMECHECK goto BEGIN




Bookmarks