OT: zaujimava schema - problem...
Jirka
zaloha@volny.cz
Pátek Listopad 26 15:25:21 CET 2004
Daniel Valuch napsal(a):
> kamarat mi akurat napisal:
> "Pocuvaj skusal som to postavit a zakazdym, ked som to zapol mi to
> vyhodilo istic, netusis v com moze byt chyba ???"
>
> nejake napady kde moze byt problem?
>
Myslim, ze 47. ci 39. radek nejsoui zcela v poradku....
$MOD831 ;Use 8052 predefined Symbols
LED EQU P3.4
;____________________________________________________________________
; BEGINNING OF CODE
CSEG
ORG 0000H
JMP MAIN
ORG 0060H ; Start code at address above interrupts
MAIN: ; Main program
MOV T3CON,#85h
MOV T3FD,#08h
MOV SCON,#52h
START:
CPL LED ; CPL LED with each transmission
MOV DPTR, #TITLE
CALL SENDSTRING ; write title block on screen
MOV R0, #00H ; Start transmissions from 0
MOV R1, #08H ; Start a new line after 8 transmissions
LOOP1: ; Every eight transmissions start on a
; new line
MOV A, #10 ; Transmit a linefeed
CALL SENDCHAR
MOV A, #13 ; Transmit a carriage return
CALL SENDCHAR
MOV R1, #08H
LOOP2:
MOV A, #20H ; Transmit a SPACE (=ASCII 20) between
; transmissions on same line
CALL SENDCHAR
MOV A, R0 ; Transmit R0 = present data
CALL SENDVAL
INC R0 ; increment data
CJNE A, #7FH, CONT ; check if data =7F, if no continue
JMP WAIT5S ; if = 7F wait 5s and repeat
CONT: DEC R1 ; decrement R1....
MOV A, R1
CJNE A, #00H, LOOP2 ; and check if new line is required
; jump to loop 2 for a space
JMP LOOP1 ; jump to loop 1 for a new line
WAIT5S: MOV A, #50 ; wait 5s
CALL DELAY
JMP START ; start transmissions again
;____________________________________________________________________
; SENDSTRING
SENDSTRING: ; sends ASCII string to UART starting at location
; DPTR and ending with a null (0) value
PUSH ACC
PUSH B
CLR A
MOV B,A
IO0010: MOV A,B
INC B
MOVC A,@A+DPTR
JZ IO0020
CALL SENDCHAR
JMP IO0010
IO0020: POP B
POP ACC
RET
;____________________________________________________________________
; SENDCHAR
SENDCHAR: ; sends ASCII value contained in A to UART
JNB TI,$ ; wait til present char gone
CLR TI ; must clear TI
MOV SBUF,A
RET
;____________________________________________________________________
; SENDVAL
SENDVAL: ; converts the hex value of A into two ASCII chars,
; and then spits these two characters up the UART.
; does not change the value of A.
PUSH ACC
SWAP A
CALL HEX2ASCII
CALL SENDCHAR ; send high nibble
POP ACC
PUSH ACC
CALL HEX2ASCII
CALL SENDCHAR ; send low nibble
POP ACC
RET
;____________________________________________________________________
; HEX2ASCII
HEX2ASCII: ; converts A into the hex character representing the
; value of A's least significant nibble
ANL A,#00Fh
CJNE A,#00Ah,$+3
JC IO0030
ADD A,#007h
IO0030: ADD A,#'0'
RET
;____________________________________________________________________
; DELAY
DELAY: ; Delays by 100ms * A
; 100mSec based on 11.0592MHZ
; Core Clock
MOV R5,A ; Acc holds delay variable
DLY0: MOV R6,#200 ; Set up delay loop0
DLY1: MOV R7,#229 ; Set up delay loop1
DJNZ R7,$ ; Dec R2 until R2 is zero
DJNZ R6,DLY1 ; Dec R1 & Jump DLY1 until R1 is 0
DJNZ R5,DLY0 ; Dec R0 & Jump DLY0 until R0 is 0
RET ; Return from subroutine
;____________________________________________________________________
TITLE: DB 10,10,13,'____________________________________',10,13
DB 'Analog Devices MicroConverter ADuC831',10,13
DB ' UART Demo Routine',10,13
DB ' Transmission of Data from 0 to 7F',10,13,0
END
--
Jirka
Další informace o konferenci Hw-list