Continue to Site

Welcome to our site!

Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

  • Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

USB-MCU-USB loop

Status
Not open for further replies.
You can get it here Downloads - jallib - Project Hosting on Google Code Jalv2 works with MPLAB sim so I would think you could use Proteus to. It let's you use @asm it makes good code. The jalv2 compiler make the best asm files I have seen have a look
Code:
datahi_set macro val
  bsf 3, 6 ; STATUS<rp1>
  endm
datahi_clr macro val
  bcf 3, 6 ; STATUS<rp1>
  endm
datalo_set macro val
  bsf 3, 5 ; STATUS<rp0>
  endm
datalo_clr macro val
  bcf 3, 5 ; STATUS<rp0>
  endm
irp_clr macro
  bcf 3, 7 ; STATUS<irp>
  endm
irp_set macro
  bsf 3, 7 ; STATUS<irp>
  endm
branchhi_set macro lbl
    bsf 10, 4 ; PCLATH<4>
  endm
branchhi_clr macro lbl
    bcf 10, 4 ; PCLATH<4>
  endm
branchlo_set macro lbl
    bsf 10, 3 ; PCLATH<3>
  endm
branchlo_clr macro lbl
    bcf 10, 3 ; PCLATH<3>
  endm

                               org      0
l__main
; C:\JALPack\lib/16f690.jal
;  271 var          byte  _PORTC_shadow        = PORTC
                               movf     v_portc,w
                               movwf    v__portc_shadow
; C:\JALPack\testing\sirc_receiver.jal
;   58 enable_digital_io()                          -- no analog pins used in this sample
; C:\JALPack\lib/16f690.jal
;  844    ANSEL  = 0b0000_0000       -- all digital
                               datahi_set v_ansel
                               clrf     v_ansel
;  845    ANSELH = 0b0000_0000       -- all digital
                               clrf     v_anselh

;  852    ADCON0 = 0b0000_0000         -- disable ADC
                               datahi_clr v_adcon0
                               clrf     v_adcon0
;  853    ADCON1 = 0b0000_0000
                               datalo_set v_adcon1
                               clrf     v_adcon1
; C:\JALPack\testing\sirc_receiver.jal
;   58 enable_digital_io()                          -- no analog pins used in this sample
; C:\JALPack\lib/16f690.jal
;  869    adc_off()
; C:\JALPack\testing\sirc_receiver.jal
;   58 enable_digital_io()                          -- no analog pins used in this sample
; C:\JALPack\lib/16f690.jal
;  860    CM1CON0 = 0b0000_0000       -- disable comparator
                               datalo_clr v_cm1con0
                               datahi_set v_cm1con0
                               clrf     v_cm1con0

; C:\JALPack\lib/16f690.jal
;  378    _PORTC_flush()
; C:\JALPack\testing\sirc_receiver.jal
;   83 Red_1 = 0
;   84 Green = 0
                               bcf      v__portc_shadow, 1 ; x67
; C:\JALPack\lib/16f690.jal
;  275    PORTC = _PORTC_shadow
                               movf     v__portc_shadow,w
                               movwf    v_portc
; C:\JALPack\testing\sirc_receiver.jal
;   84 Green = 0
; C:\JALPack\lib/16f690.jal
;  368    _PORTC_flush()
; C:\JALPack\testing\sirc_receiver.jal
;   84 Green = 0
;   85 Yellow = 0
                               bcf      v__portc_shadow, 2 ; x68
; C:\JALPack\lib/16f690.jal
;  275    PORTC = _PORTC_shadow
                               movf     v__portc_shadow,w
                               movwf    v_portc
; C:\JALPack\testing\sirc_receiver.jal
;   85 Yellow = 0
; C:\JALPack\lib/16f690.jal
;  358    _PORTC_flush()
; C:\JALPack\testing\sirc_receiver.jal
;   85 Yellow = 0
;   86 Red_2 = 0
                               bcf      v__portc_shadow, 3 ; x69
; C:\JALPack\lib/16f690.jal
;  275    PORTC = _PORTC_shadow
                               movf     v__portc_shadow,w
                               movwf    v_portc
; C:\JALPack\testing\sirc_receiver.jal
;   86 Red_2 = 0
; C:\JALPack\lib/16f690.jal
;  347    _PORTC_flush()
; C:\JALPack\testing\sirc_receiver.jal
;   86 Red_2 = 0
;   89 Procedure Get_SIRC(byte out my_add, byte out my_cmd)  is
                               goto     l__l190
l_get_sirc
;   96 asm StartLook:
l_startlook
;   99     ir_add = 0
                               clrf     v_ir_add
;  100     ir_cmd = 0
                               clrf     v_ir_cmd
;  102     while(IR_pin == 1) loop
l__l192
                               btfss    v_porta, 2 ; pin_a2
                               goto     l__l193
;  103     lTime = 0
                               clrf     v_ltime
;  105     end loop
                               goto     l__l192
l__l193
;  107     while(IR_pin == 0) loop
l__l195
                               btfsc    v_porta, 2 ; pin_a2
                               goto     l__l196
;  109         lTime = lTime + 1   -- increment every 200uS until pin is high
                               incf     v_ltime,f
;  110         _usec_delay (200)
                               datalo_clr v__pic_temp
                               datahi_clr v__pic_temp
                               movlw    131
                               movwf    v__pic_temp
                               branchhi_clr l__l271
                               branchlo_clr l__l271
l__l271
                               decfsz   v__pic_temp,f
                               goto     l__l271
                               nop      
                               nop      
;  111     end loop
                               goto     l__l195
l__l196
;  113     if (lTime <= 10) then asm goto StartLook  end if
                               movlw    10
                               subwf    v_ltime,w
                               btfsc    v__status, v__z
                               goto     l__l273
                               btfsc    v__status, v__c
                               goto     l__l199
l__l273
                               goto     l_startlook
l__l199
;  114     if (lTime >= 14) then asm goto StartLook  end if
                               movlw    14
                               subwf    v_ltime,w
                               btfsc    v__status, v__z
                               goto     l__l275
                               btfss    v__status, v__c
                               goto     l__l201
l__l275
                               goto     l_startlook
l__l201
;  117   lTime = 0
                               clrf     v_ltime
;  120 for 7 loop  -- repeat 7 times for command
                               clrf     v__floop4
l__l202
;  121   ir_cmd = ir_cmd >> 1
                               bcf      v__status, v__c
                               rrf      v_ir_cmd,f
;  123  while(IR_pin == 1) loop -- wait for it to be low and reset the counter
l__l205
                               btfss    v_porta, 2 ; pin_a2
                               goto     l__l206
;  124  lTime = 0
                               clrf     v_ltime
;  125  end loop
                               goto     l__l205
l__l206
;  127         while(IR_pin == 0) loop -- while the pin is low which is our pulse count
l__l208
                               btfsc    v_porta, 2 ; pin_a2
                               goto     l__l209
;  128             lTime = lTime + 1    -- increment every 200uS until pin is high
                               incf     v_ltime,f
;  129             _usec_delay (200)    -- 200uS delay
                               datalo_clr v__pic_temp
                               datahi_clr v__pic_temp
                               movlw    131
                               movwf    v__pic_temp
                               branchhi_clr l__l276
                               branchlo_clr l__l276
l__l276
                               decfsz   v__pic_temp,f
                               goto     l__l276
                               nop      
                               nop      
;  130             end loop
                               goto     l__l208
l__l209
;  132         if (lTime >= 6) then ir_cmd = (ir_cmd | 0x40) end if
                               movlw    6
                               subwf    v_ltime,w
                               btfsc    v__status, v__z
                               goto     l__l278
                               btfss    v__status, v__c
                               goto     l__l212
l__l278
                               bsf      v_ir_cmd, 6
l__l212
;  136 end loop
                               incf     v__floop4,f
                               movlw    7
                               subwf    v__floop4,w
                               btfss    v__status, v__z
                               goto     l__l202
;  139 for 5 loop  -- repeat 5 times for address/device
                               clrf     v__floop5
l__l213
;  140  ir_add = ir_add >> 1
                               bcf      v__status, v__c
                               rrf      v_ir_add,f
;  142         while(IR_pin == 1) loop
l__l216
                               btfss    v_porta, 2 ; pin_a2
                               goto     l__l217
;  143           lTime = 0   -- wait for it to be low reset the counter
                               clrf     v_ltime
;  144         end loop
                               goto     l__l216
l__l217
;  146         while(IR_pin == 0) loop -- while the pin is low which is our pulse count
l__l219
                               btfsc    v_porta, 2 ; pin_a2
                               goto     l__l220
;  147           lTime = lTime + 1     -- increment every 200uS until pin is high
                               incf     v_ltime,f
;  148           _usec_delay (200)     -- 200uS delay
                               datalo_clr v__pic_temp
                               datahi_clr v__pic_temp
                               movlw    131
                               movwf    v__pic_temp
                               branchhi_clr l__l279
                               branchlo_clr l__l279
l__l279
                               decfsz   v__pic_temp,f
                               goto     l__l279
                               nop      
                               nop      
;  149         end loop
                               goto     l__l219
l__l220
;  151         if(lTime >= 6) then ir_add = (ir_add | 0x10) end if
                               movlw    6
                               subwf    v_ltime,w
                               btfsc    v__status, v__z
                               goto     l__l281
                               btfss    v__status, v__c
                               goto     l__l223
l__l281
                               bsf      v_ir_add, 4
l__l223
;  155 end loop
                               incf     v__floop5,f
                               movlw    5
                               subwf    v__floop5,w
                               btfss    v__status, v__z
                               goto     l__l213
;  157 my_cmd = ir_cmd
                               movf     v_ir_cmd,w
                               movwf    v___my_cmd_2
;  158 my_add = ir_add
                               movf     v_ir_add,w
                               movwf    v___my_add_2
;  160 end procedure
                               movf     v___my_add_2,w
                               return   
l__l190
;  163 forever loop
l__l224
;  165 if IR_pin == 0 then
                               btfsc    v_porta, 2 ; pin_a2
                               goto     l__l227
;  167     Get_SIRC(my_add,my_cmd)
                               call     l_get_sirc
                               datalo_clr v_my_add
                               datahi_clr v_my_add
                               movwf    v_my_add
                               movf     v___my_cmd_2,w
                               movwf    v_my_cmd
;  169 end if
l__l227
;  171   if (my_add == 01) & (my_cmd == 16) then
                               movlw    1
                               subwf    v_my_add,w
                               bcf      v__bitbucket, 1 ; _btemp19
                               btfsc    v__status, v__z
                               bsf      v__bitbucket, 1 ; _btemp19
                               movlw    16
                               subwf    v_my_cmd,w
                               bcf      v__bitbucket, 2 ; _btemp20
                               btfsc    v__status, v__z
                               bsf      v__bitbucket, 2 ; _btemp20
                               bsf      v__bitbucket, 3 ; _btemp21
                               btfsc    v__bitbucket, 1 ; _btemp19
                               btfss    v__bitbucket, 2 ; _btemp20
                               bcf      v__bitbucket, 3 ; _btemp21
                               btfss    v__bitbucket, 3 ; _btemp21
                               goto     l__l229
;  172    Red_1 = !Red_1
                               btfss    v_portc, 0 ; pin_c0
                               goto     l__l285
                               bcf      v__bitbucket, 4 ; _btemp22
                               goto     l__l284
l__l285
                               bsf      v__bitbucket, 4 ; _btemp22
l__l284
                               bcf      v__portc_shadow, 0 ; x70
                               btfsc    v__bitbucket, 4 ; _btemp22
                               bsf      v__portc_shadow, 0 ; x70
; C:\JALPack\lib/16f690.jal
;  275    PORTC = _PORTC_shadow
                               movf     v__portc_shadow,w
                               movwf    v_portc
; C:\JALPack\testing\sirc_receiver.jal
;  172    Red_1 = !Red_1
; C:\JALPack\lib/16f690.jal
;  378    _PORTC_flush()
; C:\JALPack\testing\sirc_receiver.jal
;  172    Red_1 = !Red_1
;  173   end if
l__l229
;  175   if (my_add == 01) & (my_cmd == 17) then
                               movlw    1
                               subwf    v_my_add,w
                               bcf      v__bitbucket, 5 ; _btemp23
                               btfsc    v__status, v__z
                               bsf      v__bitbucket, 5 ; _btemp23
                               movlw    17
                               subwf    v_my_cmd,w
                               bcf      v__bitbucket, 6 ; _btemp24
                               btfsc    v__status, v__z
                               bsf      v__bitbucket, 6 ; _btemp24
                               bsf      v__bitbucket, 7 ; _btemp25
                               btfsc    v__bitbucket, 5 ; _btemp23
                               btfss    v__bitbucket, 6 ; _btemp24
                               bcf      v__bitbucket, 7 ; _btemp25
                               btfss    v__bitbucket, 7 ; _btemp25
                               goto     l__l233
;  176    Green = !Green
                               btfss    v_portc, 1 ; pin_c1
                               goto     l__l289
                               bcf      v__bitbucket+1, 0 ; _btemp26
                               goto     l__l288
l__l289
                               bsf      v__bitbucket+1, 0 ; _btemp26
l__l288
                               bcf      v__portc_shadow, 1 ; x71
                               btfsc    v__bitbucket+1, 0 ; _btemp26
                               bsf      v__portc_shadow, 1 ; x71
; C:\JALPack\lib/16f690.jal
;  275    PORTC = _PORTC_shadow
                               movf     v__portc_shadow,w
                               movwf    v_portc
; C:\JALPack\testing\sirc_receiver.jal
;  176    Green = !Green
; C:\JALPack\lib/16f690.jal
;  368    _PORTC_flush()
; C:\JALPack\testing\sirc_receiver.jal
;  176    Green = !Green
;  177   end if
l__l233
;  179   if (my_add == 01) & (my_cmd == 18) then
                               movlw    1
                               subwf    v_my_add,w
                               bcf      v__bitbucket+1, 1 ; _btemp27
                               btfsc    v__status, v__z
                               bsf      v__bitbucket+1, 1 ; _btemp27
                               movlw    18
                               subwf    v_my_cmd,w
                               bcf      v__bitbucket+1, 2 ; _btemp28
                               btfsc    v__status, v__z
                               bsf      v__bitbucket+1, 2 ; _btemp28
                               bsf      v__bitbucket+1, 3 ; _btemp29
                               btfsc    v__bitbucket+1, 1 ; _btemp27
                               btfss    v__bitbucket+1, 2 ; _btemp28
                               bcf      v__bitbucket+1, 3 ; _btemp29
                               btfss    v__bitbucket+1, 3 ; _btemp29
                               goto     l__l237
;  180    Yellow = !Yellow
                               btfss    v_portc, 2 ; pin_c2
                               goto     l__l293
                               bcf      v__bitbucket+1, 4 ; _btemp30
                               goto     l__l292
l__l293
                               bsf      v__bitbucket+1, 4 ; _btemp30
l__l292
                               bcf      v__portc_shadow, 2 ; x72
                               btfsc    v__bitbucket+1, 4 ; _btemp30
                               bsf      v__portc_shadow, 2 ; x72
; C:\JALPack\lib/16f690.jal
;  275    PORTC = _PORTC_shadow
                               movf     v__portc_shadow,w
                               movwf    v_portc
; C:\JALPack\testing\sirc_receiver.jal
;  180    Yellow = !Yellow
; C:\JALPack\lib/16f690.jal
;  358    _PORTC_flush()
; C:\JALPack\testing\sirc_receiver.jal
;  180    Yellow = !Yellow
;  181   end if
l__l237
;  183   if (my_add == 01) & (my_cmd == 19) then
                               movlw    1
                               subwf    v_my_add,w
                               bcf      v__bitbucket+1, 5 ; _btemp31
                               btfsc    v__status, v__z
                               bsf      v__bitbucket+1, 5 ; _btemp31
                               movlw    19
                               subwf    v_my_cmd,w
                               bcf      v__bitbucket+1, 6 ; _btemp32
                               btfsc    v__status, v__z
                               bsf      v__bitbucket+1, 6 ; _btemp32
                               bsf      v__bitbucket+1, 7 ; _btemp33
                               btfsc    v__bitbucket+1, 5 ; _btemp31
                               btfss    v__bitbucket+1, 6 ; _btemp32
                               bcf      v__bitbucket+1, 7 ; _btemp33
                               btfss    v__bitbucket+1, 7 ; _btemp33
                               goto     l__l224
;  184    Red_2 = !Red_2
                               btfss    v_portc, 3 ; pin_c3
                               goto     l__l297
                               bcf      v__bitbucket+2, 0 ; _btemp34
                               goto     l__l296
l__l297
                               bsf      v__bitbucket+2, 0 ; _btemp34
l__l296
                               bcf      v__portc_shadow, 3 ; x73
                               btfsc    v__bitbucket+2, 0 ; _btemp34
                               bsf      v__portc_shadow, 3 ; x73
; C:\JALPack\lib/16f690.jal
;  275    PORTC = _PORTC_shadow
                               movf     v__portc_shadow,w
                               movwf    v_portc
; C:\JALPack\testing\sirc_receiver.jal
;  184    Red_2 = !Red_2
; C:\JALPack\lib/16f690.jal
;  347    _PORTC_flush()
; C:\JALPack\testing\sirc_receiver.jal
;  184    Red_2 = !Red_2
;  185   end if
;  188 end loop
                               goto     l__l224
                               end
 
Status
Not open for further replies.

Latest threads

New Articles From Microcontroller Tips

Back
Top