be80be
Well-Known Member
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