aboutsummaryrefslogtreecommitdiff
path: root/examples/example1_blink_led
diff options
context:
space:
mode:
Diffstat (limited to 'examples/example1_blink_led')
-rw-r--r--examples/example1_blink_led/Makefile3
-rw-r--r--examples/example1_blink_led/instructions.s.tcl57
2 files changed, 60 insertions, 0 deletions
diff --git a/examples/example1_blink_led/Makefile b/examples/example1_blink_led/Makefile
new file mode 100644
index 0000000..9755f33
--- /dev/null
+++ b/examples/example1_blink_led/Makefile
@@ -0,0 +1,3 @@
+SIMFLAGS += -DFINISH_ON_LED1=1 -DFINISH_ON_LED2=0
+
+include ../../Makefile.example
diff --git a/examples/example1_blink_led/instructions.s.tcl b/examples/example1_blink_led/instructions.s.tcl
new file mode 100644
index 0000000..13c51e2
--- /dev/null
+++ b/examples/example1_blink_led/instructions.s.tcl
@@ -0,0 +1,57 @@
+## adapted from soc_measure_time test
+
+## we're going to write numbers from 0 to 639 at addresses h100000 to h1009FC
+## and then write non-zero value at h100A00
+
+# this will translate to 2 16-bit instructions
+set_sp h100000
+
+## load current value of timer, in a loop
+## this is address 4 we later jump to
+# this will translate to 2 16-bit instructions
+loadwzx h1C0008
+
+## loop until timer exceeds 500
+# this will translate to 2 16-bit instructions
+const 500
+# this will translate to 1 16-bit instruction
+lt
+# this will translate to 1 16-bit instruction
+cond_jump 4
+
+## now, light led2
+# this will translate to 1 16-bit instruction
+const 1
+# this will translate to 2 16-bit instructions
+storew h1C0006
+
+## second loop, analogous to the first one
+## this is address 22 we later jump to
+# this will translate to 2 16-bit instructions
+loadwzx h1C0008
+
+## loop until timer exceeds 1000
+# this will translate to 2 16-bit instructions
+const 1000
+# this will translate to 1 16-bit instruction
+lt
+# this will translate to 1 16-bit instruction
+cond_jump 22
+
+## now, switch led2 off
+# this will translate to 1 16-bit instruction
+const 0
+# this will translate to 2 16-bit instructions
+storew h1C0006
+
+## third loop, analogous to the first two
+## this is address 40 we later jump to
+loadwzx h1C0008
+
+## loop until timer exceeds 1500
+const 1500
+lt
+cond_jump 40
+
+## finish operation (will also put led1 on)
+halt