Witam,muszę wykonać na zaliczenie program w Asemblerze DSM-51 który będzie zamieniał liczby binarne na dziesiętne. Dokładna treść polecenia to "program pozwalajacy wprowadzac 8bitowa liczbe binarna (klawisze 1 i
0) i zamieniajacy ja na liczbe dziesietna - wyswietlanie BIN na LCD, DEC
na 7-seg". Jednak mój problem jest taki że nie działa mi wyświetlacz 7-segmentowy , nic się nie wyświetla. Czy ktoś mógłby mi pomoć?
Oto mój program :
SEG_ON EQU P1.6
DISPLAY EQU 00001001B
COD EQU 01011011B
LJMP START
ORG 100H
START:
LCALL LCD_CLR
LOOP:
LCALL WAIT_KEY
MOV R0,A
;WYSWIETLA INACZEJ LICZBY
ADD A,#00110000B
LCALL WRITE_DATA
; LCALL WRITE_HEX
LCALL WAIT_KEY
MOV R1,A
LCALL WRITE_HEX
LCALL WAIT_KEY
MOV R2,A
LCALL WRITE_HEX
LCALL WAIT_KEY
MOV R3,A
LCALL WRITE_HEX
LCALL WAIT_KEY
MOV R4,A
LCALL WRITE_HEX
LCALL WAIT_KEY
MOV R5,A
LCALL WRITE_HEX
LCALL WAIT_KEY
MOV R6,A
LCALL WRITE_HEX
LCALL WAIT_KEY
MOV R7,A
LCALL WRITE_HEX
MOV A,#'='
LCALL WRITE_DATA
I_MNO:
MOV A,R0
MOV B,#128
MUL AB
MOV 08H,A
II_MNO:
MOV A,R1
MOV B,#64
MUL AB
ADDC A,08H
MOV 09H,A
III_MNO:
MOV A,R2
MOV B,#32
MUL AB
ADDC A,08H
MOV 0AH,A
IV_MNO:
MOV A,R3
MOV B,#16
MUL AB
ADDC A,0AH
MOV A,0BH
V_MNO:
MOV A,R4
MOV B,#8
MUL AB
ADDC A,0BH
MOV A,0CH
VI_MNO:
MOV A,R5
MOV B,#4
MUL AB
ADDC A,0CH
MOV A,0DH
VII_MNO:
MOV A,R6
MOV B,#2
MUL AB
ADDC A,0DH
MOV A,0EH
VIII_MNO:
MOV A,R7
MOV B,#1
MUL AB
ADDC A,0EH
LCALL WRITE_HEX
MOV A,#'D'
LCALL WRITE_DATA
LCALL WAIT_KEY
LJMP LOOP
0) i zamieniajacy ja na liczbe dziesietna - wyswietlanie BIN na LCD, DEC
na 7-seg". Jednak mój problem jest taki że nie działa mi wyświetlacz 7-segmentowy , nic się nie wyświetla. Czy ktoś mógłby mi pomoć?
Oto mój program :
SEG_ON EQU P1.6
DISPLAY EQU 00001001B
COD EQU 01011011B
LJMP START
ORG 100H
START:
LCALL LCD_CLR
LOOP:
LCALL WAIT_KEY
MOV R0,A
;WYSWIETLA INACZEJ LICZBY
ADD A,#00110000B
LCALL WRITE_DATA
; LCALL WRITE_HEX
LCALL WAIT_KEY
MOV R1,A
LCALL WRITE_HEX
LCALL WAIT_KEY
MOV R2,A
LCALL WRITE_HEX
LCALL WAIT_KEY
MOV R3,A
LCALL WRITE_HEX
LCALL WAIT_KEY
MOV R4,A
LCALL WRITE_HEX
LCALL WAIT_KEY
MOV R5,A
LCALL WRITE_HEX
LCALL WAIT_KEY
MOV R6,A
LCALL WRITE_HEX
LCALL WAIT_KEY
MOV R7,A
LCALL WRITE_HEX
MOV A,#'='
LCALL WRITE_DATA
I_MNO:
MOV A,R0
MOV B,#128
MUL AB
MOV 08H,A
II_MNO:
MOV A,R1
MOV B,#64
MUL AB
ADDC A,08H
MOV 09H,A
III_MNO:
MOV A,R2
MOV B,#32
MUL AB
ADDC A,08H
MOV 0AH,A
IV_MNO:
MOV A,R3
MOV B,#16
MUL AB
ADDC A,0AH
MOV A,0BH
V_MNO:
MOV A,R4
MOV B,#8
MUL AB
ADDC A,0BH
MOV A,0CH
VI_MNO:
MOV A,R5
MOV B,#4
MUL AB
ADDC A,0CH
MOV A,0DH
VII_MNO:
MOV A,R6
MOV B,#2
MUL AB
ADDC A,0DH
MOV A,0EH
VIII_MNO:
MOV A,R7
MOV B,#1
MUL AB
ADDC A,0EH
LCALL WRITE_HEX
MOV A,#'D'
LCALL WRITE_DATA
LCALL WAIT_KEY
LJMP LOOP