Code:
'----------------------------------
!sbi Glcd_controll,Gl_a0_asm 'CD high
'Gl_dat = Sys_mread
!lds R20, {Sys_mread_asm}
!out Gl_dat_asm, R20
!cbi Glcd_controll,Gl_wr_asm 'WR low
! nop
!sbi Glcd_controll,Gl_wr_asm 'WR high
!cbi Glcd_controll,Gl_a0_asm 'CMD low
'! nop
'Gl_tris = &B00000000 'Port input 'Make portd input
clr R20 '&B00000000'
!out Gl_tris_asm,R20
!sbi Glcd_controll,Gl_a0_asm 'Set A0 high
!cbi Glcd_controll,Gl_rd_asm 'RD low
ser R20 '&B11111111
! nop
! nop
! nop
! nop
! nop
'Gl_read = Gl_inp 'PIND 'Assign data
in R18,Gl_inp_asm
sts {Gl_read} , R18
!sbi Glcd_controll,Gl_rd_asm 'RD high
! nop
!cbi Glcd_controll,Gl_a0_asm 'CD low high
'Gl_tris = &B11111111 'port output
!out Gl_tris_asm, R20
'--------------------------------
If Gl_rstflag = 0 Then
Set Gl_read.gl_bit
Else
Reset Gl_read.gl_bit
End If
Gl_pix = Gl_read
Goto Jumptestasm
'-----------------------------
$asm
LDS r24, {Gl_bit}
L_10x00f6:
LDI r25, &H01 ' 1-er laden
!AND r24, r24 ' gl_bit = 0 ?
BREQ L_10x0104 ' dann fertig
CLC ' clear carry
L_10x00fe:
ROL r25 ' rot left
DEC r24 ' bit-nr - 1
BRNE L_10x00FE ' fertig ?
L_10x0104:
LDs R23, {gl_read}
$end Asm
If Gl_rstflag = 1 Then
!OR r23, r24 ' bit setzen
Else
COM r24 ' invertieren
!AND r23, r24 ' bit löschen
End If
!STS {Gl_pix}, r23
'-------------------------------
Jumptestasm:
!sbi Glcd_controll,Gl_a0_asm 'CD high
!lds R20, {Sys_cur_addr_asm}
!out Gl_dat_asm, R20
'Gl_dat = Sys_cur_addr 'CSRW cmd
!cbi Glcd_controll,Gl_wr_asm 'WR low
! Nop
!sbi Glcd_controll,Gl_wr_asm 'WR high
!cbi Glcd_controll,Gl_a0_asm 'CMD low
! nop
!lds R20, {Gl_addrlo}
!out Gl_dat_asm, R20
'Gl_dat = Gl_addrlo
!cbi Glcd_controll,Gl_wr_asm 'WR low
! nop
!sbi Glcd_controll,Gl_wr_asm 'WR high
!lds R20, {Gl_addrhi}
!out Gl_dat_asm, R20
'Gl_dat = Gl_addrhi
!cbi Glcd_controll,Gl_wr_asm 'WR low
! nop
!sbi Glcd_controll,Gl_wr_asm 'WR high
!sbi Glcd_controll,Gl_a0_asm 'CD high
!lds R20, {Sys_mwrite_asm}
!out Gl_dat_asm, R20
'Gl_dat = Sys_mwrite
!cbi Glcd_controll,Gl_wr_asm 'WR low
! nop
!sbi Glcd_controll,Gl_wr_asm 'WR high
!cbi Glcd_controll,Gl_a0_asm 'CMD low
!lds R20, {Gl_pix}
!out Gl_dat_asm, R20
'Gl_dat = Gl_pix
!cbi Glcd_controll,Gl_wr_asm 'WR low
! nop
!sbi Glcd_controll,Gl_wr_asm 'WR high
!lds R20, {Gl_rstflag}
clr R20
'Gl_rstflag = 0
Lesezeichen