
	AGC_PWM		EQU	P1.7
	XMITV_PWM	EQU	P1.6
	LED		EQU	P2.0


	MOV     P0M1,#00101110b	;x,x,CMP_Ref,x,CMP_V,Sonar_SigV,W_Temp,Tx_Pin
	MOV     P0M2,#00000001b		

	MOV     P1M1,#00000000b	;AGC_PWM,XMITV_PWM,x,DE,x,x,RxD,TxD
        MOV     P1M2,#11000001b	;p1.2,p1.3 open drain (must have ext. pullups)

	clr	a
        MOV     P2M1,a 		;Port2, mode Quasi Bi-directional
        MOV     P2M2,a		

        MOV     P3M1,a		;Port3, mode Quasi Bi-directional
        MOV     P3M2,a

	dec	a		;acc now=0ffh
	mov	p3,a
	mov	p2,a
	mov	p1,a
	mov	p0,a

	clr	Tx_Pin		;xmit OFF
	clr	XMITV_PWM	;XmitPwr 0 vdc
	clr	DE		;Set linea A/B to receive RS485

        mov	SCON,#01010000b	;8 bit uart, REN=1 rcv enabled
	mov	PCON,#10000000b	;SMOD=1

	MOV	TCON,#01010101b	;TF1,TR1,TF0,TR0,IntEdge1,IntType1,IE0,IT0
	MOV	IE,#00000000b	;Global,-,T2,Serial,T1,X1,T0,X0

	mov	BRGCON,#00000010b	;UART set to use Baud Rate Generator
	mov	BRGR1,#0		;0,48=115200, 2,240=9600, 5,240=4800 
	mov	BRGR0,#48		;1,112=19200, 0,176=38400
					;with 7.373Mhz clock
	mov	BRGCON,#00000011b	;enable Baud Rate Generator
	clr	RI

	MOV     SP,#EndVarList-1;Initialize stack pointer into RAM

	mov	a,WDCON
	clr	acc.2		;Stop Watchdog timer
	mov	WDCON,a
	MOV 	WFEED1,#0A5h 	;do watchdog feed part 1
	MOV 	WFEED2,#05Ah 	;do watchdog feed part 2

	
	setb	AGC_PWM		;P1.7
	setb	XMITV_PWM	;P1.6

	mov	TPCR2H,#00000000b	;Prescaler
	mov	TPCR2L,#01100011b

	mov	TCR21,#00000110b	;PLLDV=PLL divisor, N.  
					;PLLFreq=PCLK/(N+1)

	mov	CCCRB,#00000001b	;Enable PWM channel B
	mov	CCCRC,#00000001b	;Enable PWN channel C

	mov	TCR20,#10000000b	;Enable PLL
	setb	AGC_PWM		;P1.7
	setb	XMITV_PWM	;P1.6

	call	Dly50mS		;Wait for PLL to lock up

	mov	TOR2H,#00h	;16 bit timer reload value for PWM (Hi Byte)
	mov	TOR2L,#0ffh	;16 bit timer reload value for PWM (Lo Byte)
	mov	TCR21,#10000000b	;Latch in the TOR2H/L values

	mov	OCRBH,#00h	;CCU channel B Compare value (Hi byte)
	mov	OCRBL,#0fh	;CCU channel B Compare value (Lo byte)
	mov	TCR21,#10000000b	;Update duty cycle

	mov	OCRCH,#00h	;CCU channel C Compare value (Hi byte)
	mov	OCRCL,#0fh	;CCU channel C Compare value (Lo byte)
	mov	TCR21,#10000000b	;Update duty cycle

	mov	TCR20,#10000010b	;Asymmetrical PWM

	setb	p1.0
	setb	p1.1
	setb	es

STAAA:	clr	TI
	mov	sbuf,#'f'	;Send string of "f"'s to see if HW running
	jnb	TI,$
	djnz	r0,STAAA
	call	Dly50mS
	cpl	LED	
	jmp	STAAA


Dly50mS:			;50ms at 7.373Mhz
	push	2
	push	1
	push	0
	mov	r2,#3
DySc:	mov	r1,#240
DySf:	mov	r0,#0
	djnz	r0,$
	djnz	r1,DySf
	djnz	r2,DySc
	pop	0
	pop	1
	pop	2
	ret



