Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
10/30/02 08:52
Read: times


 
#31670 - RE: Problem with ADuC812
Try this

This are snippets from an existing project and its is running well. I never touch PLLCON.

Its using T2 to generate Baudrate.

You just need to fit it for your compiler

Regards

Urs



; BAUDRATES T2 Values:

%IF (%CLOCK EQ %MHz16) THEN
(
BDT2_24 EQU 65328
BDT2_48 EQU 65432
BDT2_96 EQU 65484
BDT2_192 EQU 65510
BDT2_384 EQU 65523
BDT2_1152 EQU 65532 ; geht nicht
BDT2_125 EQU 65532 ; geht
) FI

%IF (%CLOCK EQ %MHz14_745) THEN
(
BDT2_24 EQU 65344
BDT2_48 EQU 65440
BDT2_96 EQU 65488
BDT2_192 EQU 65512
BDT2_384 EQU 65524
BDT2_1152 EQU 65532 ; geht
BDT2_125 EQU 65532 ; geht nicht
) FI

%IF (%CLOCK EQ %MHz11_0592) THEN
(
BDT2_24 EQU 65392
BDT2_48 EQU 65464
BDT2_96 EQU 65500
BDT2_192 EQU 65518
BDT2_384 EQU 65527
BDT2_1152 EQU 65533 ; geht
BDT2_125 EQU 65533 ; geht nicht

BDT1_96 EQU 250
BDT1_192 EQU 253
BDT1_384 EQU 0 ; geht nicht
BDT1_1152 EQU 0 ; geht nicht
) FI

%IF (%CLOCK EQ %MHz7_3728) THEN
(
BDT2_24 EQU 65440
BDT2_48 EQU 65488
BDT2_96 EQU 65512
BDT2_192 EQU 65524
BDT2_384 EQU 65530
BDT2_1152 EQU 65534 ; geht
BDT2_125 EQU 65534 ; geht nicht

BDT1_96 EQU 252
BDT1_192 EQU 254
BDT1_384 EQU 255
BDT1_1152 EQU 0 ; geht nicht
) FI

%IF (%CLOCK EQ %MHz3_579) THEN

(
BDT2_24 EQU 65489 ; Achtung kein Baudraten quarz
BDT2_48 EQU 65513 ; etwa 2-3 Prozent Fehler
BDT2_96 EQU 65524
BDT2_192 EQU 65530
BDT2_384 EQU 65533 ;
BDT2_1152 EQU 65535 ; -2,91 Prozent Fehler
BDT2_125 EQU 65534 ; geht nicht

BDT1_96 EQU 254 ; -2,6 Prozent Fehler 9346 Baud
BDT1_192 EQU 255
BDT1_384 EQU 0 ; geht nicht
BDT1_1152 EQU 0 ; geht nicht
) FI






Init:
MOV PSW,#0
MOV SP,#80h
CLR EA
MOV P0,#0FFH ;CLEAR PORTS
MOV P1,#000H ; Set ADuC812 P1 all to Digital Input
MOV P2,#0FFH ;
MOV P3,#0FFH ;
CALL PROZUART_INIT
MOV A,#'x'
CALL putByte
RET


PROZUART_INIT_PR SEGMENT CODE
RSEG PROZUART_INIT_PR
PROZUART_INIT:
CLR ES ; disable serial interrupts
ANL PCON,#00000000B ; SMOD=0
MOV SCON,#11000000B ; MODE = 3; 9Bit UART,variable baudrate
CLR TR2 ; stop timer
MOV T2CON,#00110000B ; port controlled by T2 RCLK/TCLK=1
MOV RCAP2L,#LOW (BDT2_1152 )
MOV RCAP2H,#HIGH(BDT2_1152 )
CLR RI ; reset end of serial port transmission
SETB TI ; reset end of serial port transmission
SETB TB8 ; TB8=1 (no pulse)
SETB REN ; enable reception
SETB TR2 ; stop timer
RET

;-------------------------------------------------------------------------
PROZUART_XGCCP_PROZ_COND_PR SEGMENT CODE
RSEG PROZUART_XGCCP_PROZ_COND_PR

XGCCP_Proz_Cond:
get_Byte:
JBC RI,RFRxExitOk ; anything received?Y
RFRxExitNok:
CLR C
RET
RFRxExitOk:
MOV A,SBUF ; get character
SETB C ; Success
RET

;-------------------------------------------------------------------------
PROZUART_XPCCP_PROZ_PR SEGMENT CODE
RSEG PROZUART_XPCCP_PROZ_PR
putByte:
XPCCP_Proz:
__w2: JBC TI,__c2 ; shift reg empty?y, clr & continue
JMP __w2 ;N, wait
__c2:
%TRIGGER_WATCHDOG

MOV C,P
MOV TB8,C ; 8E1
MOV SBUF,A ; send character
RET


List of 7 messages in thread
TopicAuthorDate
Problem with ADuC812            01/01/70 00:00      
RE: Problem with ADuC812            01/01/70 00:00      
RE: Problem with ADuC812            01/01/70 00:00      
RE: Name creep            01/01/70 00:00      
RE: Name creep            01/01/70 00:00      
RE: Name creep            01/01/70 00:00      
RE: Name creep            01/01/70 00:00      

Back to Subject List