.. sprawa wyglada tak :
oba programy nie daja sie skompilowac przez jagode - choc ta nie wywala bledu ... jestem w kropce bo podobno na dsm-51 dziala choc pewnosci nie mam, ale sek w tym ze musi dzialac w jagodzie. PROSZE O POMOC w przerobieniu programu(ów) tak aby to poszlo - potrzebne na zaliczenie.
pr1. wprowadzic z klawiatury matrycowej znakowo 2 cyfry szesnastkowe, po czym liczbe tą wyswietlic dziesetnie i dwojkowo na wyswietlaczu LCD.
ljmp start
org 100h
start:
lcall lcd_clr
mov r0, #cskb0
loop: movx a, @r0
jz loop
mov r1, a
loop1: movx a, @r0
jz loop1
mov r2, a
;zamiana na dziesietna reprezentacje
mov b, #16d
mov a, r1
mul ab
;mov r1, a
add a, r2
mov r1, a ;caly wynik dziesietny
;trzeba go rozlozyc na cyfry
mov b, #10d
div ab
mov r3, b
mov b, #10d
div ab
mov r4, b
add a, #30h
mov r5, a ;cyfra setek gotowa do wyswietlenia na lcd
mov a, r4
add a, #30h
mov r4, a ;cyfra dziesiatek gotowa do wyswietlenia na lcd
mov a, r3
add a, #30h
mov r3, a ;cyfra jednosci gotowa do wyswietlenia na lcd
mov 18h, r0
mov 19h, r1
mov r0, #lcdwd
mov r1, #lcdrc
busy: movx a, @r1
jb acc.7, busy
mov a, r5
movx @r0, a
djnz 13h, $
mov a, r4
movx @r0, a
djnz 13h, $
mov a, r3
movx @r0, a ;wypisanie na lcd liczby w postaci dziesietnej
mov a, #0h
lcall delay_100ms
mov r0, 18h
mov r1, 19h
;postac binarna
mov a, r1
jb acc.0,jump
mov 08h, #0
ljmp goon
jump: mov 08h, #1
goon:
jb acc.1,jump1
mov 09h, #0
ljmp goon1
jump1: mov 09h, #1
goon1:
jb acc.2,jump2
mov 0Ah, #0
ljmp goon2
jump2: mov 0Ah, #1
goon2:
jb acc.3,jump3
mov 0Bh, #0
ljmp goon3
jump3: mov 0Bh, #1
goon3:
jb acc.4,jump4
mov 0Ch, #0
ljmp goon4
jump4: mov 0Ch, #1
goon4:
jb acc.5,jump5
mov 0Dh, #0
ljmp goon5
jump5: mov 0Dh, #1
goon5:
jb acc.6,jump6
mov 0Eh, #0
ljmp goon6
jump6: mov 0Eh, #1
goon6:
jb acc.7,jump7
mov 0Fh, #0
ljmp goon7
jump7: mov 0Fh, #1
goon7:
mov r1, #0Fh
goon8: mov a, @r1
add a, #30h
mov @r1, a
dec r1
cjne r1, #07h, goon8 ;gotowe do wyswietlenia na lcd w postaci binarnej
mov r0, #lcdrc
busy1: movx a, @r0
jb acc.7, busy1
mov r0, #0Fh
mov r1, #lcdwd
goon9: mov a, @r0
movx @r1, a
dec r0
cjne r0, #07h, goon9
end
pr2. Sterowanie za pomoca dwoch klawiszy strzalek z klawiatury ziwkszaniem lub zmniejszaniem wartosci pewnej liczby ( max 2 cyfrowej ) z wyswietlaniem jej za kazdym razem dziesietnie na wysw. 7-segmentowym. Proba przekroczenia zalozonego zakreu w gore lub w doł sygbalizowane ma byc za pomoca dwoch wybranych diod sposrod F1, ... , F4, OK, ER.
ljmp start
org 100h
start: mov r3, #50d
clr 00h
clr 01h
start1: mov a, r3
lcall cyfry
mov 1bh, r5
lcall kody
mov r5, 1bh
mov 1bh, r4
lcall kody
mov r4, 1bh
lcall wysw
goon1: mov dptr,#0ff30h
mov a,#08
movx @dptr,a
jb 208,satan
clr 00h
sjmp allah
satan: jnb 00h,zwieksz
allah:
mov a,#10
movx @dptr,a
jb 208,budda
clr 01h
sjmp goon
budda:
jnb 01h,zmniej
sjmp goon
zwieksz:
setb 00h
inc r3
cjne r3, #99d, goon
mov dptr, #0ff30h
mov a,#01000000b
movx @dptr,a
mov dptr,#0ff38h
mov a, #00000010b ;dioda F2
movx @dptr, a
ljmp goon1
zmniej:
setb 01h
dec r3
cjne r3, #00d, goon
mov dptr, #0ff30h
mov a,#01000000b
movx @dptr,a
mov dptr,#0ff38h
mov a, #00000001b ;dioda F1
movx @dptr, a
ljmp goon1
goon: ljmp start1
;**********************************
cyfry:
push acc ;wyodrebnienie cyfr setek, dziesiatek i jednosci
mov b, #10d
div ab
mov r5, b
mov r4, a
pop acc
ret
;**********************************
kody: ;szukanie i przyporzadkowanie kodu dla wyodrebnionej cyfry
push acc
mov r7, #0
mov a, r7
cjne a, 1bh, etap1
mov 1bh, #3fh ;kod cyfry '0'
ljmp ende
etap1: inc a
cjne a, 1bh, etap2
mov 1bh, #06h
ljmp ende
etap2: inc a
cjne a, 1bh, etap3
mov 1bh, #5bh
ljmp ende
etap3: inc a
cjne a, 1bh, etap4
mov 1bh, #4fh
ljmp ende
etap4: inc a
cjne a, 1bh, etap5
mov 1bh, #66h
ljmp ende
etap5: inc a
cjne a, 1bh, etap6
mov 1bh, #6dh
ljmp ende
etap6: inc a
cjne a, 1bh, etap7
mov 1bh, #7dh
ljmp ende
etap7: inc a
cjne a, 1bh, etap8
mov 1bh, #07h
ljmp ende
etap8: inc a
cjne a, 1bh, etap9
mov 1bh, #7fh
ljmp ende
etap9: inc a
mov 1bh, #67h ;kod cyfry '9'
ende: pop acc
ret
;**********************************
wysw:
push acc
mov 18h, #02h ;licznik petli
mov 19h, #01h ;wskaznik wyswietlacza
mov r0, #05h ;wskaznik skad maja byc pobierane dane na komkretny
loop2: mov dptr,#0ff30h ;wyswietlacz
mov a, 19h ;wskazanie na wyswietlacz jednosci(przy 19h=01h)
movx @dptr, a
mov dptr,#0ff38h
mov a, @r0
movx @dptr, a
clr 91h
;mov r7, #255
djnz r7, $
setb 91h ;wyswietlenie
mov a, 19h ;wskazanie na nastepny wyswietlacz
rl a
mov 19h, a
dec r0
djnz 18h, loop2
pop acc
ret