18f2550 Usb bağlantı ve timer sorunu

Başlatan secilcemal, 20 Eylül 2013, 15:06:34

secilcemal

İyi Günler,
18f2550 ile bilgisayarın usb portu üzerinden haberleşen bir uygulamam var.
Bu uygulamadan düşük frekanslı çıkış almak için (100-200hz) timer0 kesmesini biraz araştırdım ve sonunda bu kodları yazdım, compile etmesine rağmen artık bilgisayara bağladığımda bağlanmıyor, hatta usb görmüyor bile.


Kodlar:


DEFINE OSC 48 'Using a 20mhz xtal but multiplied by fuse config           
DEFINE  RESET_ORG 800h ' This is for Microchip bootloader- Code start address
'.........Timer Kodları........
on interrupt goto KESME
T0CON=%11000011
INTCON=%10100000

clear

TMR0L = 6
'TURN  PORTS FROM ANALOG TO DIGITAL
ADCON1 = $0F
'Turn Analog Ports to Digital by turning off comparators
CMCON=7

USBBufferSizeMax   con 64  ' maximum USB buffer size
USBBufferSizeTX    con 64  ' input   
USBBufferSizeRX    con 64  ' output

' the USB buffer...
USBBuffer        Var Byte[USBBufferSizeMax]
USBBufferCount   Var Byte


   SAY VAR BYTE
   
   low portc.7
usbinit ' initialise USB...




' ************************************************************
' * Start of main program loop                               *
' ************************************************************
ProgramStart:

' ************************************************************
' * Check for start button                               *
' ************************************************************
  SAY=0 

   
' ************************************************************
' * STEP1 Wait for USB packet to arrive from PC              *
' ************************************************************
gosub DoUSBIn
' We expect a packet of 11 bytes to be received
   
.
.
.
DoUSBOut:
   USBBufferCount = USBBufferSizeTX              ' TX buffer size
   USBService                                    ' keep connection alive
   USBOut 1, USBBuffer, USBBufferCount, DoUSBOut ' if bus available, transmit data
return

disable
KESME:
  if databits.bit5=1 then
SAY=SAY+1
if SAY=40 THEN
PORTC.7=1
ENDIF
IF SAY=100 THEN
PORTC.7=0
SAY=0
ENDIF
  endif

TMR0L=6
INTCON.2=0
RESUME
ENABLE
END