ahhhh, there's the kick i needed.
I also am working on a 3digit 7seg led display, using modified code
(read: massively mangled stolen code :P)
and was doing the same thing..
(pausing, and calling/gosubing the bin2seg lookup)
Code:
MOVF _led1data,W
call bin2seg
MOVWF PORTD
bsf _led1digit
call dly7seg
bcf _led1digit
movf _led2data,W
call bin2seg
movwf PORTD
bsf _led2digit
call dly7seg
bcf _led2digit
movf _led3data,W
call bin2seg
movwf PORTD
bsf _led3digit
call dly7seg
bcf _led3digit
so some ideas i was wrestling with just got answered?..
1)thinking should look digits up in the main loop? and use the already "lookedup" variables in the interupt routine.
2)now the one digit per interrupt, I had thought about, but couldn't figure out how to do. (put on back burner, until I saw this)
little trickier.. without a gosub?
would something like this work? (seems long way no?)
Code:
if digitloop=3 then digitloop=0 'only three digits
digitloop=digitloop+1 'next digit
if digitloop=1 goto digit1 'which digit we displaying?
endif
if digitloop=2 goto digit2
endif
digit3: 'wasn't 1 or 2 so must be 3!
PORTC = SEGDEF3 'output "prelookedup" data
PORTE = 3 'turn digit on
goto dispdone 'goto finish
digit2: 'doing digit 2
PORTC = SEGDEF2 'output "prelookedup" data
PORTE = 5 'turn digit on
goto dispdone 'goto finish
digit1: 'doing digit1
PORTC = SEGDEF1 'output "prelookedup" data
PORTE = 6 'turn digit on
goto dispdone 'goto finish
DISPDONE: 'reload timer
T1CON.0 = 0 ; stop timer
TMR1H = %11111100
TMR1L = %00011111
T1CON.0 = 1 ; restart timer
@ INT_RETURN 'exit int routine
on the right track?
should the timer be stopped at the beginning of the routine?
now in the main, will we need 3 lookup tables? can lookup into an array? or how about...
Code:
n=1 'to be replaced with digit1 variable (N=N1)
gosub bin2seg
segdef1=segdef
n=2 'digit2
gosub bin2seg
segdef2=segdef
n=3 'digit3
gosub bin2seg
segdef3=segdef
BIN2SEG:
LookUp n,[132,175,193,137,170,152,144,143,128,136,210,251],SEGDEF
return
(I was attempting mine in assembly, but so as not to hijack the thread, did this way)
Bookmarks