Sending It All
GREETINGS AGAIN,
HERE IS THE ENTIRE CODE FOR PIC7
DEFINE OSC 20 'DEFINE OSCILLATOR
DEFINE SER2_BITS 8
AMP VAR WORD 'DEFINE VARIABLES
AMPS VAR WORD
ARX VAR BYTE[4]
TDIR VAR BYTE
CDIR VAR BYTE
SDIR VAR BYTE
STR1 VAR BYTE
TIME VAR WORD
TIMES VAR WORD
ATEST VAR WORD
TTEST VAR WORD
TRX VAR BYTE[4]
C VAR BYTE
'EQUATES SECTION
TRISA = %00110001 'SET PORTS I/O
TRISB = %10011101
TRISC = %00001111
ADCON0 = %00000000
ADCON1 = %00000011 'PORTA ALL DIGITAL
AMP = 50 'INITIATE VARIABLES
AMPS = 50
CDIR = 0
STR1 = 0
TDIR = 0
TIME = 1000
TIMES = 1000
'IT ALL STARTS HERE
PAUSE 200 'RESTORE PREVIOUS VALUES
READ 0,TIMES
READ 1,AMPS
READ 2,TIME
READ 3,AMP
PAUSE 100
GOSUB SND6 'SEND TO PIC6
LOP1: 'MAIN LOOP
'IF PORTA.4 = 1 AND PORTA.5 = 0 THEN SND5 'SEND T&C TO PIC5
IF PORTC.1 = 1 AND PORTC.2 = 0 THEN TADJ 'TIME ADJUST
IF STR1 = 1 AND PORTC.1 = 0 THEN TADW 'SAVE TIME WHEN DONE
IF PORTC.2 = 1 AND PORTC.1 = 0 THEN CADJ 'AMPS ADJUSTMENT
IF STR1 = 2 AND PORTC.2 =0 THEN CADW 'SAVE AMPS WHEN DONE
GOTO LOP1
TADJ: TDIR = 1 'ADJUST TIME SETTING
IF PORTB.3 = 0 AND PORTB.4 = 0 THEN TDIR = 2 'ZERO NOTCH
IF TDIR = 2 THEN
IF PORTB.3 = 1 AND PORTB.4 = 0 AND PORTC.3 = 0 THEN TDIR = 3
IF PORTB.3 = 0 AND PORTB.4 = 1 AND PORTC.3 = 0 THEN TDIR = 4
IF PORTB.3 = 1 AND PORTB.4 = 0 AND PORTC.3 = 1 THEN TDIR = 5
IF PORTB.3 = 0 AND PORTB.4 = 1 AND PORTC.3 = 1 THEN TDIR = 6
ENDIF
SELECT CASE TDIR
CASE 1
GOTO LOP1
CASE 2
GOTO LOP1
CASE 3
IF TIME < 2790 THEN TIME = TIME + 10
CASE 4
IF TIME > 19 THEN TIME = TIME - 10
CASE 5
IF TIME < 2799 THEN TIME = TIME + 1
CASE 6
IF TIME > 9 THEN TIME = TIME - 1
END SELECT
STR1 = 1
GOSUB SND6 'T OR C CHANGED
GOTO LOP1
TADW: READ 0, TIMES 'STORE TIME
IF TIMES <> TIME THEN WRITE 0, TIME
READ 0, TTEST
IF TTEST <> TIME THEN WRITE 2, TIME
STR1 = 0
GOTO LOP1
CADJ: CDIR = 0
IF PORTB.3 = 0 AND PORTB.4 = 0 THEN CDIR = 2 'ZERO NOTCH
IF CDIR = 2 THEN
IF PORTB.3 = 1 AND PORTB.4 = 0 AND PORTC.3 = 0 THEN CDIR = 3
IF PORTB.3 = 0 AND PORTB.4 = 1 AND PORTC.3 = 0 THEN CDIR = 4
IF PORTB.3 = 1 AND PORTB.4 = 0 AND PORTC.3 = 1 THEN CDIR = 5
IF PORTB.3 = 0 AND PORTB.4 = 1 AND PORTC.3 = 1 THEN CDIR = 6
ENDIF
SELECT CASE CDIR
CASE 1
GOTO LOP1
CASE 2
GOTO LOP1
CASE 3
IF AMP < 2550 THEN AMP = AMP + 10
CASE 4
IF AMP > 50 THEN AMP = AMP - 10
CASE 5
IF AMP < 2549 THEN AMP = AMP + 1
CASE 6
IF AMP > 50 THEN AMP = AMP - 1
END SELECT
STR1 = 2
GOSUB SND6
GOTO LOP1
CADW: READ 1, AMPS 'STORE AMPS
IF AMPS <> AMP THEN WRITE 1, AMP
READ 1, ATEST
IF ATEST <> AMP THEN WRITE 3, AMP
STR1 = 0
GOTO LOP1
SND5: IF TIMES <> TIME THEN TIMES = TIME 'SEND TO PIC5
WRITE 0, TIME
IF AMPS <> AMP THEN AMPS = AMP
WRITE 2, AMP
SEROUT2 PORTC.5\PORTC.6,84,[TIME,AMP]
GOTO LOP1
'SUBPROGRAM SECTION
SND6: 'SEND DIGITS TO PIC6
HIGH PORTB.2
PAUSEUS 40
Serout2 PORTB.5 \PORTB.6,84,[TIME,AMP]
LOW PORTB.2
RETURN
AND HERE IS THE ENTIRE CODE FOR PIC6
DEFINE OSC 20 'DEFINE OSCILLATOR
DEFINE SER2_BITS 8
AS VAR WORD 'DEFINE VARIABLES
A VAR WORD
B VAR BYTE
C VAR BYTE
F VAR BYTE
T VAR WORD
TRC VAR BYTE[4]
ARC VAR BYTE[4]
'EQUATES SECTION
TRISA = %00111110 'SET PORTS I/O
TRISB = %00000000
TRISC = %00000000
ADCON0 = %00000000
ADCON1 = %00000011 'PORTA ALL DIGITAL
A = 0 'INITIATE VARIABLES
AS = 0
B = 0
C = 0
F = 2
T = 0
'IT ALL STARTS HERE
PAUSE 200
EEPROM 0,[129,243,73,97,51,37,5,241,1,49] 'STORE CONSTANTS
LOOP: 'GET T & A FROM PIC 7
IF PORTA.4 = 1 THEN
SERIN2 PORTA.0 \PORTA.1,84,[T,A]
ENDIF
LOOP1: 'DISPLAY T & A
FOR C = 0 TO 3
READ T DIG C, PORTB
LOOKUP C,[$7F,$BF,$DF,$EF],PORTC 'SET DIGIT
PAUSE f
PORTC = $FF
NEXT C
FOR B = 0 TO 3
READ AS DIG B, PORTB
LOOKUP B,[$FE,$FD,$FB,$F7],PORTC
PAUSE f
PORTC = $FF
NEXT B
GOTO LOOP
PIC7 IS TO STORE AND ADJUST THE TWO VARIABLES FOR TIME AND CURRENT,
SEND IT TO PIC5 AND PIC6 UPON DEMAND
TRYING TO PULL RABBITS FROM HAT AT THIS POINT,
APPOLOGIES FOR SHOUTING
THANKS ALL!!
Thanks !
SOMRU
TWE/TFP/EE
Bookmarks