Discussion specific to the DIP and TQFP packaged ZX devices like the ZX-40, ZX-44, ZX-32 and ZX-328 series. The differences between these devices is primarily the packaging and pinout so most issues will apply to all devices.
Option TargetDevice ZX328n
Dim lcd_out(1 to 150) as byte
Dim lcd_in(1 to 14) as byte
Sub Main()
Call PutPin(13, 0)
Call OpenQueue(lcd_out, 150)
Call OpenQueue(lcd_in, 14)
Call DefineCom(3, 0, 17, &H88)
Call OpenCom(3, 19200, lcd_in, lcd_out)
Call Delay(0.2)
Do
Call PulseOut(13, 0.0015, 1) ' 1.5ms
Call Delay(0.02)
Loop
End Sub
There appears to be a problem, of as yet known origin, that causes the TimerBusy semaphores to be set incorrectly. Because Register.Timer1Busy is erroneously set to True, the PulseOut() code, which needs to use Timer1, returns immediately without doing anything. You can work around the problem by adding the line of code below after the OpenCom(3,...) call and before the PulseOut() call.
The source of the problem was relatively simple to locate and correct. A new version of the ZBasic System Library, v3.3.6, was generated to incorporate the change. You can install just the updated ZBasic System Library or you can download and run the latest installer. Both can be found on the Downloads Page.