42 lines
686 B
Plaintext
42 lines
686 B
Plaintext
alias Bypass d0
|
|
alias Radiator d1
|
|
define minTemp 293.15
|
|
define maxTemp 295.15
|
|
|
|
s db Open 0
|
|
s Bypass Lock 1
|
|
s Radiator Lock 1
|
|
|
|
start:
|
|
yield
|
|
jal safety
|
|
pop r0
|
|
bnez r0 start #safety triggerd. Do not continue
|
|
l r0 db TemperatureOutput
|
|
sgt r1 r0 maxTemp
|
|
bgtzal r1 cooling
|
|
|
|
slt r1 r0 minTemp
|
|
seqz r1 r1
|
|
beqzal r1 cooling
|
|
|
|
j start
|
|
|
|
#safety():0|1 -> 0 : ok, 1 : overpressure
|
|
safety:
|
|
l r1 db PressureOutput #check the output pressure
|
|
sgt r0 r1 50000
|
|
push r0 # r0 == 1 if too high. Use the stack as resturn value
|
|
s Radiator On r0
|
|
seqz r0 r0
|
|
s Bypass On r0
|
|
slt r0 r1 55000
|
|
s db Mode r0 #emergency stop
|
|
j ra #return
|
|
|
|
#cooling(r1:0|1)
|
|
cooling:
|
|
s Radiator On r1
|
|
seqz r1 r1
|
|
s Bypass On r1
|
|
j ra |