tak jsem to vyřešil tímto způsobem, kdyby někdo věděl jak to zjednodušit nebo vylepšit tak mi to prosím řekněte
čtení a zapis jednotlivych bitu v bajtu, R7 se nastavi na index bitu se kterym se ma pracovat (pro 20h.4, R7=4), takhle nějak jsem si to představoval, akorát se mi to zdá celkem velký
Kód: Vybrat vše
ad0 bit 20h.0
ad1 bit 20h.1
ad2 bit 20h.2
ad3 bit 20h.3
ad4 bit 20h.4
ad5 bit 20h.5
ad6 bit 20h.6
ad7 bit 20h.7
MOV R7,#0 ;posunuti v bitovem poli
;1) ZAPIS:
bitPoleZ:
CJNE R7,#0,bit1 ;postupne se testuje, kterymu bitu odpovida #R7
MOV ad0,C
RET
bit1: CJNE R7,#1,bit2
MOV ad1,C
RET
bit2: CJNE R7,#2,bit3
MOV ad2,C
RET
bit3: CJNE R7,#3,bit4
MOV ad3,C
RET
bit4: CJNE R7,#4,bit5
MOV ad4,C
RET
bit5: CJNE r7,#5,bit6
MOV ad5,C
RET
bit6: CJNE R7,#6,bit7
MOV ad6,C
RET
bit7: CJNE R7,#7,ERROR
MOV ad7,C
RET
ERROR: RET ;pokud hodnota v R7 neodpovidala zadnymu bitu
;2) CTENI:
bitPoleC:
CJNE R7,#0,bit01 ;postupne se testuje, kterymu bitu odpovida #R7
MOV C,ad0
RET
bit01:CJNE R7,#1,bit02
MOV C,ad1
RET
bit02:CJNE R7,#2,bit03
MOV C,ad2
RET
bit03:CJNE R7,#3,bit04
MOV C,ad3
RET
bit04:CJNE R7,#4,bit05
MOV C,ad4
RET
bit05:CJNE r7,#5,bit06
MOV C,ad5
RET
bit06:CJNE R7,#6,bit07
MOV C,ad6
RET
bit07:CJNE R7,#7,ERROR0
MOV C,ad7
RET
ERROR0: RET ;pokud hodnota v R7 neodpovidala zadnymu bitu