| ??? 02/28/13 03:35 Read: times |
#189505 - Works Responding to: ???'s previous message |
ok so it works just fine now. As for the pointer going past three counts and into 54H im not sure but i found another student that did the same thing and his also has the double bar "||". I will still re-post the code.
...insert code here[ALE BIT P1.0 ;ADC port assignments
OE BIT P1.1
SC BIT P1.2
EOC BIT P1.3
MYDATA EQU P0
RAM_ADDR EQU 40H ;for the bin-dec and dec-ascii conversion
ASCI_RSULT EQU 50H
COUNT EQU 3
ORG 0H ;start
ACALL LCD_INIT
MOV MYDATA,#0FFH ;adc start/ make po a input
SETB EOC ;make eoc and input
CLR ALE ;clear ale
CLR SC ;clear wr
CLR OE ;clear rd
BACK:
ACALL DELAY ;make sure the addr is stable
SETB ALE ;latch address
ACALL DELAY ;delay for fast ds89c4xx chips
SETB SC ;start conversion
ACALL DELAY
CLR ALE ;clear ale
CLR SC ;clear wr
HERE:
JB EOC,HERE ;wait until done
HERE1:
JNB EOC,HERE1 ;wait until done
SETB OE ;enable rd
ACALL DELAY ;wait
MOV A,MYDATA ;read data
CLR OE ;clear rd for next time
ACALL CONVERSION ;hex-ascii conversion
ACALL DATA_DISPLAY ;display the data
SJMP BACK
CONVERSION: ;bin-ascii conversion subroutines
ACALL BIN_DEC_CONVRT
ACALL DEC_ASCI_CONVRT
RET
BIN_DEC_CONVRT:
MOV R0,#RAM_ADDR ;save dec digits in these ram locations
MOV A,P0 ;read data from p0
MOV B,#10 ;b=0A hex (10 dec)
DIV AB ;divide by ten
MOV @R0,B ;save lower digit
INC R0
MOV B,#10 ;b=0A hex
DIV AB ;divide by ten
MOV @R0,B ;save the next digit
INC R0
MOV @R0,A ;save the last digit
RET
DEC_ASCI_CONVRT:
MOV R0,#RAM_ADDR ;address of dec data
MOV R1,#ASCI_RSULT ;addr of ascii data
MOV R2,#3 ;count
BACK1:
MOV A,@R0 ;get dec digit
ORL A,#30H ;make it an ascii digit
MOV @R1,A ;save it
INC R0 ;next digit
INC R1 ;next
DJNZ R2,BACK1 ;repeat until the last one
RET
DATA_DISPLAY: ; since my lcd init is not whats in my book i have to change the data display from whats in it
ACALL DELAY
MOV A,#90H ; place cursor at thso position
ACALL COMNWRT
ACALL DELAY
DEC R1
MOV A,@R1 ;this is me guessing that the data is saved to @R1 during the back1: block, not exactly sure should got here
ACALL DATAWRT
ACALL DELAY
DEC R1
MOV A,@R1
ACALL DATAWRT
ACALL DELAY
DEC R1
MOV A,@R1
ACALL DATAWRT
ACALL DELAY
RET
LCD_INIT: ACALL COMNWRT ;lcd initilize and display text
ACALL DELAY
MOV A,#38H
ACALL COMNWRT
ACALL DELAY
MOV A,#32H
ACALL COMNWRT
ACALL DELAY
MOV A,#28H
ACALL COMNWRT
ACALL DELAY
MOV A,#0EH
ACALL COMNWRT
ACALL DELAY
MOV A,#01
ACALL COMNWRT
ACALL DELAY
MOV A,#06H
ACALL COMNWRT
ACALL DELAY
MOV A,#80H
ACALL COMNWRT
ACALL DELAY
MOV A,#'A'
ACALL DATAWRT
ACALL DELAY
MOV A,#'C'
ACALL DATAWRT
ACALL DELAY
MOV A,#'T'
ACALL DATAWRT
ACALL DELAY
MOV A,#'U'
ACALL DATAWRT
ACALL DELAY
MOV A,#'A'
ACALL DATAWRT
ACALL DELAY
MOV A,#'L'
ACALL DATAWRT
ACALL DELAY
MOV A,#87H
ACALL COMNWRT
ACALL DELAY
MOV A,#'T'
ACALL DATAWRT
ACALL DELAY
MOV A,#'E'
ACALL DATAWRT
ACALL DELAY
MOV A,#'M'
ACALL DATAWRT
ACALL DELAY
MOV A,#'P'
ACALL DATAWRT
ACALL DELAY
MOV A,#0C0H
ACALL COMNWRT
ACALL DELAY
MOV A,#'S'
ACALL DATAWRT
ACALL DELAY
MOV A,#'E'
ACALL DATAWRT
ACALL DELAY
MOV A,#'T'
ACALL DATAWRT
ACALL DELAY
MOV A,#0C4H
ACALL COMNWRT
ACALL DELAY
MOV A,#'T'
ACALL DATAWRT
ACALL DELAY
MOV A,#'E'
ACALL DATAWRT
ACALL DELAY
MOV A,#'M'
ACALL DATAWRT
ACALL DELAY
MOV A,#'P'
ACALL DATAWRT
ACALL DELAY
MOV A,#94H
ACALL COMNWRT
ACALL DELAY
MOV A,#'M'
ACALL DATAWRT
ACALL DELAY
MOV A,#'O'
ACALL DATAWRT
ACALL DELAY
MOV A,#'D'
ACALL DATAWRT
ACALL DELAY
MOV A,#'E'
ACALL DATAWRT
ACALL DELAY
MOV A,#0D4H
ACALL COMNWRT
ACALL DELAY
MOV A,#'J'
ACALL DATAWRT
ACALL DELAY
MOV A,#'B'
ACALL DATAWRT
ACALL DELAY
RET
COMNWRT: ;for lcd commands
MOV R6,A
ANL A,#0F0H
MOV P2,A
CLR P3.7
SETB P3.6
ACALL DELAY
CLR P3.6
MOV A,R6
ANL A,#0FH
RL A
RL A
RL A
RL A
MOV P2,A
CLR P3.7
SETB P3.6
ACALL DELAY
CLR P3.6
RET
DATAWRT: ;to send data to lcd and display
MOV R6,A
ANL A,#0F0H
MOV P2,A
SETB P3.7
SETB P3.6
ACALL DELAY
CLR P3.6
MOV A,R6
ANL A,#0FH
RL A
RL A
RL A
RL A
MOV P2,A
SETB P3.7
SETB P3.6
ACALL DELAY
CLR P3.6
RET
DELAY: ;delay per my class
MOV R5,#9
H3: MOV R4,#242
H2: MOV R3,#255
H1: DJNZ R3,H1
DJNZ R4,H2
DJNZ R5,H3
RET
END
]
|
| Topic | Author | Date |
| How to display data from a ADC0808 to a LCD | 01/01/70 00:00 | |
| Comments, please | 01/01/70 00:00 | |
| Comments | 01/01/70 00:00 | |
| Code Fragments | 01/01/70 00:00 | |
| Commenst added, reply to hal | 01/01/70 00:00 | |
| comments | 01/01/70 00:00 | |
| comments | 01/01/70 00:00 | |
| Program flow | 01/01/70 00:00 | |
| comments | 01/01/70 00:00 | |
| Clarification & Suggestions | 01/01/70 00:00 | |
| GREAT HELP | 01/01/70 00:00 | |
| Data Display loop | 01/01/70 00:00 | |
| Worked sorta | 01/01/70 00:00 | |
| The output | 01/01/70 00:00 | |
| I looked at it wrong | 01/01/70 00:00 | |
| Works | 01/01/70 00:00 | |
| Great news! | 01/01/70 00:00 | |
| Thank you | 01/01/70 00:00 | |
| You're Welcome | 01/01/70 00:00 | |
| A couple of questions | 01/01/70 00:00 | |
| Answers and questions | 01/01/70 00:00 | |
Thanks | 01/01/70 00:00 |



