Hi Alec,
"I feel your pain" I drive a 62 Ford, try this:
I used the lower b ports as indicators, you can change them back, as I am using a Microchip demo board. I scoped the output and it does what you want, i didn't fuddle much with your display except to remove some of my favorite pastaCode:'**************************************************************** '* Name : auto_heater_controller.pbp * '* Author : Alec Noble * '* Notice : Copyright (c) 2010 Alec Noble * '* : All Rights Reserved * '* Date : 1/18/2010 * '* Version : 1.0 * '* Notes : * '* : * '**************************************************************** ;@ device pic16F628a ;@ device INTRC_OSC_NOCLKOUT @ __config _INTRC_OSC_NOCLKOUT & _MCLRE_OFF & _BOREN_OFF & _PWRTE_ON & _WDT_ON & _DATA_CP_OFF & _CP_OFF & _LVP_OFF DEFINE OSC 4 CMCON = 7 'port a digital i/o VRCON = 0 'a/d voltage refernce disabled PortB = 0 ' initialize all portB logic low TRISB = %00000000 'port b all outputs PortA = 0 ' Initialize all outputs as low TRISA = %11000000 'a.7, a.6 inputs, all else output CCP1CON = %00001100 ' Set CCP1 to PWM '********************** aliasing I/O **************************** up var porta.6 'up or increment button input down var porta.7 'down or drcrement button input heat var portb.3 'heater PWM output LED var byte[10] '10 bits - 1 for each led segment LED0 var PortB.0 LED1 var PortB.1 LED2 var PortB.2 LED3 var PortB.4 LED4 var PortB.5 LED5 var PortB.6 LED6 var PortB.7 LED7 var PortA.0 LED8 var PortA.1 LED9 var PortA.2 '********************** create variables ********************** duty var byte 'variable for the dutycycle counter var word 'variable to increment/decrement led_chk var byte pwr var bit 'on/off bit preset con 183 'minimum pwm duty value for low stp con 2 'duty cycle steps '*********************** initialize variables ***************** pwr = 1 duty = 15 counter = 50 LED = 0 'porta.3 = 0 'porta.4 = 0 '*********************** program begins here ****************** 'pause 1000 gosub adjust main: if up = 1 then gosub increment if down = 1 then gosub decrement '********** display *************** led = 0 ' pause 1000 lookdown2 duty, [93, 111, 129, 147, 165, 183, 201, 219, 237, 255], led_chk lookup led_chk, [%0000000001, %0000000011, %0000000111, %0000001111, %0000011111, _ %0000111111, %0001111111, %0011111111, %0111111111, %1111111111], led 'Remmed out replaced above ' if led.0 = 1 then portb.0 = 1 ' if led.1 = 1 then portb.1 = 1 ' if led.2 = 1 then portb.2 = 1 ' if led.3 = 1 then portb.4 = 1 ' if led.4 = 1 then portb.5 = 1 ' if led.5 = 1 then portb.6 = 1 ' if led.6 = 1 then portb.7 = 1 ' if led.7 = 1 then porta.0 = 1 ' if led.8 = 1 then porta.1 = 1 ' if led.9 = 1 then porta.2 = 1 pause 100 toggle porta.3 'heartbeat goto main end increment: portb.1 = 1 pause 5 counter = counter + stp 'if so, increment if counter > 254 then counter = 254 portb.1 = 0 pause 5 goto adjust decrement: portb.2 = 1 pause 5 counter = counter - stp if counter < 2 then counter = 2 Portb.2 = 0 pause 5 goto adjust adjust: duty = counter '********** duty_set ************** duty = preset + counter ' if duty >=255 then duty = 255 'if pwr = 0 then duty = 0 hpwm 1, duty, 2000 '********** button_chk *********** returntoo many if thens for me.


too many if thens for me.


Bookmarks