Поборено

Осталось сделать знакогенератор удобный в подпрограмме.
$crystal = 8000000
$regfile = "m16def.dat"
Config Portb.0 = Output
Config Portb.1 = Output
Config Portb.2 = Output
Config Portb.3 = Output
Cspin Alias Portb.0
Rdpin Alias Portb.3
Wrpin Alias Portb.1
Datapin Alias Portb.2
Declare Sub Lcdclear
Declare Sub Lcdinit
Declare Sub Lcdoff
Dim Adres As Word
Dim Dane As Word
Dim Wr As Byte
Dim Wa As Byte
Dim Za As Byte
Dim Zb As Byte
Dim Zc As Byte
Dim Zd As Byte
Dim Ze As Byte
Dim Zf As Byte
Dim Zg As Byte
Dim Zh As Byte
Dim Zi As Byte
Dim Zj As Byte
Dim Mi As Byte
Dim Cmdx As Word
Dim I As Byte
Lcdinit
Lcdclear
'Write command
Wr = &B10100000
'Write address
Wa = &B00000000
'Digits
Za = &B01111101 ' 0
Zb = &B01100000 ' 1
Zc = &B00111110 ' 2
Zd = &B01111010 ' 3
Ze = &B01100011 ' 4
Zf = &B01011011 ' 5
Zg = &B01011111 ' 6
Zh = &B01110000 ' 7
Zi = &B01111111 ' 8
Zj = &B01111011 ' 9
Mi = &B10000010 ' - with dp
Do
'Test digits out
Reset Cspin
Waitus 100
Shiftout Portb.2 , Portb.1 , Wr , 0 , 3 , 20
Waitus 100
Shiftout Portb.2 , Portb.1 , Wa , 0 , 6 , 20
Waitus 100
Shiftout Datapin , Wrpin , Mi , 0 , 8 , 20
Waitus 20
Shiftout Datapin , Wrpin , Mi , 0 , 8 , 20
Waitus 20
Shiftout Datapin , Wrpin , Mi , 0 , 8 , 20
Waitus 20
Shiftout Datapin , Wrpin , Mi , 0 , 8 , 20
Waitus 20
Shiftout Datapin , Wrpin , Mi , 0 , 8 , 20
Waitus 20
Shiftout Datapin , Wrpin , Mi , 0 , 8 , 20
Waitus 20
Shiftout Datapin , Wrpin , Zj , 0 , 8 , 20
Waitus 20
Shiftout Datapin , Wrpin , Zi , 0 , 8 , 20
Waitus 20
Shiftout Datapin , Wrpin , Zh , 0 , 8 , 20
Waitus 20
Shiftout Datapin , Wrpin , Zg , 0 , 8 , 20
Waitus 20
Shiftout Datapin , Wrpin , Zf , 0 , 8 , 20
Waitus 20
Shiftout Datapin , Wrpin , Ze , 0 , 8 , 20
Waitus 20
Shiftout Datapin , Wrpin , Zd , 0 , 8 , 20
Waitus 20
Shiftout Datapin , Wrpin , Zc , 0 , 8 , 20
Waitus 20
Shiftout Datapin , Wrpin , Zb , 0 , 8 , 20
Waitus 20
Shiftout Datapin , Wrpin , Za , 0 , 8 , 20
Waitus 20
Set Cspin
Waitms 200
Loop
Sub Lcdinit
'Bias
Cmdx = &B1000010010100000
Reset Cspin
Shiftout Datapin , Wrpin , Cmdx , 0 , 12 , 20
Set Cspin
Waitms 20
'sysenable
Cmdx = &B1000000000100000
Reset Cspin
Shiftout Datapin , Wrpin , Cmdx , 0 , 12 , 20
Set Cspin
Waitms 20
'lcd enable
Cmdx = &B1000000001100000
Reset Cspin
Shiftout Datapin , Wrpin , Cmdx , 0 , 12 , 20
Set Cspin
End Sub
Sub Lcdclear
Cmdx = &B1010000000000000
For I = 0 To 23 Step 1
Reset Cspin
Shiftout Datapin , Wrpin , Cmdx , 0 , 13 , 20
Set Cspin
Waitus 20
Cmdx = Cmdx + &B0000000010000000
Next I
End Sub
Sub Lcdoff
'Lcd Disable
Cmdx = &B1000000001000000
Reset Cspin
Shiftout Datapin , Wrpin , Cmdx , 0 , 12 , 20
Set Cspin
End Sub
End