PDA

View Full Version : Usbin and hserin



mpardinho
- 27th October 2007, 15:26
hserin work 100% but if i use usbin code not work




INCLUDE "modedefs.bas"

asm
__CONFIG _CONFIG1L, _PLLDIV_1_1L & _CPUDIV_OSC1_PLL2_1L & _USBDIV_2_1L
; ; ; USB clock source comes from the 96 MHz PLL divided by 2
; ; [OSC1/OSC2 Src: /1][96 MHz PLL Src: /2]
; No prescale (4 MHz oscillator input drives PLL directly)


__CONFIG _CONFIG1H, _FOSC_XTPLL_XT_1H & _FCMEN_OFF_1H & _IESO_OFF_1H
; ; ; Oscillator Switchover mode disabled
; ; Fail-Safe Clock Monitor disabled
; XT oscillator, PLL enabled, XT used by USB
__CONFIG _CONFIG2L, _PWRT_ON_2L & _BOR_ON_2L & _BORV_2_2L & _VREGEN_ON_2L
__CONFIG _CONFIG2H, _WDT_OFF_2H
__CONFIG _CONFIG3H, _MCLRE_ON_3H & _LPT1OSC_OFF_3H & _PBADEN_OFF_3H & _CCP2MX_ON_3H
__CONFIG _CONFIG4L, _STVREN_ON_4L & _LVP_OFF_4L & _XINST_OFF_4L & _DEBUG_OFF_4L
__CONFIG _CONFIG5L, _CP0_ON_5L & _CP1_ON_5L & _CP2_ON_5L & _CP3_ON_5L
__CONFIG _CONFIG5H, _CPB_ON_5H
endasm

DEFINE OSC 48

DEFINE HSER_RCSTA 90h
DEFINE HSER_TXSTA 20h
DEFINE HSER_BAUD 9600
DEFINE HSER_CLROERR 1


Led Var PORTA.0

Recebe VAR PIR1.5 ' Receive interrupt flag (1=full , 0=empty)
Transmite VAR PIR1.4 ' Transmit interrupt flag (1=empty, 0=full)

Buffer VAR BYTE[16]
Cnt VAR BYTE
A VAR BYTE
B VAR BYTE
C VAR BYTE


ADCON1 = 15 ' Set all I/Os to Digital
INTCON2.7 = 0 ' Disable PortB Pullups
CMCON = 7 ' Disable Comparators

' Interrupt Settings
RCON.7 = 0 ' Disable Priority Interrupts, 1 to Enable

' Enable/Disable Interrupts
INTCON.4 = 0 ' Disable INT0 (PORTB.0)
INTCON3.3 = 0 ' Disable INT1 (PORTB.1)
INTCON3.4 = 0 ' Disable INT2 (PORTB.2)
INTCON.5 = 0 ' Disable TMR0 (Timmer 0)

INTCON.6 = 1 ' Enable Peripheral Interrupts
INTCON.7 = 1 ' Enable Global Interrupt Handler

PIE1.4 = 0 ' USART Transmit Interrupt
PIE1.5 = 1 ' USART Receive Interrupt
PIE2.5 = 0 ' USB Interrupt

PORTA = 0
TRISA = %00000000

HIGH LED
PAUSE 1000

USBInit

PAUSE 1
LOW LED

ON INTERRUPT GOTO Interruptor
ENABLE INTERRUPT

'-------------------------------------------------------------------------------
Inicio:
USBService

Cnt = 3
USBIn 3, Buffer, Cnt, Inicio
GOTO usbSaida

GOTO Inicio

'-------------------------------------------------------------------------------
DISABLE INTERRUPT

Interruptor:

IF Transmite = 1 THEN
Transmite = 0
ENDIF

IF Recebe = 1 THEN
HSERIN 2, Continua, [Wait("<"), a, b]

Buffer[0] = A
Buffer[1] = B
Buffer[2] = 13
Buffer[3] = 10
Cnt = 3

Recebe = 0
goto usbSaida
ENDIF

Continua:
Recebe = 0
GOTO Fim

'-------------------------------------------------------------------------------
usbSaida:
USBService
USBOut 3, Buffer, Cnt, usbSaida

goto Inicio

'-------------------------------------------------------------------------------
Fim:
RESUME
ENABLE INTERRUPT

'-------------------------------------------------------------------------------
END