; compiler : jal 0.4.62 ; date : 03-Aug-2006 20:30:04 ; main source : pctimer ; command line : pctimer.jal ; target chip : 16f84 ; cpu : pic 14 ; clock : 4000000 ; input files : 13 ; lines : 2940 ; chars : 77827 ; compilation nodes : 16817 ; stack : 24Kb ; heap : 5062Kb ; seconds : 0.120 (24500 lines/second) ; output code : 263 ; page : 0 (0.0%) ; bank : 0 (0.0%) ; page+bank : 0 (0.0%) ; file : 25 ; stack: 5 (4,0,1) errorlevel -306 list p=PIC16f84 _CP_OFF equ H'3FF0' ;code protect on _CP_ON equ H'0000' ;code protect off _PWRTE_ON equ H'0000' ;Power on timer on _PWRTE_OFF equ H'0008' ;Power on timer off _WDT_OFF equ H'0000' ;watch dog timer off _WDT_ON equ H'0004' ;watch dog timer on _RC_OSC equ H'0003' ;RC oscillator _HS_OSC equ H'0002' ;HS crystal oscillator _XT_OSC equ H'0001' ;XT crystal oscillator _LP_OSC equ H'0000' ;LP crystal oscillator __CONFIG _CP_OFF + _PWRTE_ON + _WDT_ON + _XT_OSC ORG 0000 goto __main ORG 0004 movwf H'00C' swapf H'003',w clrf H'003' movwf H'00D' movf H'00A',w movwf H'00E' clrf H'00A' movf H'004',w movwf H'00F' goto __interrupt ORG 000E __interrupt: ; 000E _12482__vector: ; 000E p_12482_interrupt_handler: ; 000E ;; 060 : tmr0 = _tmr0_start movf H'014',w movwf H'001' ;; 061 : _tmr1 = _tmr1 - 1 movlw H'01' subwf H'016',w movwf H'016' ;; 062 : if _tmr1 == 0 then movf H'016',f btfss H'003',2 goto if_12500_by if_12500_th: ; 0016 ;; 063 : _tmr1 = _tmr1_start movf H'015',w movwf H'016' ;; 064 : _tmr2 = _tmr2 - 1 movlw H'01' subwf H'017',w movwf H'017' if_12500_by: ; 001B ;; 068 : asm bcf 11, 2 bcf H'00B',2 e_12482_interrupt_handler: ; 001C movf H'00F',w movwf H'004' movf H'00E',w movwf H'00A' swapf H'00D',w movwf H'003' swapf H'00C',f swapf H'00C',w RETFIE __main: ; 0025 ; var H'010:000' transfer_bit ; var H'010:000' transfer_byte ;; 038 : var volatile byte tmr0 at 1 ; var H'001:000' tmr0 ;; 042 : var volatile byte port_a at 5 ; var H'005:000' port_a ;; 043 : var volatile byte port_b at 6 ; var H'006:000' port_b ;; 095 : var volatile bit pin_a4 at port_a : 4 ; var H'005:004' pin_a4 ;; 099 : var volatile bit pin_b1 at port_b : 1 ; var H'006:001' pin_b1 ;; 100 : var volatile bit pin_b2 at port_b : 2 ; var H'006:002' pin_b2 ;; 103 : var volatile bit pin_b5 at port_b : 5 ; var H'006:005' pin_b5 ;; 292 : var byte trisa ; var H'011:000' trisa ;; 293 : var byte trisb ; var H'012:000' trisb ;; 300 : trisa = all_input movlw H'FF' movwf H'011' ;; 302 : trisb = all_input movlw H'FF' movwf H'012' ;; 609 : var byte _port_b_buffer ; var H'013:000' _port_b_buffer ;; 048 : var byte _tmr0_start ; var H'014:000' _tmr0_start ;; 049 : var byte _tmr1_start ; var H'015:000' _tmr1_start ;; 051 : var byte _tmr1 ; var H'016:000' _tmr1 ;; 052 : var byte _tmr2 ; var H'017:000' _tmr2 ;; 037 : pin_b3_direction = output bcf H'012',3 call _3665__vector ;; 038 : pin_b4_direction = output bcf H'012',4 call _3694__vector ;; 039 : pin_b5_direction = output bcf H'012',5 call _3723__vector ;; 098 : var byte a,b,c -- 3 bytes of time data, a being the most significant ; var H'018:000' a ; var H'019:000' b ; var H'01A:000' c ;; 100 : forever loop w_15692_ag: ; 002F ;; 101 : pin_b3 = off bcf H'013',3 call _6543__vector ;; 102 : pin_b4 = off bcf H'013',4 call _6572__vector ;; 103 : pin_b5 = on bsf H'013',5 call _6601__vector ;; 106 : option = 0b_1101_1111 movlw H'DF' call _2694__vector ;; 107 : clear_watchdog call _8057__vector ;; 110 : a = read_byte call _15386__vector movwf H'018' ;; 111 : b = read_byte call _15386__vector movwf H'019' ;; 112 : c = read_byte call _15386__vector movwf H'01A' ;; 115 : for 90 loop ; var H'01B:000' _loop_temp_15583 movlw H'5A' movwf H'01B' f_15583_again: ; 0040 ;; 116 : if ! pin_a4 then btfsc H'005',4 goto if_15589_by if_15589_th: ; 0042 ;; 117 : delay_1S(2) movlw H'02' call _10593__vector ;; 118 : clear_watchdog call _8057__vector ;; 119 : pin_b5 = ! pin_b5 bcf H'013',5 btfss H'006',5 ass_15845_t: ; 0047 bsf H'013',5 ass_15845_f: ; 0048 call _6601__vector if_15589_by: ; 0049 decfsz H'01B',f goto f_15583_again ;; 124 : for a loop ; var H'01B:000' _loop_temp_15618 movf H'018',w movwf H'01B' w_15904_ag: ; 004D movf H'01B',f btfsc H'003',2 w_15904_jb: ; 004F goto w_15904_be w_15904_bo: ; 0050 ;; 125 : for 256 loop ; var H'01C:000' _loop_temp_15622 movlw H'100' movwf H'01C' f_15622_again: ; 0052 ;; 126 : for 256 loop ; var H'01D:000' _loop_temp_15628 movlw H'100' movwf H'01D' f_15628_again: ; 0054 ;; 127 : wait call _15446__vector decfsz H'01D',f goto f_15628_again decfsz H'01C',f goto f_15622_again decf H'01B',f goto w_15904_ag w_15904_be: ; 005B ;; 132 : for b loop ; var H'01B:000' _loop_temp_15640 movf H'019',w movwf H'01B' w_15934_ag: ; 005D movf H'01B',f btfsc H'003',2 w_15934_jb: ; 005F goto w_15934_be w_15934_bo: ; 0060 ;; 133 : for 256 loop ; var H'01C:000' _loop_temp_15644 movlw H'100' movwf H'01C' f_15644_again: ; 0062 ;; 134 : wait call _15446__vector decfsz H'01C',f goto f_15644_again decf H'01B',f goto w_15934_ag w_15934_be: ; 0067 ;; 138 : for c loop ; var H'01B:000' _loop_temp_15656 movf H'01A',w movwf H'01B' w_15949_ag: ; 0069 movf H'01B',f btfsc H'003',2 w_15949_jb: ; 006B goto w_15949_be w_15949_bo: ; 006C ;; 139 : wait call _15446__vector decf H'01B',f goto w_15949_ag w_15949_be: ; 006F ;; 143 : pin_b4 = on bsf H'013',4 call _6572__vector ;; 144 : clear_watchdog call _8057__vector ;; 467 : procedure delay_500ms( byte in x = 1 ) is movlw H'01' ;; 145 : delay_500ms call _10548__vector ;; 146 : pin_b4 = off bcf H'013',4 call _6572__vector goto w_15692_ag ;; 003 : idle_loop: page goto idle_loop as_15695_idle_loop: ; 0077 goto as_15695_idle_loop _15446__vector: ; 0078 p_15446_wait: ; 0078 ;; 084 : if pin_b1 == on then btfss H'006',1 goto if_15452_by if_15452_th: ; 007A ;; 447 : procedure delay_10ms( byte in x = 1 ) is movlw H'01' ;; 085 : delay_10ms call _10323__vector ;; 086 : if pin_b1 == on then btfss H'006',1 goto if_15468_by if_15468_th: ; 007E ;; 087 : option = 0b_1101_1000 movlw H'D8' call _2694__vector ;; 088 : while true loop end loop w_15484_ag: ; 0080 goto w_15484_bo w_15484_bo: ; 0081 goto w_15484_ag w_15484_be: ; 0082 if_15468_by: ; 0082 if_15452_by: ; 0082 ;; 092 : clear_watchdog call _8057__vector ;; 471 : procedure delay_1s( byte in x = 1 ) is movlw H'01' ;; 093 : delay_1S call _10593__vector ;; 094 : pin_b5 = ! pin_b5 bcf H'013',5 btfss H'006',5 ass_15814_t: ; 0087 bsf H'013',5 ass_15814_f: ; 0088 goto _6601__vector e_15446_wait: ; 0089 _15386__vector: ; 0089 p_15386_read_byte: ; 0089 ;; 071 : var byte data ; var H'01B:000' data ;; 072 : for 8 loop ; var H'01C:000' _loop_temp_15398 movlw H'08' movwf H'01C' f_15398_again: ; 008B ;; 073 : data = data << 1 clrc rlf H'01B',f ;; 074 : data = data | read_bit call _15266__vector iorwf H'01B',w movwf H'01B' ;; 075 : clear_watchdog call _8057__vector ;; 076 : pin_b5 = off bcf H'013',5 call _6601__vector decfsz H'01C',f goto f_15398_again ;; 078 : return data movf H'01B',w e_15386_read_byte: ; 0096 return _15266__vector: ; 0097 p_15266_read_bit: ; 0097 ;; 044 : while pin_b2 == off loop w_15297_ag: ; 0097 btfsc H'006',2 w_15297_jb: ; 0098 goto w_15297_be w_15297_bo: ; 0099 ;; 045 : while pin_b2 == off loop end loop w_15285_ag: ; 0099 btfss H'006',2 w_15285_bo: ; 009A goto w_15285_ag w_15285_be: ; 009B ;; 276 : procedure delay_50uS( byte in x = 1 ) is movlw H'01' ;; 046 : delay_50us call _9613__vector goto w_15297_ag w_15297_be: ; 009E ;; 276 : procedure delay_50uS( byte in x = 1 ) is movlw H'01' ;; 048 : delay_50us call _9613__vector ;; 051 : var byte data = 0 ; var H'01D:000' data clrf H'01D' ;; 052 : if pin_b1 == on then btfss H'006',1 goto if_15318_by if_15318_th: ; 00A3 ;; 053 : data = 1 movlw H'01' movwf H'01D' if_15318_by: ; 00A5 ;; 056 : pin_b3 = on bsf H'013',3 call _6543__vector ;; 059 : while pin_b2 == on loop w_15358_ag: ; 00A7 btfss H'006',2 w_15358_jb: ; 00A8 goto w_15358_be w_15358_bo: ; 00A9 ;; 060 : while pin_b2 == on loop end loop w_15346_ag: ; 00A9 btfsc H'006',2 w_15346_bo: ; 00AA goto w_15346_ag w_15346_be: ; 00AB ;; 276 : procedure delay_50uS( byte in x = 1 ) is movlw H'01' ;; 061 : delay_50us call _9613__vector goto w_15358_ag w_15358_be: ; 00AE ;; 276 : procedure delay_50uS( byte in x = 1 ) is movlw H'01' ;; 063 : delay_50us call _9613__vector ;; 066 : pin_b3 = off bcf H'013',3 call _6543__vector ;; 067 : return data movf H'01D',w e_15266_read_bit: ; 00B3 return _10593__vector: ; 00B4 ;; 471 : procedure delay_1s( byte in x = 1 ) is ; var H'01E:000' x p_10593_delay_1s: ; 00B4 movwf H'01E' ;; 472 : _delay_100us( x, 100, 100 ) movf H'01E',w movwf H'01F' movlw H'64' movwf H'020' movlw H'64' goto _9652__vector e_10593_delay_1s: ; 00BB _10548__vector: ; 00BB ;; 467 : procedure delay_500ms( byte in x = 1 ) is ; var H'01B:000' x p_10548_delay_500ms: ; 00BB movwf H'01B' ;; 468 : _delay_100us( x, 100, 50 ) movf H'01B',w movwf H'01F' movlw H'64' movwf H'020' movlw H'32' goto _9652__vector e_10548_delay_500ms: ; 00C2 _10323__vector: ; 00C2 ;; 447 : procedure delay_10ms( byte in x = 1 ) is ; var H'01E:000' x p_10323_delay_10ms: ; 00C2 movwf H'01E' ;; 448 : _delay_100us( x, 100, 1 ) movf H'01E',w movwf H'01F' movlw H'64' movwf H'020' movlw H'01' goto _9652__vector e_10323_delay_10ms: ; 00C9 _9652__vector: ; 00C9 ;; 283 : procedure _delay_100us( byte in x, byte in y, byte in z ) is ; var H'01F:000' x ; var H'020:000' y ; var H'021:000' z p_9652__delay_100us: ; 00C9 movwf H'021' ;; 337 : var byte minus_one = -1 ; var H'022:000' minus_one movlw H'FFFFFFFF' movwf H'022' ;; 339 : var byte xx, yy ; var H'023:000' xx ; var H'024:000' yy ;; 343 : local loop_x, loop_y, loop_z, loop_w ; const H'0D1' loop_w ;; 346 : loop_z: as_9862_loop_z: ; 00CC ;; 349 : movfw y movf H'020',w ;; 350 : movwf yy movwf H'024' ;; 351 : loop_y: as_9859_loop_y: ; 00CE ;; 354 : movfw x movf H'01F',w ;; 355 : movwf xx movwf H'023' ;; 356 : loop_x: as_9856_loop_x: ; 00D0 ;; 358 : movlw inner_iterations movlw H'17' ;; 360 : loop_w: as_9865_loop_w: ; 00D1 ;; 361 : addwf minus_one, w addwf H'022',w ;; 362 : skpnc skpnc ;; 363 : goto loop_w goto as_9865_loop_w ;; 366 : decfsz xx, f decfsz H'023',f ;; 367 : goto loop_x goto as_9856_loop_x ;; 370 : decfsz yy, f decfsz H'024',f ;; 371 : goto loop_y goto as_9859_loop_y ;; 374 : decfsz z, f decfsz H'021',f ;; 375 : goto loop_z goto as_9862_loop_z e_9652__delay_100us: ; 00DA return _9613__vector: ; 00DB ;; 276 : procedure delay_50uS( byte in x = 1 ) is ; var H'01E:000' x p_9613_delay_50us: ; 00DB movwf H'01E' ;; 277 : for x loop ; var H'01F:000' _loop_temp_9630 movf H'01E',w movwf H'01F' w_15749_ag: ; 00DE movf H'01F',f btfsc H'003',2 w_15749_jb: ; 00E0 goto w_15749_be w_15749_bo: ; 00E1 ;; 278 : delay_1uS( 50 ) movlw H'32' call _8400__vector decf H'01F',f goto w_15749_ag w_15749_be: ; 00E5 e_9613_delay_50us: ; 00E5 return _8400__vector: ; 00E6 ;; 036 : procedure delay_1us( byte in x ) is ; var H'020:000' x p_8400_delay_1us: ; 00E6 movwf H'020' ;; 174 : var byte v_overhead = x_overhead ; var H'021:000' v_overhead movlw H'FFFFFFF4' movwf H'021' ;; 175 : var byte v_iteration = x_iteration ; var H'022:000' v_iteration movlw H'FFFFFFFC' movwf H'022' ;; 178 : local loop ; const H'0EF' loop ;; 180 : movfw x movf H'020',w ;; 181 : addwf v_overhead, w addwf H'021',w ;; 182 : skpc skpc ;; 183 : retlw 0 retlw H'00' ;; 184 : loop: as_9065_loop: ; 00EF ;; 185 : addwf v_iteration, w addwf H'022',w ;; 186 : skpnc skpnc ;; 187 : goto loop goto as_9065_loop e_8400_delay_1us: ; 00F2 return _8057__vector: ; 00F3 p_8057_clear_watchdog: ; 00F3 ;; 1076 : asm clrwdt clrwdt e_8057_clear_watchdog: ; 00F4 return ;; 758 : procedure pin_b5'put( bit in x at _port_b_buffer : 5 ) is p_6601__pin_b5__put_t: ; 00F5 _6601__vector: ; 00F5 ; var H'013:005' x p_6601_put: ; 00F5 ;; 759 : _port_b_flush goto _5314__vector e_6601_put: ; 00F6 ;; 755 : procedure pin_b4'put( bit in x at _port_b_buffer : 4 ) is p_6572__pin_b4__put_t: ; 00F6 _6572__vector: ; 00F6 ; var H'013:004' x p_6572_put: ; 00F6 ;; 756 : _port_b_flush goto _5314__vector e_6572_put: ; 00F7 ;; 752 : procedure pin_b3'put( bit in x at _port_b_buffer : 3 ) is p_6543__pin_b3__put_t: ; 00F7 _6543__vector: ; 00F7 ; var H'013:003' x p_6543_put: ; 00F7 ;; 753 : _port_b_flush goto _5314__vector e_6543_put: ; 00F8 _5314__vector: ; 00F8 p_5314__port_b_flush: ; 00F8 ;; 618 : var volatile byte port_b_ at 6 = _port_b_buffer ; var H'006:000' port_b_ movf H'013',w movwf H'006' e_5314__port_b_flush: ; 00FA return ;; 432 : procedure pin_b5_direction'put( bit in d at trisb : 5 ) is p_3723__pin_b5_direction__put_t: ; 00FB _3723__vector: ; 00FB ; var H'012:005' d p_3723_put: ; 00FB ;; 433 : _trisb_flush goto _2917__vector e_3723_put: ; 00FC ;; 429 : procedure pin_b4_direction'put( bit in d at trisb : 4 ) is p_3694__pin_b4_direction__put_t: ; 00FC _3694__vector: ; 00FC ; var H'012:004' d p_3694_put: ; 00FC ;; 430 : _trisb_flush goto _2917__vector e_3694_put: ; 00FD ;; 426 : procedure pin_b3_direction'put( bit in d at trisb : 3 ) is p_3665__pin_b3_direction__put_t: ; 00FD _3665__vector: ; 00FD ; var H'012:003' d p_3665_put: ; 00FD ;; 427 : _trisb_flush goto _2917__vector e_3665_put: ; 00FE _2917__vector: ; 00FE p_2917__trisb_flush: ; 00FE ;; 321 : bank movfw trisb movf H'012',w ;; 322 : tris 6 tris H'006' e_2917__trisb_flush: ; 0100 return ;; 266 : procedure option'put( byte in x ) is p_2694__option__put_t: ; 0101 _2694__vector: ; 0101 ; var H'01E:000' x p_2694_put: ; 0101 movwf H'01E' ;; 268 : bank movfw x movf H'01E',w ;; 269 : option option e_2694_put: ; 0104 return END ; ********** variable mapping ; 01:0 : ; ; tmr0 * 0038:19 /usr/local/share/jal/lib/jpic.jal ; 05:0 : ; ; port_a * 0042:19 /usr/local/share/jal/lib/jpic.jal ; 05:4 : ; ; pin_a4 * 0095:19 /usr/local/share/jal/lib/jpic.jal ; 06:0 : ; ; port_b_ * 0618:22 /usr/local/share/jal/lib/jpic.jal ; port_b * 0043:19 /usr/local/share/jal/lib/jpic.jal ; 06:1 : ; ; pin_b1 * 0099:19 /usr/local/share/jal/lib/jpic.jal ; 06:2 : ; ; pin_b2 * 0100:19 /usr/local/share/jal/lib/jpic.jal ; 06:5 : ; ; pin_b5 * 0103:19 /usr/local/share/jal/lib/jpic.jal ; 10:0 : ; ; transfer_byte ; transfer_bit ; 11:0 : ; ; trisa 0292:10 /usr/local/share/jal/lib/jpic.jal ; 12:0 : ; ; trisb 0293:10 /usr/local/share/jal/lib/jpic.jal ; 12:3 : ; ; d * 0426:33 /usr/local/share/jal/lib/jpic.jal ; 12:4 : ; ; d * 0429:33 /usr/local/share/jal/lib/jpic.jal ; 12:5 : ; ; d * 0432:33 /usr/local/share/jal/lib/jpic.jal ; 13:0 : ; ; _port_b_buffer 0609:10 /usr/local/share/jal/lib/jpic.jal ; 13:3 : ; ; x * 0752:23 /usr/local/share/jal/lib/jpic.jal ; 13:4 : ; ; x * 0755:23 /usr/local/share/jal/lib/jpic.jal ; 13:5 : ; ; x * 0758:23 /usr/local/share/jal/lib/jpic.jal ; 14:0 : ; ; _tmr0_start 0048:10 /usr/local/share/jal/lib/interval.jal ; 15:0 : ; ; _tmr1_start 0049:10 /usr/local/share/jal/lib/interval.jal ; 16:0 : ; ; _tmr1 0051:10 /usr/local/share/jal/lib/interval.jal ; 17:0 : ; ; _tmr2 0052:10 /usr/local/share/jal/lib/interval.jal ; 18:0 : ; ; a 0098:10 pctimer.jal ; 19:0 : ; ; b 0098:12 pctimer.jal ; 1A:0 : ; ; c 0098:14 pctimer.jal ; 1B:0 : ; ; x 0467:24 /usr/local/share/jal/lib/jdelay.jal ; data 0071:12 pctimer.jal ; _loop_temp_15656 0138:03 pctimer.jal ; _loop_temp_15640 0132:03 pctimer.jal ; _loop_temp_15618 0124:03 pctimer.jal ; _loop_temp_15583 0115:03 pctimer.jal ; 1C:0 : ; ; _loop_temp_15398 0072:03 pctimer.jal ; _loop_temp_15644 0133:05 pctimer.jal ; _loop_temp_15622 0125:05 pctimer.jal ; 1D:0 : ; ; data 0051:12 pctimer.jal ; _loop_temp_15628 0126:07 pctimer.jal ; 1E:0 : ; ; x 0266:23 /usr/local/share/jal/lib/jpic.jal ; x 0276:23 /usr/local/share/jal/lib/jdelay.jal ; x 0447:23 /usr/local/share/jal/lib/jdelay.jal ; x 0471:21 /usr/local/share/jal/lib/jdelay.jal ; 1F:0 : ; ; _loop_temp_9630 0277:04 /usr/local/share/jal/lib/jdelay.jal ; x 0283:25 /usr/local/share/jal/lib/jdelay.jal ; 20:0 : ; ; x 0036:22 /usr/local/share/jal/lib/jdelay.jal ; y 0283:36 /usr/local/share/jal/lib/jdelay.jal ; 21:0 : ; ; v_overhead 0174:19 /usr/local/share/jal/lib/jdelay.jal ; z 0283:47 /usr/local/share/jal/lib/jdelay.jal ; 22:0 : ; ; v_iteration 0175:19 /usr/local/share/jal/lib/jdelay.jal ; minus_one 0337:16 /usr/local/share/jal/lib/jdelay.jal ; 23:0 : ; ; xx 0339:16 /usr/local/share/jal/lib/jdelay.jal ; 24:0 : ; ; yy 0339:20 /usr/local/share/jal/lib/jdelay.jal