Добрые человеки планеты земля
SOS...SOS...
Sub Point(x As Byte , Y As Byte )
' (0,0)-(127,63)
Xadrs = X \ 16
Xpos = X Mod 16
Yadrs = Y \ 32
Yadrs = Yadrs * 8
Xadrs = Xadrs + Yadrs
Yadrs = Y Mod 32
Xadrs = Xadrs + &H80
Yadrs = Yadrs + &H80
Lcdcommand Yadrs
Lcdcommand Xadrs
Byteh = Lcdget()
Byteh = Lcdget()
Bytel = Lcdget()
If Xpos < 8 Then
Xpos = 7 - Xpos
Xpos = 2 ^ Xpos
Byteh = Byteh Or Xpos
Else
Xpos = 15 - Xpos
Xpos = 2 ^ Xpos
Bytel = Bytel Or Xpos
End If
Lcdcommand Yadrs
Lcdcommand Xadrs
Lcdwrite Byteh
Lcdwrite Bytel
End SubНе могу понять.
Xadrs = Xadrs + &H80 Yadrs = Yadrs + &H80 Lcdcommand Yadrs Lcdcommand Xadrs
Понял, что посылаем X адрес 1xxx_xxxx
Понял, что посылаем Y адрес 1xxx_xxxx
Byteh = Lcdget() Byteh = Lcdget() Bytel = Lcdget()
Перевод:
Читаем ячейку 1 раз старшего байта
Читаем ячейку 1 раз старшего байта
Читаем ячейку 1 раз младшего байта
Зачем два раза читать первые два байта в одну переменную?
А вот тут вообще чудесный ГЕНИЙ Автора, поразил алгоритмом мыслей:
If Xpos < 8 Then
Xpos = 7 - Xpos
Xpos = 2 ^ Xpos
Byteh = Byteh Or Xpos
Else
Xpos = 15 - Xpos
Xpos = 2 ^ Xpos
Bytel = Bytel Or Xpos
End IfДальше, что прочитали, через OR чего-то делаем и получаем точку в нужном месте.
Дальше указываем опять те-же координаты и отсылаем данные (не команду)
Lcdcommand Yadrs Lcdcommand Xadrs Lcdwrite Byteh Lcdwrite Bytel
Вот теперь одна проблема. При рисовании шрифта, нужно стирать не нужные точки, иначе символ не затирает предыдущий.
Не могу понять, почему читаем 3 байта, а отсылаем 2 байта. Очень нужно.
При рисовании шрифта, могу переменную отсылать, чтоб не рисовалась точка, а затиралась,к примеру:
Cl=1 Point X,Y
Вот, это рисует шрифт, даже инвертный шрифт.
Lcd1:
L1 = Len(txt1)
For P1 = 1 To L1
St1 = Mid(txt1 , P1 , 1)
S1 = Asc(st1)
S1 = S1 - 32
If S1 > 159 Then S1 = S1 - 64
S1 = S1 * 6
S2 = S1 + 6
X1 = P1 - 1
X1 = X1 * 6
X1 = X1 + X
For O1 = S1 To S2
Lin1 = Lookup(o1 , Fonts)
Y1 = Y
If Inv = 1 Then
Y1 = Y1 - 1
For M1 = 0 To 7
Point X1 , Y1
Next M1
Y1 = Y1 + 1
End If
For M1 = 0 To 7
If Inv = 0 Then
If Lin1.m1 = 1 Then
Point X1 , Y1
Else
Cl = 1 '-------------------------- УКАЗЫВАЮ, что точку надо стереть
Point X1 , Y1
End If
End If
If Inv = 1 Then
If Lin1.m1 = 0 Then
Cl = 1 '-------------------------- УКАЗЫВАЮ, что точку надо стереть
Point X1 , Y1
Else
Point X1 , Y1
End If
End If
Y1 = Y1 + 1
Next M1
X1 = X1 + 1
Next O1
Next P1
Inv = 0
ReturnЧто можно вставить в коде рисования точки, чтоб она не ставила, а отлючала пиксель?
P:S: Спасибо sasha_1973, показал дополнительные возможности Bascom AVR )
Добавлено спустя 1 день 5 часов 25 минут 21 секунду:

Отредактировано Ev3658 (2014-12-29 19:35:38)
Мой моск высушен! но я сделал это! Cl=1 - точка стирается.















