Witam. Buduje sobie pseudo skaner dyskotekowy znalezion w EdW (wiem że tego nie można w stu procentach nazwać skanerem) i mam problem. Potrzebuje pomoc w napisaniu / przepisaniu programu z języka Asembler na C++. Program jest pobrany ze strony EdW, jednak nic z niego nie rozumiem i przystosowany jest do AT89C2051. Ma on być wrzucony na Atmege8. Pinologia może być dowolna, sam sobie najwyżej poprawie według własnych potrzeb. Przekaże 50 punktów dla tego kto mi napisze program w C od A do Z dla ATmegi8 zgody z tym z asemblera. Punkty przekaże po sprawdzeniu działania programu.
Poniżej daje kod w asemblerze który trzeba "przetłumaczyc":
Z góry dzięki. Duch__
Poniżej daje kod w asemblerze który trzeba "przetłumaczyc":
status equ 3fh
frame equ 3eh
framecount equ 3dh
bitcount equ 3ch
delay equ 3bh
timer equ 3ah
patcount equ 39h
patno equ 38h
patmax1 equ 20h
patmax2 equ 6eh
org 0000h
ljmp start
org 000bh
ljmp t0p
start:
jnb p3.4,pat1
jnb p3.5,pat2
sjmp start
pat1:
mov patno,#01h
sjmp begin
pat2:
mov patno,#00h
sjmp begin
begin:
mov tmod,#02h
mov th0,#0b0h
mov tl0,th0
setb et0
setb ea
setb tr0
mov status,#00h
mov bitcount,#08h
mov framecount,#0ch
mov delay,#04h
reload_loop:
mov a,patno
jz lpat2
mov dptr,#pattern1
mov patcount,#patmax1
sjmp loop
lpat2:
mov dptr,#pattern2
mov patcount,#patmax2
loop:
mov timer,delay
loop0:
jb p3.2,nodec
dec delay ;TH0
jnb p3.2,$
nodec:
jb p3.3,noinc
inc delay ;TH0
jnb p3.3,$
noinc:
jb p3.1,$
jnb p3.1,$
jb p3.1,$
jnb p3.1,$
clr tr0
mov tl0,th0
mov frame,4bh
mov bitcount,#08h
mov framecount,#0ch
setb tr0
setb p3.0
djnz timer,loop0
mov b,#0ch
mov r0,#50h
load_loop:
clr a
movc a,@a+dptr
mov @r0,a
inc r0
inc dptr
djnz b,load_loop
mov b,#0ch
mov r0,#50h
mov r1,#40h
copy_loop:
mov a,@r0
mov @r1,a
inc r0
inc r1
djnz b,copy_loop
djnz patcount,loop
sjmp reload_loop
t0p:
push acc
cpl p1.0
mov a,frame
anl a,#01h
cpl acc.0
jnz orlp3
anl p3,#0feh
orlp3:
orl p3,a
djnz bitcount,rra
mov bitcount,#08h
djnz framecount,pointer_ok
mov framecount,#0ch
pointer_ok:
mov a,framecount
add a,#3fh
mov r0,a
mov frame,@r0
pop acc
reti
rra:
mov a,frame
rr a
mov frame,a
pop acc
reti
pattern1:
db 10000000b,00000000b,00000000b,00000000b,10000000b,00000000b,00000000b,00000000b,10000000b,00000000b,00000000b,00000000b
db 01000000b,00000000b,00000000b,00000000b,01000000b,00000000b,00000000b,00000000b,01000000b,00000000b,00000000b,00000000b
db 00100000b,00000000b,00000000b,00000000b,00100000b,00000000b,00000000b,00000000b,00100000b,00000000b,00000000b,00000000b
db 00010000b,00000000b,00000000b,00000000b,00010000b,00000000b,00000000b,00000000b,00010000b,00000000b,00000000b,00000000b
db 00001000b,00000000b,00000000b,00000000b,00001000b,00000000b,00000000b,00000000b,00001000b,00000000b,00000000b,00000000b
db 00000100b,00000000b,00000000b,00000000b,00000100b,00000000b,00000000b,00000000b,00000100b,00000000b,00000000b,00000000b
db 00000010b,00000000b,00000000b,00000000b,00000010b,00000000b,00000000b,00000000b,00000010b,00000000b,00000000b,00000000b
db 00000001b,00000000b,00000000b,00000000b,00000001b,00000000b,00000000b,00000000b,00000001b,00000000b,00000000b,00000000b
db 00000000b,10000000b,00000000b,00000000b,00000000b,10000000b,00000000b,00000000b,00000000b,10000000b,00000000b,00000000b
db 00000000b,01000000b,00000000b,00000000b,00000000b,01000000b,00000000b,00000000b,00000000b,01000000b,00000000b,00000000b
db 00000000b,00100000b,00000000b,00000000b,00000000b,00100000b,00000000b,00000000b,00000000b,00100000b,00000000b,00000000b
db 00000000b,00010000b,00000000b,00000000b,00000000b,00010000b,00000000b,00000000b,00000000b,00010000b,00000000b,00000000b
db 00000000b,00001000b,00000000b,00000000b,00000000b,00001000b,00000000b,00000000b,00000000b,00001000b,00000000b,00000000b
db 00000000b,00000100b,00000000b,00000000b,00000000b,00000100b,00000000b,00000000b,00000000b,00000100b,00000000b,00000000b
db 00000000b,00000010b,00000000b,00000000b,00000000b,00000010b,00000000b,00000000b,00000000b,00000010b,00000000b,00000000b
db 00000000b,00000001b,00000000b,00000000b,00000000b,00000001b,00000000b,00000000b,00000000b,00000001b,00000000b,00000000b
db 00000000b,00000000b,10000000b,00000000b,00000000b,00000000b,10000000b,00000000b,00000000b,00000000b,10000000b,00000000b
db 00000000b,00000000b,01000000b,00000000b,00000000b,00000000b,01000000b,00000000b,00000000b,00000000b,01000000b,00000000b
db 00000000b,00000000b,00100000b,00000000b,00000000b,00000000b,00100000b,00000000b,00000000b,00000000b,00100000b,00000000b
db 00000000b,00000000b,00010000b,00000000b,00000000b,00000000b,00010000b,00000000b,00000000b,00000000b,00010000b,00000000b
db 00000000b,00000000b,00001000b,00000000b,00000000b,00000000b,00001000b,00000000b,00000000b,00000000b,00001000b,00000000b
db 00000000b,00000000b,00000100b,00000000b,00000000b,00000000b,00000100b,00000000b,00000000b,00000000b,00000100b,00000000b
db 00000000b,00000000b,00000010b,00000000b,00000000b,00000000b,00000010b,00000000b,00000000b,00000000b,00000010b,00000000b
db 00000000b,00000000b,00000001b,00000000b,00000000b,00000000b,00000001b,00000000b,00000000b,00000000b,00000001b,00000000b
db 00000000b,00000000b,00000000b,10000000b,00000000b,00000000b,00000000b,10000000b,00000000b,00000000b,00000000b,10000000b
db 00000000b,00000000b,00000000b,01000000b,00000000b,00000000b,00000000b,01000000b,00000000b,00000000b,00000000b,01000000b
db 00000000b,00000000b,00000000b,00100000b,00000000b,00000000b,00000000b,00100000b,00000000b,00000000b,00000000b,00100000b
db 00000000b,00000000b,00000000b,00010000b,00000000b,00000000b,00000000b,00010000b,00000000b,00000000b,00000000b,00010000b
db 00000000b,00000000b,00000000b,00001000b,00000000b,00000000b,00000000b,00001000b,00000000b,00000000b,00000000b,00001000b
db 00000000b,00000000b,00000000b,00000100b,00000000b,00000000b,00000000b,00000100b,00000000b,00000000b,00000000b,00000100b
db 00000000b,00000000b,00000000b,00000010b,00000000b,00000000b,00000000b,00000010b,00000000b,00000000b,00000000b,00000010b
db 00000000b,00000000b,00000000b,00000001b,00000000b,00000000b,00000000b,00000001b,00000000b,00000000b,00000000b,00000001b
pattern2:
db 01000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00100000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00010000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00001000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00000100b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00000010b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00000001b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00000000b,10000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00000001b,01000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00000010b,00100000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00000100b,00010000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00001000b,00001000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00010100b,00010100b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00100010b,00100010b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 01000001b,01000001b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 10000000b,10000000b,10000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 01000001b,01000001b,01000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00100010b,00100010b,00100000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00010100b,00010100b,00010000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00001000b,00001000b,00001000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00010100b,00010100b,00010100b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00100010b,00100010b,00100010b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 01000001b,01000001b,01000001b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 10000000b,10000000b,10000000b,10000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 01000001b,01000001b,01000001b,01000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00100010b,00100010b,00100010b,00100000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00010100b,00010100b,00010100b,00010000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00001000b,00001000b,00001000b,00001000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00010100b,00010100b,00010100b,00010100b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00100010b,00100010b,00100010b,00100010b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 01000001b,01000001b,01000001b,01000001b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 10000000b,10000000b,10000000b,10000000b,10000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 01000001b,01000001b,01000001b,01000001b,01000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00100010b,00100010b,00100010b,00100010b,00100000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00010100b,00010100b,00010100b,00010100b,00010000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00001000b,00001000b,00001000b,00001000b,00001000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00001100b,00001100b,00001100b,00001100b,00001100b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00001010b,00001010b,00001010b,00001010b,00001010b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00001001b,00001001b,00001001b,00001001b,00001001b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00001000b,10001000b,10001000b,10001000b,10001000b,10000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00001000b,01001000b,01001000b,01001000b,01001000b,01000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00001000b,00101000b,00101000b,00101000b,00101000b,00100000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00001000b,00011000b,00011000b,00011000b,00011000b,00010000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00001000b,00001000b,00001000b,00001000b,00001000b,00001000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00001000b,00001100b,00001100b,00001100b,00001100b,00000100b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00001000b,00001010b,00001010b,00001010b,00001010b,00000010b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00001000b,00001001b,00001001b,00001001b,00001001b,00000001b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00001000b,00001000b,10001000b,10001000b,10001000b,10000000b,10000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00001000b,00001000b,01001000b,01001000b,01001000b,01000000b,01000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00001000b,00001000b,00101000b,00101000b,00101000b,00100000b,00100000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00001000b,00001000b,00011000b,00011000b,00011000b,00010000b,00010000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00001000b,00001000b,00001000b,00001000b,00001000b,00001000b,00001000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00001000b,00001000b,00001100b,00001100b,00001100b,00000100b,00000100b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00001000b,00001000b,00001010b,00001010b,00001010b,00000010b,00000010b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00001000b,00001000b,00001001b,00001001b,00001001b,00000001b,00000001b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00001000b,00001000b,00001000b,10001000b,10001000b,10000000b,10000000b,10000000b,00000000b,00000000b,00000000b,00000000b
db 00001000b,00001000b,00001000b,01001000b,01001000b,01000000b,01000000b,01000000b,00000000b,00000000b,00000000b,00000000b
db 00001000b,00001000b,00001000b,00101000b,00101000b,00100000b,00100000b,00100000b,00000000b,00000000b,00000000b,00000000b
db 00001000b,00001000b,00001000b,00011000b,00011000b,00010000b,00010000b,00010000b,00000000b,00000000b,00000000b,00000000b
db 00001000b,00001000b,00001000b,00001000b,00001000b,00001000b,00001000b,00001000b,00000000b,00000000b,00000000b,00000000b
db 00001000b,00001000b,00001000b,00001100b,00001100b,00000100b,00000100b,00000100b,00000000b,00000000b,00000000b,00000000b
db 00001000b,00001000b,00001000b,00001010b,00001010b,00000010b,00000010b,00000010b,00000000b,00000000b,00000000b,00000000b
db 00001000b,00001000b,00001000b,00001001b,00001001b,00000001b,00000001b,00000001b,00000000b,00000000b,00000000b,00000000b
db 00001000b,00001000b,00001000b,00001000b,10001000b,10000000b,10000000b,10000000b,10000000b,00000000b,00000000b,00000000b
db 00001000b,00001000b,00001000b,00001000b,01001000b,01000000b,01000000b,01000000b,01000000b,00000000b,00000000b,00000000b
db 00001000b,00001000b,00001000b,00001000b,00101000b,00100000b,00100000b,00100000b,00100000b,00000000b,00000000b,00000000b
db 00001000b,00001000b,00001000b,00001000b,00011000b,00010000b,00010000b,00010000b,00010000b,00000000b,00000000b,00000000b
db 00001000b,00001000b,00001000b,00001000b,00001000b,00001000b,00001000b,00001000b,00001000b,00000000b,00000000b,00000000b
db 00001000b,00001000b,00001000b,00001000b,00001100b,00000100b,00000100b,00000100b,00000100b,00000000b,00000000b,00000000b
db 00001000b,00001000b,00001000b,00001000b,00001010b,00000010b,00000010b,00000010b,00000010b,00000000b,00000000b,00000000b
db 00001000b,00001000b,00001000b,00001000b,00001001b,00000001b,00000001b,00000001b,00000001b,00000000b,00000000b,00000000b
db 00001000b,00001000b,00001000b,00001000b,00001000b,10000000b,10000000b,10000000b,10000000b,10000000b,00000000b,00000000b
db 00001000b,00001000b,00001000b,00001000b,00001000b,01000000b,01000000b,01000000b,01000000b,01000000b,00000000b,00000000b
db 00001000b,00001000b,00001000b,00001000b,00001000b,00100000b,00100000b,00100000b,00100000b,00100000b,00000000b,00000000b
db 00001000b,00001000b,00001000b,00001000b,00001000b,00010000b,00010000b,00010000b,00010000b,00010000b,00000000b,00000000b
db 00001000b,00001000b,00001000b,00001000b,00001000b,00001000b,00001000b,00001000b,00001000b,00001000b,00000000b,00000000b
db 00001000b,00001000b,00001000b,00001000b,00001000b,00000100b,00000100b,00000100b,00000100b,00000100b,00000000b,00000000b
db 00001000b,00001000b,00001000b,00001000b,00001000b,00000010b,00000010b,00000010b,00000010b,00000010b,00000000b,00000000b
db 00001000b,00001000b,00001000b,00001000b,00001000b,00000001b,00000001b,00000001b,00000001b,00000001b,00000000b,00000000b
db 00001000b,00001000b,00001000b,00001000b,00001000b,00000000b,10000000b,10000000b,10000000b,10000000b,10000000b,00000000b
db 00001000b,00001000b,00001000b,00001000b,00001000b,00000000b,01000000b,01000000b,01000000b,01000000b,01000000b,00000000b
db 00001000b,00001000b,00001000b,00001000b,00001000b,00000000b,00100000b,00100000b,00100000b,00100000b,00100000b,00000000b
db 00001000b,00001000b,00001000b,00001000b,00001000b,00000000b,00010000b,00010000b,00010000b,00010000b,00010000b,00000000b
db 00001000b,00001000b,00001000b,00001000b,00001000b,00000000b,00010000b,00010000b,00010000b,00010000b,00010000b,00000000b
db 00001000b,00001000b,00001000b,00001000b,00001000b,00000000b,00010000b,00010000b,00010000b,00010000b,00010000b,00000000b
db 10001000b,00001000b,00001000b,00001000b,00001000b,00000000b,00010000b,00010000b,00010000b,00010000b,00010000b,00000001b
db 00101000b,00001000b,00001000b,00001000b,00001000b,00000000b,00010000b,00010000b,00010000b,00010000b,00010000b,00000100b
db 00001000b,00001000b,00001000b,00001000b,00001000b,00000000b,00010000b,00010000b,00010000b,00010000b,00010000b,00010000b
db 00000010b,00001000b,00001000b,00001000b,00001000b,00000000b,00010000b,00010000b,00010000b,00010000b,00010000b,01000000b
db 00000000b,10001000b,00001000b,00001000b,00001000b,00000000b,00010000b,00010000b,00010000b,00010000b,00010001b,00000000b
db 00000000b,00101000b,00001000b,00001000b,00001000b,00000000b,00010000b,00010000b,00010000b,00010000b,00010100b,00000000b
db 00000000b,00001000b,00001000b,00001000b,00001000b,00000000b,00010000b,00010000b,00010000b,00010000b,00010000b,00000000b
db 00000000b,00000010b,00001000b,00001000b,00001000b,00000000b,00010000b,00010000b,00010000b,00010000b,01000000b,00000000b
db 00000000b,00000000b,10001000b,00001000b,00001000b,00000000b,00010000b,00010000b,00010000b,00010001b,00000000b,00000000b
db 00000000b,00000000b,00101000b,00001000b,00001000b,00000000b,00010000b,00010000b,00010000b,00010100b,00000000b,00000000b
db 00000000b,00000000b,00001000b,00001000b,00001000b,00000000b,00010000b,00010000b,00010000b,00010000b,00000000b,00000000b
db 00000000b,00000000b,00000010b,00001000b,00001000b,00000000b,00010000b,00010000b,00010000b,01000000b,00000000b,00000000b
db 00000000b,00000000b,00000000b,10001000b,00001000b,00000000b,00010000b,00010000b,00010001b,00000000b,00000000b,00000000b
db 00000000b,00000000b,00000000b,00101000b,00001000b,00000000b,00010000b,00010000b,00010100b,00000000b,00000000b,00000000b
db 00000000b,00000000b,00000000b,00001000b,00001000b,00000000b,00010000b,00010000b,00010000b,00000000b,00000000b,00000000b
db 00000000b,00000000b,00000000b,00000010b,00001000b,00000000b,00010000b,00010000b,01000000b,00000000b,00000000b,00000000b
db 00000000b,00000000b,00000000b,00000000b,10001000b,00000000b,00010000b,00010001b,00000000b,00000000b,00000000b,00000000b
db 00000000b,00000000b,00000000b,00000000b,00101000b,00000000b,00010000b,00010100b,00000000b,00000000b,00000000b,00000000b
db 00000000b,00000000b,00000000b,00000000b,00001000b,00000000b,00010000b,00010000b,00000000b,00000000b,00000000b,00000000b
db 00000000b,00000000b,00000000b,00000000b,00000010b,00000000b,00010000b,01000000b,00000000b,00000000b,00000000b,00000000b
db 00000000b,00000000b,00000000b,00000000b,00000000b,10000000b,00010001b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00000000b,00000000b,00000000b,00000000b,00000000b,00100000b,00010100b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00000000b,00000000b,00000000b,00000000b,00000000b,00001000b,00010000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,01000000b,00000000b,00000000b,00000000b,00000000b,00000000b
db 00000000b,00000000b,00000000b,00000000b,00000000b,00000001b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b
end
Z góry dzięki. Duch__