
// SERIAL DATA GENERATOR
// 1 - ASCII data to be output
DATA "Hello World ", 250m
DATA "- EASYHDL Test Program - First line\r", 500mDATA "Hello World ", 250m
DATA "- EASYHDL Test Program - Second line\r", 500m
DATA REPEAT
// 2 - Define the baud rate
FLOAT BAUD=9600
FLOAT BITTIME=1.0/BAUD
// 3 - Declare working variables
STRING s
INT i,j,d
TIME td
// 4 - Top level
OUT = 1
SLEEP FOR 5m// 5 - Read DATA line
LOOP:
READ s,td
GOSUB OUTSTRING
SLEEP FOR td
GOTO LOOP
// 6 - Output an ASCII string in S char
OUTSTRING:
FOR i=1 TO LEN(s)
d = ASC(SUBSTR(s,i))
GOSUB OUTCHAR
NEXT I
RETURN
// 7 - Send a single character, one by one
// 1 Start bit, 1 Stop bit, no parity
OUTCHAR:
// Start bit
OUT = 0
SLEEP FOR BITTIME
// Data bits
FOR j=0 TO 7
OUT = d & (1 << j)
SLEEP FOR BITTIME
NEXT j
// Stop bit
OUT = 1
SLEEP FOR BITTIME
RETURN