| ??? 02/25/13 04:11 Modified: 02/25/13 04:14 Read: times |
#189458 - Commenst added, reply to hal Responding to: ???'s previous message |
So here is my code now with comments. To Hal, no the book is not very detailed.You and the other person has said the same thing about destroying the data and after looking at it I would agree so I have taken it out but I get a question mark displayed. I do know that copying it straight from the book doesn't work, most of the code i have taken out of the book didn't work for the LCD so I had to change it around, its just that I didn't understand much of the ADC and conversion, I now know more of what it does and I'm still learning assembly language so some of the stuff I don't understand but am looking it up. You will also notice my comment in block DATA_DISPLAY: about not being sure what to put in a certain spot.
Thanks, James ...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,#91H ; place cursor at thso position
ACALL COMNWRT
ACALL DELAY
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
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 R1,A
ANL A,#0F0H
MOV P2,A
CLR P3.7
SETB P3.6
ACALL DELAY
CLR P3.6
MOV A,R1
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 R1,A
ANL A,#0F0H
MOV P2,A
SETB P3.7
SETB P3.6
ACALL DELAY
CLR P3.6
MOV A,R1
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 |



