Code:
; CHIP 18F4550
DEFINE OSC 20
INCLUDE "MODEDEFS.BAS"
CMCON = 7
ADCON1 = 15
CVRCON = %00000000 'CVref turned off
TRISE = %000
TRISA = 11111
TRISB = %11111111
TRISC = %11111111
TRISD = %11111111
Symbol HC_latch = PORTE.2
symbol HC_Data = PORTE.1
SYMBOL HC_Clk = PORTE.0
B1 VAR BYTE
B2 VAR BYTE
B3 VAR BYTE
B4 VAR BYTE
B5 VAR BYTE
B6 VAR WORD
W0 VAR WORD
w3 var word
DUMMY VAR WORD
DIGIT1 VAR BYTE
DIGIT2 VAR BYTE
DIGIT3 VAR BYTE
DIGIT4 VAR BYTE
DIGIT5 VAR BYTE
DIGIT6 VAR BYTE
W1 VAR WORD
MASK VAR WORD
LastW0 VAR WORD
B1 = 0
B2 = 0
B3 = 0
B4 = 0
B5 = 0
W1 = 0
W0 = 0
w3 = 0
E1 VAR BYTE
E2 VAR BYTE
E3 VAR BYTE
E4 VAR BYTE
E5 VAR BYTE
PAUSE 500
'-------------------------------------------------------------------------
INCLUDE "DT_INTS-18.bas" ; Base Interrupt System
INCLUDE "ReEnterPBP-18.bas" ; Include if using PBP interrupts
ASM
INT_LIST macro ; IntSource, Label, Type, ResetFlag?
INT_Handler INT0_INT, _ToggleLED1, PBP, yes
endm
INT_CREATE ; Creates the interrupt processor
ENDASM
@ INT_ENABLE INT0_INT ; enable external (INT) interrupts@ INT_ENABLE INT1_INT ; enable external (INT) interrupts
'-------------------------------------------------------------------------
LOOP:
IF W0 <> LastW0 then
LastW0 = W0
if ABS(LastW0) > ABS(w3) then w3 = LastW0
B1 = LastW0 DIG 0
B2 = LastW0 DIG 1
B3 = LastW0 DIG 2
B4 = LastW0 DIG 3
B5 = LastW0 DIG 4
'------------------------------------------
DIGIT1 = B1
LOOKUP DIGIT1,[$C0,$F9,$A4,$B0,$99,$92,$82,$F8,$80,$90],MASK
E1 = MASK
'------------------------------------------
DIGIT2 = B2
LOOKUP DIGIT2,[$C0,$F9,$A4,$B0,$99,$92,$82,$F8,$80,$90],MASK
E2 = MASK
'-------------------------------------------
DIGIT3 = B3
LOOKUP DIGIT3,[$C0,$F9,$A4,$B0,$99,$92,$82,$F8,$80,$90],MASK
E3 = MASK
'----------------------------------------
DIGIT4 = B4
LOOKUP DIGIT4,[$C0,$F9,$A4,$B0,$99,$92,$82,$F8,$80,$90],MASK
E4 = MASK
'---------------------------------------
DIGIT5 = B5
LOOKUP DIGIT5,[$C0,$F9,$A4,$B0,$99,$92,$82,$F8,$80,$90],MASK
E5 = MASK
'---------------------------------------
HC_Latch=0
shiftout HC_data, HC_Clk, MSBFIRST,[E1,E2,E3,E4,E5,$C0]
pauseus 1
HC_Latch=1
'---------------------------------------
endif
GOTO LOOP
ToggleLED1: if PORTB.1 = 0 THEN
W0 = W0 + 1
ELSE
W0 = W0 - 1
ENDIF
@ INT_RETURN
Bookmarks