Должен гореть курсор, но горит мой пукан, ведь я в упор не вижу, где я про(е)считался. может у вас получится понять?(на барометр не обращайте внимания, мне до него, как до китая раком)код на ассемблере .include "m168def.inc" .macro uout .if @0 < 0x40 out @0, @1 .else sts @0, @1 .endif .endm
.include "m168def.inc"
.macro uout
.if @0 < 0x40
out @0, @1
.else
sts @0, @1
.endif
.endm
.macro uin
.if @1 < 0x40
in @0, @1
.else
lds @0, @1
.endif
.endm
.set RS = 1
.set E = 0
.set RW = 7
.set D4 = 2
.set D5 = 3
.set D6 = 4
.set D7 = 5
.def temp = r16
.def col = r17
.def del1 = r18
.def del2 = r19
.cseg
.org 0
rjmp reset
.org 2
reti
.org 68
reti
reset:
ldi temp, high(ramend)
uout sph, temp
ldi temp, low(ramend)
uout spl, temp
ldi temp, 0x0F
uout ddrd, temp
ldi temp, (1<<E)
uout ddrd, temp
ldi temp, (1<<RS)|(1<<RW)
uout ddrd, temp
rcall del_5ms
rcall del_5ms
rcall del_5ms
rcall del_5ms
ldi temp, 0b00110000
swap temp
rcall send_com
rcall del_5ms
ldi temp, 0b00100000
swap temp
rcall send_com
rcall del_5ms
ldi temp, 0b00101100
rcall com_out
rcall del_5ms
ldi temp, 0b00000001
rcall com_out
rcall del_5ms
ldi temp, 0b00000110
rcall com_out
ldi temp, 0b00001111
rcall com_out
main:
rjmp main
com_out:
push temp
swap temp
andi temp, (1<<D7|1<<D6|1<<D5|1<<D4)
rcall send_com
pop temp
andi temp, (1<<D7|1<<D6|1<<D5|1<<D4)
rcall send_com
rcall del_50us
ret
send_com:
cbi portd, RS
sbi portd, E
uout portd, temp
ldi temp, 3
loop:
dec temp
brne loop
nop
cbi portd, E
ret
del_50us:
ldi temp, 134
mov del1, temp
loop_2:
dec del1
brne loop_2
nop
ret
del_5ms:
ldi temp, 244
mov del1, temp
ldi temp, 52
mov del2, temp
loop_3:
dec del1
brne loop_3
dec del2
brne loop_3
nop
ret