| ??? 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 |
| Topic | Author | Date |
| 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 |



