pic 1
TRISB = %00000000
High portb.7
Low portb.6
dataByte var byte
dataByte2 var byte
DEFINE CCP1_REG PORTC 'Hpwm 1 pin port
DEFINE CCP1_BIT 2 'Hpwm 1 pin bit
DEFINE CCP2_REG PORTC 'Hpwm 2 pin port
DEFINE CCP2_BIT 1 'Hpwm 2 pin bit
'output portb.3
init Var Byte
init = 0
loginTime Var Byte(80)
sendTime Var Byte(17)
h2 VAR BYTE
m2 Var BYTE
s2 Var BYTEh VAR BYTE(2)
m Var BYTE(2)
s Var BYTE(2)ndeg Var Word
nmin Var byte
wim1 Var bytenoon Var Byte
shift Var Byte
modify Var Bytebank var byte(4)
bNum Var Byte
pinNum Var Byte(4)tx var portc.6
rx var portc.7
xportRx var portC.0
xportTx var portA.1
xportDTR var portA.0
pic2tx Var portA.3
inv9600 con 16468 ' baudmode for seri.2 and serout2: 9600 8-N-1 inverted
non9600 con 84 ' baudmode for serin2 and serout2: 9600 8-N-1 non-invertedi var byte ' counter
j Var Byteled1 VAR portC.4
led2 VAR portC.3High led2
'High portb.3
Pause 1000 ' Wait a second at startupserout2 tx, inv9600, ["starts", 13, 10]
main:
'High portb.3
serout2 tx, inv9600, ["time loop starts", 13, 10]
SEROUT2 xporttx, non9600, ["C129.6.15.28/13", 10]
'SEROUT2 xporttx, non9600, ["C132.163.4.101/13", 10]
serin2 xportrx, non9600, 4000, main, [wait("5"), str loginTime\35]
pause 100
serout2 tx, inv9600, ["passed serin", 13, 10]
for i = 0 to 17
sendTime[i] = loginTime[i + 14]
next i
for j = 0 to 1
h[j] = loginTime[j + 14]
next j
for j = 0 to 1
m[j] = loginTime[j + 17]
next j
for j = 0 to 1
s[j] = loginTime[j + 20]
next j
h2 = (h[0]-48)*10 + (h[1]-48)
m2 = (m[0]-48)*10 + (m[1]-48)
s2 = (s[0]-48)*10 + (s[1]-48)
ndeg = (h2 * 60 / 4) + (m2 / 4)
nmin = ((m2 // 4) * 60 / 4) + (s2 / 4)
'serout2 xporttx, non9600, ["send all ", DEC ndeg ," degrees ", DEC nmin, " minutes ", 13, 10]
'serout2 xporttx, non9600, ["send ", STR nameArray, " " , str sendTime\17, "---", DEC ndeg ,"deg ", DEC nmin, "min", 13, 10]
'wim1 = nmin*60/255
wim1 = 255*nmin/60Noon = ndeg/30
shift = ndeg//30
modify = 127*shift/30bNum = noon//4
'pinNum = noon/4
bank[bNum] = 255-modify
pinNum[bNum] = noon/4if bNum != 3 Then
bank[bNum +1] = 127 + modify
pinNum[bNum +1] = noon/4
else
bank[0]= 127+ modify
bank[1] = modify
pinNum[0] = noon/4 +1
pinNum[1] = noon/4 +1
Endifif bNum <2 Then
bank[bNum +2] =modify
else
if bNum = 2 Then
bank[0]= modify
pinNum[0] = noon/4 +1
Endif
Endifif bNum>0 then
bank[bNum -1] = 127 - modify
pinNum[bNum -1] = noon/4
else
bank[3] = 127 - modify
pinNum[3] = noon/4-1
endifif pinNum[0] =0 Then
low portb.7
High portb.6
High portb.5
endifif pinNum[0] =1 Then
High portb.7
low portb.6
High portb.5
endifif pinNum[0] =2 Then
High portb.7
High portb.6
low portb.5
endifif pinNum[1] = 0 Then
low portb.4
High portb.3
high portb.2
endifif pinNum[1] = 1 Then
High portb.4
low portb.3
high portb.2
endifif pinNum[1] = 2 Then
High portb.4
High portb.3
low portb.2
endifserout2 pic2tx, inv9600, ["yes", pinNum[2], pinNum[3], bank[2], bank[3]]
serout2 pic2tx, inv9600, ["yes", pinNum[2], pinNum[3], bank[2], bank[3]]
serout2 pic2tx, inv9600, ["yes", pinNum[2], pinNum[3], bank[2], bank[3]]serout2 tx, inv9600, [dec pinNum[0], " ",dec pinNum[1], " ",dec pinNum[2], " ",dec pinNum[3], " ",Dec bank[0] ," ", Dec bank[1] ," ",Dec bank[2] ," ",dec bank[3] ," ", 10,13]
serout2 tx, inv9600, [str sendTime\8, 13, 10, DEC ndeg ," degrees ", DEC nmin, " minutes ", 13, 10, Dec noon, " " ,Dec shift, " " ,Dec modify, 13, 10, " wim1=" ,Dec wim1, 13, 10]
Hpwm 1, bank[0], 1000
Hpwm 2, bank[1], 1000
Pause 1000
goto main
pic 2
TRISB = %00000000DEFINE CCP1_REG PORTC 'Hpwm 1 pin port
DEFINE CCP1_BIT 2 'Hpwm 1 pin bit
DEFINE CCP2_REG PORTC 'Hpwm 2 pin port
DEFINE CCP2_BIT 1 'Hpwm 2 pin bitindata Var Byte(80)
ndeg Var Word
nmin Var byte
wim1 Var bytenoon Var byte
shift Var byte
modify Var bytebank var byte(4)
bNum Var Byte
pinNum Var Byte(4)j Var Byte
w Var BYTE(3)
tx var portc.6
rx var portc.7
inv9600 con 16468 ' baudmode for seri.2 and serout2: 9600 8-N-1 inverted
non9600 con 84 ' baudmode for serin2 and serout2: 9600 8-N-1 non-invertedled1 VAR portC.4
led2 VAR portC.3High led2
Pause 1000 ' Wait a second at startup
low led2''''''''''''''''''''''
main:
serin2 rx, inv9600, 4000, main, [wait("yes"), pinNum[2], pinNum[3], bank[2], bank[3]]
'serin2 rx, inv9600, 4000, main, [wait("yes")]
pause 5'for j = 0 to 2
'w[j] = indata[j]
'next j
'wim1 = (w[0]-48)*100 + (w[1]-48)*10 + (w[2]-48)'wim1 = indata
serout2 tx, inv9600, [DEC pinNum[2], ", ", dec bank[2], ", ", DEC pinNum[3], ", ", dec bank[3], 13, 10]
If pinNum[2]=0 Then
low portb.7
high portb.6
high portb.5
EndIF
If pinNum[2]=1 Then
High portb.7
low portb.6
high portb.5
EndIF
If pinNum[2]=2 Then
High portb.7
High portb.6
low portb.5
EndIFIf pinNum[3]=0 Then
low portb.4
High portb.3
high portb.2
EndifIf pinNum[3]=1 Then
high portb.4
low portb.3
high portb.2
EndifIf pinNum[3]=2 Then
high portb.4
High portb.3
low portb.2
Endifhigh led2
Hpwm 1, bank[2], 1000
Hpwm 2, bank[3], 1000
Pause 100
low led2
goto main
pic 2 (incomplete)
TRISB = %00000000DEFINE CCP1_REG PORTC 'Hpwm 1 pin port
DEFINE CCP1_BIT 2 'Hpwm 1 pin bit
DEFINE CCP2_REG PORTC 'Hpwm 2 pin port
DEFINE CCP2_BIT 1 'Hpwm 2 pin bitindata Var Byte(80)
ndeg Var Word
nmin Var word
wim1 Var Wordnoon Var Word
shift Var Word
modify Var Wordj Var Byte
w Var BYTE(3)
tx var portc.6
rx var portc.7
inv9600 con 16468 ' baudmode for seri.2 and serout2: 9600 8-N-1 inverted
non9600 con 84 ' baudmode for serin2 and serout2: 9600 8-N-1 non-invertedled1 VAR portC.4
led2 VAR portC.3High led2
Hpwm 1, 127, 1000Pause 1000 ' Wait a second at startup
main:
serin2 tx, inv9600, 4000, main, [wait("yes"), STR indata\6]
pause 5'for j = 0 to 2
'w[j] = indata[j + 3]
'next j
'wim1 = (w[0]-48)*100 + (w[1]-48)*10 + (w[2]-48)
high led2
Hpwm 1, 127, 1000
'Hpwm 2, wim1/2, 1000
Pause 1000
low led2
goto main
pic1
TRISB = %00000000
High portb.7
Low portb.6
dataByte var byte
dataByte2 var byte
DEFINE CCP1_REG PORTC 'Hpwm 1 pin port
DEFINE CCP1_BIT 2 'Hpwm 1 pin bit
'DEFINE CCP2_REG PORTC 'Hpwm 2 pin port
'DEFINE CCP2_BIT 1 'Hpwm 2 pin bit
'output portb.3
init Var Byte
init = 0
loginTime Var Byte(80)
sendTime Var Byte(17)
h2 VAR BYTE
m2 Var BYTE
s2 Var BYTE
h VAR BYTE(2)
m Var BYTE(2)
s Var BYTE(2)
ndeg Var Word
nmin Var word
wim1 Var Wordnoon Var Word
shift Var Word
modify Var Word
tx var portc.6
rx var portc.7
xportRx var portC.0
xportTx var portA.1
xportDTR var portA.0
pic2tx Var portA.3
inv9600 con 16468 ' baudmode for seri.2 and serout2: 9600 8-N-1 inverted
non9600 con 84 ' baudmode for serin2 and serout2: 9600 8-N-1 non-invertedi var byte ' counter
j Var Byteled1 VAR portC.4
led2 VAR portC.3High led2
'High portb.3
Pause 1000 ' Wait a second at startupserout2 tx, inv9600, ["starts", 13, 10]
main:
'High portb.3
serout2 tx, inv9600, ["time loop starts", 13, 10]
SEROUT2 xporttx, non9600, ["C129.6.15.28/13", 10]
serin2 xportrx, non9600, 4000, main, [wait("5"), str loginTime\35]
pause 100
serout2 tx, inv9600, ["passed serin", 13, 10]
for i = 0 to 17
sendTime[i] = loginTime[i + 14]
next i
for j = 0 to 1
h[j] = loginTime[j + 14]
next j
for j = 0 to 1
m[j] = loginTime[j + 17]
next j
for j = 0 to 1
s[j] = loginTime[j + 20]
next j
h2 = (h[0]-48)*10 + (h[1]-48)
m2 = (m[0]-48)*10 + (m[1]-48)
s2 = (s[0]-48)*10 + (s[1]-48)
ndeg = (h2 * 60 / 4) + (m2 / 4)
nmin = ((m2 // 4) * 60 / 4) + (s2 / 4)
'serout2 xporttx, non9600, ["send all ", DEC ndeg ," degrees ", DEC nmin, " minutes ", 13, 10]
'serout2 xporttx, non9600, ["send ", STR nameArray, " " , str sendTime\17, "---", DEC ndeg ,"deg ", DEC nmin, "min", 13, 10]
'wim1 = nmin*60/255
wim1 = 255*nmin/60
if nmin <20 Then
High portb.7
High portb.6
low portb.5
High portb.4
High portb.3
low portb.2
endif
if nmin >19 Then
High portb.7
Low portb.6
High portb.5
High portb.4
low portb.3
high portb.2
ENdif
if nmin > 39 Then
LOW portb.7
High portb.6
High portb.5
low portb.4
High portb.3
High portb.2
ENdif
Noon = ndeg/36
shift = ndeg//36
modify = 50*shift/36serout2 pic2tx, inv9600, ["yes", DEC wim1]
serout2 tx, inv9600, [str sendTime\8, 13, 10, DEC ndeg ," degrees ", DEC nmin, " minutes ", 13, 10, Dec noon, " " ,Dec shift, " " ,Dec modify, 13, 10]
Hpwm 1, wim1, 1000
Hpwm 2, wim1/2, 1000
Pause 1000
goto main
TRISB = %00000000High portb.7
Low portb.6
dataByte var byte
dataByte2 var byteDEFINE CCP1_REG PORTC 'Hpwm 1 pin port
DEFINE CCP1_BIT 2 'Hpwm 1 pin bit
DEFINE CCP2_REG PORTC 'Hpwm 2 pin port
DEFINE CCP2_BIT 1 'Hpwm 2 pin bit'output portb.3
init Var Byte
init = 0loginTime Var Byte(80)
sendTime Var Byte(17)h2 VAR BYTE
m2 Var BYTE
s2 Var BYTEh VAR BYTE(2)
m Var BYTE(2)
s Var BYTE(2)ndeg Var Word
nmin Var word
wim1 Var Word
dirt var Byte
dirt = 0tx var portc.6
rx var portc.7
xportRx var portc.0
xportTx var portA.1
xportDTR var portA.0
inv9600 con 16468 ' baudmode for serin2 and serout2: 9600 8-N-1 inverted
non9600 con 84 ' baudmode for serin2 and serout2: 9600 8-N-1 non-inverted
i var byte ' counter
j Var Byte
led1 VAR portC.4
led2 VAR portC.3
High led2
'High portb.3Pause 1000 ' Wait a second at startup
serout2 tx, inv9600, ["starts", 13, 10]
main:
'High portb.3
serout2 tx, inv9600, ["time loop starts", 13, 10]
SEROUT2 xporttx, non9600, ["C129.6.15.28/13", 10]
serin2 xportrx, non9600, 2000, main, [wait("5"), str loginTime\35]
pause 200
serout2 tx, inv9600, ["passed serin", 13, 10]
for i = 0 to 17
sendTime[i] = loginTime[i + 14]
next i
for j = 0 to 1
h[j] = loginTime[j + 14]
next j
for j = 0 to 1
m[j] = loginTime[j + 17]
next j
for j = 0 to 1
s[j] = loginTime[j + 20]
next j
h2 = (h[0]-48)*10 + (h[1]-48)
m2 = (m[0]-48)*10 + (m[1]-48)
s2 = (s[0]-48)*10 + (s[1]-48)
ndeg = (h2 * 60 / 4) + (m2 / 4)
nmin = ((m2 // 4) * 60 / 4) + (s2 / 4)
'serout2 xporttx, non9600, ["send all ", DEC ndeg ," degrees ", DEC nmin, " minutes ", 13, 10]
'serout2 xporttx, non9600, ["send ", STR nameArray, " " , str sendTime\17, "---", DEC ndeg ,"deg ", DEC nmin, "min", 13, 10]
'wim1 = nmin*60/255
wim1 = 255*nmin/60
if nmin <20 Then
High portb.7
High portb.6
low portb.5
endif
if nmin >19 Then
High portb.7
Low portb.6
High portb.5
ENdif
if nmin > 39 Then
LOW portb.7
High portb.6
High portb.5
ENdif
serout2 tx, inv9600, [str sendTime\8, 13, 10, DEC ndeg ," degrees ", DEC nmin, " minutes ", 13, 10]
Hpwm 1, wim1, 1000
Hpwm 2, wim1/2, 1000
goto main
dataByte var byte dataByte2 var byteDEFINE CCP1_REG PORTC 'Hpwm 1 pin port
DEFINE CCP1_BIT 2 'Hpwm 1 pin bit
DEFINE CCP2_REG PORTC 'Hpwm 2 pin port
DEFINE CCP2_BIT 1 'Hpwm 2 pin bit'output portb.3
init Var Byte
init = 0loginTime Var Byte(80)
sendTime Var Byte(17)h2 VAR BYTE
m2 Var BYTE
s2 Var BYTEh VAR BYTE(2)
m Var BYTE(2)
s Var BYTE(2)ndeg Var Word
nmin Var word
wim1 Var Word
dirt var Byte
dirt = 0tx var portc.6
rx var portc.7
xportRx var portc.0
xportTx var portA.1
xportDTR var portA.0
inv9600 con 16468 ' baudmode for serin2 and serout2: 9600 8-N-1 inverted
non9600 con 84 ' baudmode for serin2 and serout2: 9600 8-N-1 non-inverted
i var byte ' counter
j Var Byte
led1 VAR portC.4
led2 VAR portC.3
High led2
'High portb.3Pause 1000 ' Wait a second at startup
serout2 tx, inv9600, ["starts", 13, 10]
main:
'High portb.3
serout2 tx, inv9600, ["time loop starts", 13, 10]
SEROUT2 xporttx, non9600, ["C129.6.15.28/13", 10]
serin2 xportrx, non9600, 2000, main, [wait("5"), str loginTime\35]
pause 200
serout2 tx, inv9600, ["passed serin", 13, 10]
for i = 0 to 17
sendTime[i] = loginTime[i + 14]
next i
for j = 0 to 1
h[j] = loginTime[j + 14]
next j
for j = 0 to 1
m[j] = loginTime[j + 17]
next j
for j = 0 to 1
s[j] = loginTime[j + 20]
next j
h2 = (h[0]-48)*10 + (h[1]-48)
m2 = (m[0]-48)*10 + (m[1]-48)
s2 = (s[0]-48)*10 + (s[1]-48)
ndeg = (h2 * 60 / 4) + (m2 / 4)
nmin = ((m2 // 4) * 60 / 4) + (s2 / 4)
'serout2 xporttx, non9600, ["send all ", DEC ndeg ," degrees ", DEC nmin, " minutes ", 13, 10]
'serout2 xporttx, non9600, ["send ", STR nameArray, " " , str sendTime\17, "---", DEC ndeg ,"deg ", DEC nmin, "min", 13, 10]
wim1 = nmin
serout2 tx, inv9600, [str sendTime\8, 13, 10, DEC ndeg ," degrees ", DEC nmin, " minutes ", 13, 10]
Hpwm 1, wim1, 1000
Hpwm 2, wim1, 1000
goto main
another small step in the code.
dataByte var byte
dataByte2 var byteDEFINE CCP1_REG PORTC 'Hpwm 1 pin port
DEFINE CCP1_BIT 2 'Hpwm 1 pin bit
DEFINE CCP2_REG PORTB 'Hpwm 2 pin port
DEFINE CCP2_BIT 3 'Hpwm 2 pin bitoutput portb.3
init Var Byte
init = 0loginTime Var Byte(80)
sendTime Var Byte(17)h2 VAR BYTE
m2 Var BYTE
s2 Var BYTEh VAR BYTE(2)
m Var BYTE(2)
s Var BYTE(2)ndeg Var Word
nmin Var word
wim1 Var Word
dirt var Byte
dirt = 0tx var portc.6
rx var portc.7
xportRx var portc.0
xportTx var portc.1
xportDTR var portA.0
inv9600 con 16468 ' baudmode for serin2 and serout2: 9600 8-N-1 inverted
non9600 con 84 ' baudmode for serin2 and serout2: 9600 8-N-1 non-inverted
i var byte ' counter
j Var Byte
led1 VAR portC.4
led2 VAR portC.3
High led2
Low portb.3Pause 1000 ' Wait a second at startup
serout2 tx, inv9600, ["starts", 13, 10]
main:
'High portb.3
serout2 tx, inv9600, ["time loop starts", 13, 10]
SEROUT2 xporttx, non9600, ["C129.6.15.28/13", 10]
serin2 xportrx, non9600, 2000, main, [wait("5"), str loginTime\35]
pause 200
serout2 tx, inv9600, ["passed serin", 13, 10]
for i = 0 to 17
sendTime[i] = loginTime[i + 14]
next i
for j = 0 to 1
h[j] = loginTime[j + 14]
next j
for j = 0 to 1
m[j] = loginTime[j + 17]
next j
for j = 0 to 1
s[j] = loginTime[j + 20]
next j
h2 = (h[0]-48)*10 + (h[1]-48)
m2 = (m[0]-48)*10 + (m[1]-48)
s2 = (s[0]-48)*10 + (s[1]-48)
ndeg = (h2 * 60 / 4) + (m2 / 4)
nmin = ((m2 // 4) * 60 / 4) + (s2 / 4)
'serout2 xporttx, non9600, ["send all ", DEC ndeg ," degrees ", DEC nmin, " minutes ", 13, 10]
'serout2 xporttx, non9600, ["send ", STR nameArray, " " , str sendTime\17, "---", DEC ndeg ,"deg ", DEC nmin, "min", 13, 10]
wim1 = nmin
serout2 tx, inv9600, [str sendTime\8, 13, 10, DEC ndeg ," degrees ", DEC nmin, " minutes ", 13, 10]
Hpwm 1, wim1, 1000goto main
this code pulls time from the NIST servers, works but needs tweaks and is dirty
dataByte var byte
dataByte2 var byteinit Var Byte
init = 0
loginTime Var Byte(80)
sendTime Var Byte(17)
h2 VAR BYTE
m2 Var BYTE
s2 Var BYTE
h VAR BYTE(2)
m Var BYTE(2)
s Var BYTE(2)
ndeg Var Word
nmin Var word
dirt var Byte
dirt = 0
tx var portc.6
rx var portc.7
xportRx var portc.0
xportTx var portc.1
xportDTR var portc.2
inv9600 con 16468 ' baudmode for serin2 and serout2: 9600 8-N-1 inverted
non9600 con 84 ' baudmode for serin2 and serout2: 9600 8-N-1 non-invertedi var byte ' counter
j Var Byteled1 VAR portC.4
led2 VAR portC.3High led2
Pause 1000 ' Wait a second at startup
serout2 tx, inv9600, ["starts", 13, 10]
main:
serout2 tx, inv9600, ["time loop starts", 13, 10]
SEROUT2 xporttx, non9600, ["C129.6.15.28/13", 10]
serin2 xportrx, non9600, 2000, main, [wait("5"), str loginTime\35]
pause 200
serout2 tx, inv9600, ["passed serin", 13, 10]
for i = 0 to 17
sendTime[i] = loginTime[i + 14]
next i
for j = 0 to 1
h[j] = loginTime[j + 14]
next j
for j = 0 to 1
m[j] = loginTime[j + 17]
next j
for j = 0 to 1
s[j] = loginTime[j + 20]
next j
h2 = (h[0]-48)*10 + (h[1]-48)
m2 = (m[0]-48)*10 + (m[1]-48)
s2 = (s[0]-48)*10 + (s[1]-48)
ndeg = (h2 * 60 / 4) + (m2 / 4)
nmin = ((m2 // 4) * 60 / 4) + (s2 / 4)
'serout2 xporttx, non9600, ["send all ", DEC ndeg ," degrees ", DEC nmin, " minutes ", 13, 10]
'serout2 xporttx, non9600, ["send ", STR nameArray, " " , str sendTime\17, "---", DEC ndeg ,"deg ", DEC nmin, "min", 13, 10]
serout2 tx, inv9600, [str sendTime\17, 13, 10]goto main