New: Try our SeaBass online demo!
Programming microcontrollers in assembly language is difficult. That's why most microcontrollers have C language support. While C is easier than assembly language, it is still tough to learn. That's why many microcontroller users like to use Basic. Unfortunately, Basic isn't always supported on every microcontroller, and even when it is, the Basic compilers are often not as efficient and capable as the system C compiler.
So how do you choose between assembly, C, and Basic? With SeaBass, the new language translator from AWC, you don't have to! You can write Basic-like programs for nearly any microcontroller that supports C. What's more you can directly access existing C libraries, mix C code with your programs, and even embed assembly language if your C compiler supports it (and most of them do). With SeaBass you get the best of both worlds. Writing SeaBass code is efficient for you, and the C compiler will generate efficient code that executes on your microcontroller.
SeaBass works with our PIC16F APP-II kit (in conjunction with the open source SDCC compiler) and with our Atmel ATMega APP-IV kit (using GNU C). However, SeaBass will work with nearly any C compiler on nearly any processor. For example, you can read how to use SeaBass with the Rabbit Semiconductor devices and Dynamic C.
As an example, consider our APP-IV kit. This board uses an Atmel ATmega8 and works well with the free GNU C compiler. Here's part of a SeaBass program for this board:
DIM j OUTPUT(B,0) OUTPUT(D,7) TOGGLE(D,7) FOR j= 1 to 25 TOGGLE(B,0) TOGGLE(D,7) NEXT
This sets PORTB pin 0 and PORTD pin 7 to outputs and then flips the state of PORTD pin 7. Next a FOR loop causes the bits to flip back and forth repeatedly.
It's easy to include C libraries in your programs or even call C functions:
Dim i,q for i= 1 to 10 q=adc_convert(1) @printf("Value= %d\n",q); next
Here, the code uses the C library adc_convert to read an analog value. It then uses the C-language printf call to write a string to the serial port.
SeaBass can also handle the entire build process on supported platforms (and you can customize this support for other compilers). However, SeaBass always creates a C source file so advanced users can study its output or use platform debugging tools.
How simple is it to use SeaBass? It's easy. You can use SeaBass as a command line program or in a windowed interface:
Press Compile, and you are done. On supported platforms, this will not only generate a C source file, but also invoke the C compiler to build an object file ready for programming. With the APP-IV, SeaBass will even download the program to the chip automatically!
SeaBass supports most common Basic keywords, plus a few special keywords. Remember, you can also call C and assembly routines, so functions supported by your C compiler are also available.
@ |
C Pass through |
@@ |
Multiline C pass through |
' |
Comment at start of line |
` |
Comment at end or start of line |
#Link |
Add C file to compile |
Array |
Define an array |
Cinclude |
Include C file |
Const |
Define constant |
DefType |
Define type |
Dim |
Declare variable |
Do/Loop |
Execute code repeatedly |
End |
Stop program or end subroutine/function |
For/Next |
Execute code repeatedly |
Function |
Define a function |
Goto |
Goto a label |
If/Then/Else |
Conditionally execute code |
Include |
Include a SeaBass file |
Let |
Optional assignment keyword |
Rem |
Remark |
Return |
End a function or subroutine |
Sub |
Define a subroutine |
There are a few differences between SeaBass and traditional Basic that you should be aware of:
All variables must be declared with Dim or Array Example: Dim x as int | |
Comments at the end of a line start with ` (a back quote) instead of an ordinary quote Example: x=f() ` Set x to the current value |
|
Arrays use square brackets ([]) for indices: Example: sample[i]=getValue() |
|
Identifier names for variables, functions, and subroutines are case sensitive Example: X=x+10 ` two different variables |
|
Calling a subroutine or a function with no arguments still requires empty parenthesis Example: x=f() |
|
Functions return a value via the RETURN statement Example: RETURN 10 |
|
You must avoid using words reserved by your C compiler as identifiers even if they are legal Basic identifiers Example: break=10 ` break is reserved by C compiler! |
|
Parameters are passed to functions and subroutines by value, not by reference (that is, functions and subroutines receive copies of their arguments by default) | |
There is no GOSUB statement (SeaBass uses named functions with formal parameters) | |
SeaBass does not support Basic string handling (although you can use C-language strings with no problem) | |
SeaBass uses C-language operators, most of which are the same as their Basic equivalents; a few are different (for example Basic's MOD operator is % in SeaBass) |
There is one exception to the last rule. Although C uses == and != as operators, SeaBas recognizes = and <> for these operations just as Basic does.
You can read the SeaBass manual online. In addition, check out this article about using SeaBass. If you use the Rabbit Semiconductor (Z-World) devices you might be interested in this article. You can even try out a demo of SeaBass online.
If you'd like to get the latest set of examples to examine (or to refresh the copy on your CDROM) you can find them in sbexample.zip.
SeaBass is just $9.95 with the purchase of a complete APP-II or APP-IV kit (bare board kits are not eligible for this promotion).
SeaBass requires Windows 98 or higher, a C compiler (open source compilers are included on our CDROM included with the APP-II and APP-IV), and target hardware with a programmer (for example, our APP-II or APP-IV).
Add to Cart SeaBass CDROM $9.95 (with purchase of APP-II or APP-IV kit only)
Add to Cart SeaBass CDROM $19.95 (no additional purchase required)
Site contents © 1997-2018 by AWC, Houston TX (281) 334-4341