Hi mackrackit, the above code works. Now what I'm trying to do is add a ntoher line of code to send "c" in the main loop but I can not seem to make it work.Code:' Name : Coin_Internet_CDC.pbp' Compiler : PICBASIC PRO Compiler 2.6 ' Assembler : PM or MPASM ' Target PIC : PIC18F4550 ' Hardware : Easypic6 Experimenter Board ' Oscillator : 4MHz external crystal (only???) ' Thanks : To Henrik, and other PBP experts ' Description : PICBASIC PRO program to show virtual serial comm. Working asm __CONFIG _CONFIG1L, _PLLDIV_1_1L & _CPUDIV_OSC1_PLL2_1L & _USBDIV_2_1L __CONFIG _CONFIG1H, _FOSC_HSPLL_HS_1H & _FCMEN_OFF_1H & _IESO_OFF_1H __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 & _ICPRT_OFF_4L & _XINST_OFF_4L & _DEBUG_OFF_4L endasm DEFINE OSC 48 DEFINE LCD_DREG PORTB DEFINE LCD_DBIT 0 DEFINE LCD_EREG PORTB DEFINE LCD_EBIT 5 DEFINE LCD_RSREG PORTB DEFINE LCD_RSBIT 4 DEFINE LCD_BITS 4 DEFINE LCD_LINES 2 DEFINE LCD_COMMANDUS 2000 DEFINE LCD_DATAUS 50 PAUSE 100 Include "cdc_desc.bas" ' Include the HID descriptors Buffer VAR BYTE[10] Buffer2 VAR BYTE[10] Cnt VAR BYTE b0 var byte B1 VAR BYTE ' Working buffer 1 for button command sel VAR BYTE ' Working buffer 2 for button command B3 VAR BYTE ' Working buffer 3 for button command i var byte Clear ' Clear buffers INTCON2.7 = 0 ' Enable PORTB pull-ups TRISB = 110000 ' Enable all buttons ADCON1 = 15 ' Set all I/Os to Digital CMCON = 7 ' Disable Comparators Cnt = 5 i = 0 '**************************************************** TRISA.4 = 1 ' RA4/T0CKI = input to TMR0 counter TRISA.0 = 0 ' RA0 = output for LED CMCON = 7 ' All digital 'If you prefer, then increment on low-to-high transitions T0CON = %11111000 '***************************************************** USBInit ' Initialize USART ' Main Program Loop Loop1: Lcdout $fe, 128, "Counter: ", #i USBService ' Must service USB regularly TMR0L = 0 ' Clear TMR0 count before start '**************ADDED COde 'gosub usbtx '**************************** 'goto Loop1 Loop2: USBService WHILE TMR0L = 0 ' Wait for high-to-low transition USBService WEND ' on RA4/T0CKI pause 5 PORTB.0 = 1 ' LED on to indicate transition seen i=i+1 ' Clear screen USBService buffer[0] = 49 Buffer[1] = 13 USBOut 3, Buffer, cnt,Loop2 Lcdout $fe, 128, "Counter: ", #i 'PAUSE 30 PORTB.0 = 0 ' LED off goto Loop1
The above code I use to attempt sending to pc...BTW I dont know what happened (T0CON = %11111000 and ADCON1 = %00001111) to the bits (but I think I did not alter it).Code:asm __CONFIG _CONFIG1L, _PLLDIV_1_1L & _CPUDIV_OSC1_PLL2_1L & _USBDIV_2_1L __CONFIG _CONFIG1H, _FOSC_HSPLL_HS_1H & _FCMEN_OFF_1H & _IESO_OFF_1H __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 & _ICPRT_OFF_4L & _XINST_OFF_4L & _DEBUG_OFF_4L endasm DEFINE OSC 48 DEFINE LCD_DREG PORTB DEFINE LCD_DBIT 0 DEFINE LCD_EREG PORTB DEFINE LCD_EBIT 5 DEFINE LCD_RSREG PORTB DEFINE LCD_RSBIT 4 DEFINE LCD_BITS 4 DEFINE LCD_LINES 2 DEFINE LCD_COMMANDUS 2000 DEFINE LCD_DATAUS 50 PAUSE 100 Include "cdc_desc.bas" ' Include the HID descriptors Buffer VAR BYTE[10] Buffer2 VAR BYTE[10] Cnt VAR BYTE b0 var byte B1 VAR BYTE ' Working buffer 1 for button command sel VAR BYTE ' Working buffer 2 for button command B3 VAR BYTE ' Working buffer 3 for button command i var byte Clear ' Clear buffers INTCON2.7 = 0 ' Enable PORTB pull-ups TRISB = 110000 ' Enable all buttons ADCON1 = 15 ' Set all I/Os to Digital CMCON = 7 ' Disable Comparators Cnt = 5 i = 0 '**************************************************** TRISA.4 = 1 ' RA4/T0CKI = input to TMR0 counter TRISA.0 = 0 ' RA0 = output for LED CMCON = 7 ' All digital 'If you prefer, then increment on low-to-high transitions T0CON = %11111000 '***************************************************** USBInit ' Initialize USART ' Main Program Loop Loop1: Lcdout $fe, 128, "Counter: ", #i USBService ' Must service USB regularly TMR0L = 0 ' Clear TMR0 count before start '**************ADDED COde gosub usbtx ' transmit character c to pc '**************************** Loop2: USBService WHILE TMR0L = 0 ' Wait for high-to-low transition USBService WEND ' on RA4/T0CKI pause 5 PORTB.0 = 1 ' LED on to indicate transition seen i=i+1 ' Clear screen USBService buffer[0] = 49 Buffer[1] = 13 USBOut 3, Buffer, cnt,Loop2 Lcdout $fe, 128, "Counter: ", #i 'PAUSE 30 PORTB.0 = 0 ' LED off goto Loop1 usbtx: USBService Buffer2[0] = 99 Buffer2[1] = 13 USBOut 3, Buffer2, cnt,usbtx return
thanks,
tacbanon



. acctually the reason I need to send "c" is to identify if the usb device is connected to the my pc application. My next step is to incorporate rtc and sdcards for record keeping. I will post my code later... thanks mackrackit.

Bookmarks