;Fordulatszámmérő PIC16F628A -val 4 digites LED-el ; PORTA0 <17> digit1 ; PORTA1 <18> digit2 ; PORTA2 <1> digit3 ; PORTA3 <2> digit4 ; PORTA4 <3> ; PORTA5 <4> - RESET/MCLR ; PORTA6 <15> - Oszcillátor ; PORTA7 <16> - Oszcillátor ; PORTB0 <6> RB0/INT -- fordszámérő bemenet ; PORTB1 <7> szegmens_g +200ohm ; PORTB2 <8> szegmens_f +200ohm ; PORTB3 <9> szegmens_e +200ohm ; PORTB4 <10> szegmens_d +200ohm ; PORTB5 <11> szegmens_c +200ohm ; PORTB6 <12> szegmens_b +200ohm ; PORTB7 <13> szegmens_a +200ohm list p=16f628 ; list directive to define processor include ; processor specific variable definitions __CONFIG _CP_OFF & _WDT_OFF & _BOREN_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT & _MCLRE_OFF & _LVP_OFF errorlevel -302 #define Jelszam d'45' ;Fordulatonkénti impulzosok száma #define Mérszám d'4' ;mérés/kijelzés száma másodpercenként ;#define PORTB,0 ;jel bemenet ;LED szegmensek #define LEDW_sza LEDW,7 ; ----sza #define LEDW_szb LEDW,6 ; szf ! ! szb #define LEDW_szc LEDW,5 ; szf ! ! szb #define LEDW_szd LEDW,4 ;szh-- ---szg #define LEDW_sze LEDW,3 ; sze ! ! szc #define LEDW_szf LEDW,2 ; sze ! ! szc #define LEDW_szg LEDW,1 ; ----szd ;#define LEDW_szh ;#define LEDW_szi ;LED digitek -- PORTA4 csak open drain, PORTA5 (MCLR/Vpp) csak bemenet #define Ldigit1 PORTA,0 #define Ldigit2 PORTA,1 #define Ldigit3 PORTA,2 #define Ldigit4 PORTA,3 #define Fosc d'4000000' #define Toszc (Fosc/4)-1 #define T0mer (Toszc)/(Mérszám) #define Tmr1 (T0mer)/0x100/0x100 #define Tmr2 ((T0mer)-(Tmr1)*0x100*0x100)/0x100 #define Tmr3 ((T0mer)-(Tmr1)*0x100*0x100-(Tmr2)*0x100) ;LED-hez LEDH. udata 0x20 Digitszám res 1 HiByte res 1 LoByte res 1 DIGIT1 res 1 DIGIT2 res 1 DIGIT3 res 1 DIGIT4 res 1 DIGIT5 res 1 DIGIT6 res 1 DIGIT7 res 1 DIGIT8 res 1 DIGIT9 res 1 DIGIT10 res 1 null res 1 ;Méréshez: BeSzH res 1 ;bemeneti számláló BeSzL res 1 ;matekhez math. udata 0x30 REGA3 res 1 ;lsb REGA2 res 1 REGA1 res 1 REGA0 res 1 ;msb dec.'127' fölött a szám negativ! REGB3 res 1 ;lsb REGB2 res 1 REGB1 res 1 REGB0 res 1 ;msb dec.'127' fölött a szám negativ! REGC3 res 1 ;lsb REGC2 res 1 REGC1 res 1 REGC0 res 1 ;msb dec.'127' fölött a szám negativ! MTEMP res 1 MCOUNT res 1 DCOUNT res 1 Tcs res 1 ;TMR1 túlcsordulás számláló Konst1H res 1 ;konstans L Konst1M res 1 ;konstans M Konst1L res 1 ;konstans H LEDd. udata 0x50 LEDW res 1 ;pill. DIGIT tárolása LED1 res 1 LED2 res 1 LED3 res 1 LED4 res 1 DSIGN res 1 ;várakozáshoz vár. udata 0x60 d1 res 1 d2 res 1 d3 res 1 d4 res 1 ;tárolt számok és ;megszakitáshoz: INT_VAR UDATA_SHR T1H res 1 T1L res 1 T2H res 1 T2M res 1 T2L res 1 T3H res 1 T3M res 1 T3L res 1 w_temp res 1 ; variable used for context saving status_temp res 1 ; variable used for context saving org 0x0000 GOTO KEZD ORG 0x004 ; interrupt vector location BTFSC INTCON,INTF ;PORT B0 okozta a megszakitást? GOTO RBINT goto Ki_m RBINT: movwf w_temp movf STATUS,w ; W register mentése movwf status_temp ; STATUS register mentése incfsz BeSzL,f goto Ki_m incf BeSzH,f BCF INTCON,INTF ;-- fleg törlése HA RB0 okozta a megszakitást Ki_m: movf status_temp,w ; STATUS register vissza movwf STATUS swapf w_temp,f swapf w_temp,w ; W register vissza retfie ; return from interrupt KEZD: BCF STATUS,IRP ;Bank 0,1 BSF STATUS,RP0 ;Bank1 movlw b'00001001' ;bit3 ha=1->4MHz ha=0->48kHz - bit0 ha=1->BOR->No Reset movwf PCON ;belső óra 4MHz MOVLW b'10001111' MOVWF OPTION_REG ; BSF OPTION_REG,7 ;'-RBPU' portB "pullupot" (gyenge felhúzás) Kikapcsolva ha=1 ; BCF OPTION_REG,6 ;'INTEDG' =1 RB0/INT lefutó élre; =0 felfutóra ; BCF OPTION_REG,5 ;'T0CS' =1 TMR0 CLK Inp RA4-ről; =0 belső óráról ; BCF OPTION_REG,4 ;'T0SE' =1 TMR0 lefutó élre léptet; =0 felfutóra ; BSF OPTION_REG,3 ;elöosztó a WDT-hez, (0-- a Timer0-hoz) ; BSF OPTION_REG,2 ;elöosztás=128 000- 1:1, Timer0-nál 1:2 ; BSF OPTION_REG,1 ; 100- 1:16 1:32 ; BSF OPTION_REG,0 ; 111- 1:128 1:256 BCF STATUS,RP0 ;Bank0 MOVLW b'10000111' ;3. bit RA0 és RA1-et választja ki ;0-2. bit két comparátor belső Uref-el MOVWF CMCON ;b'10000111' = comparátorok letiltva (port A0-A4 normál) movlw Tmr1 ;0x0F Konstans1=4MHz/4 movwf Konst1H movlw Tmr2 ;0x42 movwf Konst1M movlw Tmr3 ;0x3F movwf Konst1L ; =1000000 tmr1_alapra: movlw b'00000001' ;0. bit kapcsolja ki (ill. be =1) az időzitőt movwf T1CON movwf TMR1L movwf TMR1H CLRF PORTA CLRF PORTB BSF STATUS,RP0 ;Bank1 MOVLW b'11111111' ;bitx=0 ->kimenet, =1 ->bemenet MOVWF TRISA bcf Ldigit1 bcf Ldigit2 bcf Ldigit3 bcf Ldigit4 MOVLW b'00000001' MOVWF TRISB BCF STATUS,RP0 ;Bank0 bcf PIR1,0 Meres0: banksel 0 movlw 0x0 movwf BeSzL movwf BeSzH clrf TMR1H clrf TMR1L clrf Tcs BCF INTCON,INTF ;jelzőbit törlése HA RB0 már bebillentette BSF INTCON,INTE ;Bport megszakithat BSF INTCON,GIE ;ált. megszakitás eng. Ti1: btfss PIR1,0 ;TMR1 túlcsordult? bit0-> TMR1F goto Ploop21 bcf PIR1,0 incf Tcs,f movlw Tmr1 subwf Tcs,w btfss STATUS,C goto Ti1 Ti2: call PORTra movlw Tmr2 subwf TMR1H,w btfss STATUS,C goto Ti2 Ti3: call PORTra movlw Tmr3 subwf TMR1L,w btfss STATUS,C goto Ti3 goto Merveg Ploop21 call PORTra ;Kiírás multiplexelve goto Ti1 Merveg: BCF INTCON,GIE ;Megszakitások TILTVA movlw 0x0F movwf PORTA ;kijelzés letíltva - számítás idejére movlw 0x0 addwf BeSzL,w btfss STATUS,Z ;Zero flag=1 ,ha az eredmény =0 goto Szamitas addwf BeSzH,w btfss STATUS,Z goto Szamitas clrf DIGIT7 ;Ha nincs ujabb jel 1 sec. belül, clrf DIGIT8 ; -- 0-val nem osztunk! clrf DIGIT9 clrf DIGIT10 call KAR_AT goto Meres0 Szamitas: movf BeSzL,w movwf REGA0 movf BeSzH,w movwf REGA1 movlw d'60' movwf REGB0 movlw 0x0 movwf REGA2 movwf REGA3 movwf REGB1 movwf REGB2 movwf REGB3 call multiply ;rega=rega*regb ->T1 movlw Mérszám ; mérési idó korrekciója (1sec/mérések száma) movwf REGB0 movlw 0x0 movwf REGA2 movwf REGA3 movwf REGB1 movwf REGB2 movwf REGB3 call multiply movlw Jelszam movwf REGB0 movlw 0x0 movwf REGB1 movwf REGB2 movwf REGB3 call divide call bin2dec ;rega-->decimálissá call KAR_AT ;DIGIT 7-10 tartalmazza a fordulatszámot goto Meres0 ;(rutinok:) KAR_AT: ;DEC.szám - karakterré movf DIGIT7,W movwf LEDW call Kar_Ki movf LEDW,w MOVWF LED1 movf DIGIT8,W movwf LEDW call Kar_Ki movf LEDW,w MOVWF LED2 movf DIGIT9,W movwf LEDW call Kar_Ki movf LEDW,w MOVWF LED3 movf DIGIT10,W movwf LEDW call Kar_Ki movf LEDW,w MOVWF LED4 RETURN Kar_Ki: ;LEDW-ben levő szám átalakítás szegmensekre ;ciklikusan megy " pihenő " időben movlw 0 subwf LEDW,W btfsc STATUS,Z goto D2K0 movlw 1 subwf LEDW,W btfsc STATUS,Z goto D2K1 movlw 2 subwf LEDW,W btfsc STATUS,Z goto D2K2 movlw 3 subwf LEDW,W btfsc STATUS,Z goto D2K3 movlw 4 subwf LEDW,W btfsc STATUS,Z goto D2K4 movlw 5 subwf LEDW,W btfsc STATUS,Z goto D2K5 movlw 6 subwf LEDW,W btfsc STATUS,Z goto D2K6 movlw 7 subwf LEDW,W btfsc STATUS,Z goto D2K7 movlw 8 subwf LEDW,W btfsc STATUS,Z goto D2K8 movlw 9 subwf LEDW,W btfsc STATUS,Z goto D2K9 return ;szegmensek írása D2K0: bsf LEDW_sza bsf LEDW_szb bsf LEDW_szc bsf LEDW_szd bsf LEDW_sze bsf LEDW_szf bcf LEDW_szg return D2K1: bcf LEDW_sza bsf LEDW_szb bsf LEDW_szc bcf LEDW_szd bcf LEDW_sze bcf LEDW_szf bcf LEDW_szg return D2K2: bsf LEDW_sza bsf LEDW_szb bcf LEDW_szc bsf LEDW_szd bsf LEDW_sze bcf LEDW_szf bsf LEDW_szg return D2K3: bsf LEDW_sza bsf LEDW_szb bsf LEDW_szc bsf LEDW_szd bcf LEDW_sze bcf LEDW_szf bsf LEDW_szg return D2K4: bcf LEDW_sza bsf LEDW_szb bsf LEDW_szc bcf LEDW_szd bcf LEDW_sze bsf LEDW_szf bsf LEDW_szg return D2K5: bsf LEDW_sza bcf LEDW_szb bsf LEDW_szc bsf LEDW_szd bcf LEDW_sze bsf LEDW_szf bsf LEDW_szg return D2K6: bsf LEDW_sza bcf LEDW_szb bsf LEDW_szc bsf LEDW_szd bsf LEDW_sze bsf LEDW_szf bsf LEDW_szg return D2K7: bsf LEDW_sza bsf LEDW_szb bsf LEDW_szc bcf LEDW_szd bcf LEDW_sze bcf LEDW_szf bcf LEDW_szg return D2K8: bsf LEDW_sza bsf LEDW_szb bsf LEDW_szc bsf LEDW_szd bsf LEDW_sze bsf LEDW_szf bsf LEDW_szg return D2K9: bsf LEDW_sza bsf LEDW_szb bsf LEDW_szc bsf LEDW_szd bcf LEDW_sze bsf LEDW_szf bsf LEDW_szg return ;************************************************ PORTra: movlw 0xFF movwf PORTA movlw 4 subwf Digitszám,W btfss STATUS,Z incf Digitszám,f clrf null clrw subwf DIGIT7,W btfsc STATUS,Z bsf null,0 ;elölfutó "0" tiltáshoz btfsc null,0 goto K2 bcf null,0 movlw 1 subwf Digitszám,W btfsc STATUS,Z goto D1_ki K2: btfsc null,0 goto K2_1 goto K2_2 K2_1: clrw subwf DIGIT8,W btfss STATUS,Z goto K2_2 btfsc null,0 goto K3 K2_2: bcf null,0 movlw 2 subwf Digitszám,W btfsc STATUS,Z goto D2_ki K3: btfsc null,0 goto K3_1 goto K3_2 K3_1: clrw subwf DIGIT9,W btfss STATUS,Z goto K3_2 btfsc null,0 goto K4 K3_2: bcf null,0 movlw 3 subwf Digitszám,W btfsc STATUS,Z goto D3_ki K4: bcf null,0 movlw 4 subwf Digitszám,W btfsc STATUS,Z goto D4_ki ;utolsót kiírjuk return D1_ki: movf LED1,w movwf PORTB bcf Ldigit1 return D2_ki: movf LED2,w movwf PORTB bcf Ldigit2 return D3_ki: movf LED3,w movwf PORTB bcf Ldigit3 return D4_ki: movf LED4,w movwf PORTB bcf Ldigit4 clrf Digitszám return ; * * * * * * * * * * * * ; 32 bites matek !!! ; CALL add ;REGA.=REGA.+REGB. (30-33 ill. 40-43) ; CALL subtract ;REGA.=REGA.-REGB. ; CALL multiply ;REGA.=REGA.*REGB. ; CALL divide ;REGA.=REGA./REGB. ; CALL round ; CALL sqrt ;REGA.=négyzetgyök (REGA.) ; CALL bin2dec ;eredmény 50-5A -ig (REGA. átalakitása decimŁlissá --> LCD ) ; movlw 0x0A ;alakitandó KARAKTEREK száma->W ; call dec2bin ;Digit1-től dec. szám binárissá -> regA-ba ; ;*** 32 BIT SIGNED SUTRACT *** ;REGA - REGB -> REGA ;Return carry set if overflow subtract: call negateb ;Negate REGB skpnc return ;Overflow ;*** 32 BIT SIGNED ADD *** ;REGA + REGB -> REGA ;Return carry set if overflow add: movf REGA3,w ;Compare signs xorwf REGB3,w movwf MTEMP call addba ;Add REGB to REGA clrc ;Check signs movf REGB3,w ;If signs are same xorwf REGA3,w ;so must res 1 ;ult sign btfss MTEMP,7 ;else overflow addlw 0x80 return ;*** 32 BIT SIGNED MULTIPLY *** ;REGA * REGB -> REGA ;Return carry set if overflow multiply: clrf MTEMP ;Reset sign flag call absa ;Make REGA positive skpc call absb ;Make REGB positive skpnc return ;Overflow call movac ;Move REGA to REGC call clra ;Clear product movlw D'31' ;Loop counter movwf MCOUNT muloop: call slac ;Shift left product and multiplicand rlf REGC3,w ;Test MSB of multiplicand skpnc ;If multiplicand bit is a 1 then call addba ;add multiplier to product skpc ;Check for overflow rlf REGA3,w skpnc return decfsz MCOUNT,f ;Next goto muloop btfsc MTEMP,0 ;Check res 1 ;ult sign call negatea ;Negative return ;*** 32 BIT SIGNED DIVIDE *** ;REGA / REGB -> REGA ;Remainder in REGC ;Return carry set if overflow or division by zero divide: clrf MTEMP ;Reset sign flag movf REGB0,w ;Trap division by zero iorwf REGB1,w iorwf REGB2,w iorwf REGB3,w sublw 0 skpc call absa ;Make dividend (REGA) positive skpc call absb ;Make divisor (REGB) positive skpnc return ;Overflow clrf REGC0 ;Clear remainder clrf REGC1 clrf REGC2 clrf REGC3 call slac ;Purge sign bit movlw D'31' ;Loop counter movwf MCOUNT dvloop: call slac ;Shift dividend (REGA) msb into remainder (REGC) movf REGB3,w ;Test if remainder (REGC) >= divisor (REGB) subwf REGC3,w skpz goto dtstgt movf REGB2,w subwf REGC2,w skpz goto dtstgt movf REGB1,w subwf REGC1,w skpz goto dtstgt movf REGB0,w subwf REGC0,w dtstgt: skpc ;Carry set if remainder >= divisor goto dremlt movf REGB0,w ;Subtract divisor (REGB) from remainder (REGC) subwf REGC0,f movf REGB1,w skpc incfsz REGB1,w subwf REGC1,f movf REGB2,w skpc incfsz REGB2,w subwf REGC2,f movf REGB3,w skpc incfsz REGB3,w subwf REGC3,f clrc bsf REGA0,0 ;Set quotient bit dremlt: decfsz MCOUNT,f ;Next goto dvloop btfsc MTEMP,0 ;Check res 1 ;ult sign call negatea ;Negative return ;*** ROUND RESULT OF DIVISION TO NEAREST INTEGER *** round: clrf MTEMP ;Reset sign flag call absa ;Make positive clrc call slc ;Multiply remainder by 2 movf REGB3,w ;Test if remainder (REGC) >= divisor (REGB) subwf REGC3,w skpz goto rtstgt movf REGB2,w subwf REGC2,w skpz goto dtstgt movf REGB1,w subwf REGC1,w skpz goto rtstgt movf REGB0,w subwf REGC0,w rtstgt: skpc ;Carry set if remainder >= divisor goto rremlt incfsz REGA0,f ;Add 1 to quotient goto rremlt incfsz REGA1,f goto rremlt incfsz REGA2,f goto rremlt incf REGA3,f skpnz return ;Overflow,return carry set rremlt: btfsc MTEMP,0 ;Restore sign call negatea return ;*** 32 BIT SQUARE ROOT *** ;sqrt(REGA) -> REGA ;Return carry set if negative sqrt: rlf REGA3,w ;Trap negative values skpnc return call movac ;Move REGA to REGC call clrba ;Clear remainder (REGB) and root (REGA) movlw D'16' ;Loop counter movwf MCOUNT sqloop: rlf REGC0,f ;Shift two msb's rlf REGC1,f ;into remainder rlf REGC2,f rlf REGC3,f rlf REGB0,f rlf REGB1,f rlf REGB2,f rlf REGC0,f rlf REGC1,f rlf REGC2,f rlf REGC3,f rlf REGB0,f rlf REGB1,f rlf REGB2,f setc ;Add 1 to root rlf REGA0,f ;Align root rlf REGA1,f rlf REGA2,f movf REGA2,w ;Test if remdr (REGB) >= root (REGA) subwf REGB2,w skpz goto ststgt movf REGA1,w subwf REGB1,w skpz goto ststgt movf REGA0,w subwf REGB0,w ststgt: skpc ;Carry set if remdr >= root goto sremlt movf REGA0,w ;Subtract root (REGA) from remdr (REGB) subwf REGB0,f movf REGA1,w skpc incfsz REGA1,w subwf REGB1,f movf REGA2,w skpc incfsz REGA2,w subwf REGB2,f bsf REGA0,1 ;Set current root bit sremlt: bcf REGA0,0 ;Clear test bit decfsz MCOUNT,f ;Next goto sqloop clrc rrf REGA2,f ;Adjust root alignment rrf REGA1,f rrf REGA0,f return ;*** 32 BIT SIGNED BINARY TO DECIMAL *** ;REGA -> DIGITS 1 (MSD) TO 10 (LSD) & DSIGN ;DSIGN = 0 if REGA is positive, 1 if negative ;Return carry set if overflow ;Uses FSR register bin2dec: clrf MTEMP ;Reset sign flag call absa ;Make REGA positive skpnc return ;Overflow call clrdig ;Clear all digits movlw D'32' ;Loop counter movwf MCOUNT b2dloop: rlf REGA0,f ;Shift msb into carry rlf REGA1,f rlf REGA2,f rlf REGA3,f movlw DIGIT10 movwf FSR ;Pointer to digits movlw D'10' ;10 digits to do movwf DCOUNT adjlp: rlf INDF,f ;Shift digit and carry 1 bit left movlw D'10' subwf INDF,w ;Check and adjust for decimal overflow skpnc movwf INDF decf FSR,f ;Next digit decfsz DCOUNT,f goto adjlp decfsz MCOUNT,f ;Next bit goto b2dloop btfsc MTEMP,0 ;Check sign bsf DSIGN,0 ;Negative clrc return ;*** 32 BIT SIGNED DECIMAL TO BINARY *** ;Decimal DIGIT1 thro DIGIT(X) & DSIGN -> REGA ;Set DSIGN = 0 for positive, DSIGN = 1 for negative values ;Most significant digit in DIGIT1 ;Enter this routine with digit count in w register ;Return carry set if overflow ;Uses FSR register dec2bin: movwf MTEMP ;Save digit count movlw D'32' ;Outer bit loop counter movwf MCOUNT d2blp1: movlw DIGIT1-1 ;Set up pointer to MSD movwf FSR movf MTEMP,w ;Inner digit loop counter movwf DCOUNT movlw D'10' clrc ;Bring in '0' bit into MSD d2blp2: incf FSR,f skpnc addwf INDF,f ;Add 10 if '1' bit from prev digit rrf INDF,f ;Shift out LSB of digit decfsz DCOUNT,f ;Next L.S. Digit goto d2blp2 rrf REGA3,f ;Shift in carry from digits rrf REGA2,f rrf REGA1,f rrf REGA0,f decfsz MCOUNT,f ;Next bit goto d2blp1 movf INDF,w ;Check for overflow addlw 0xFF skpc rlf REGA3,w skpnc return btfsc DSIGN,0 ;Check res 1 ;ult sign call negatea ;Negative return ;UTILITY ROUTINES ;Add REGB to REGA (Unsigned) ;Used by add, multiply, addba: movf REGB0,w ;Add lo byte addwf REGA0,f movf REGB1,w ;Add mid-lo byte skpnc ;No carry_in, so just add incfsz REGB1,w ;Add carry_in to REGB addwf REGA1,f ;Add and propagate carry_out movf REGB2,w ;Add mid-hi byte skpnc incfsz REGB2,w addwf REGA2,f movf REGB3,w ;Add hi byte skpnc incfsz REGB3,w addwf REGA3,f return ;Move REGA to REGC ;Used by multiply, sqrt movac: movf REGA0,w movwf REGC0 movf REGA1,w movwf REGC1 movf REGA2,w movwf REGC2 movf REGA3,w movwf REGC3 return ;Clear REGB and REGA ;Used by sqrt clrba: clrf REGB0 clrf REGB1 clrf REGB2 clrf REGB3 ;Clear REGA ;Used by multiply, sqrt clra: clrf REGA0 clrf REGA1 clrf REGA2 clrf REGA3 return ;Check sign of REGA and convert negative to positive ;Used by multiply, divide, bin2dec, round absa: rlf REGA3,w skpc return ;Positive ;Negate REGA ;Used by absa, multiply, divide, bin2dec, dec2bin, round negatea: movf REGA3,w ;Save sign in w andlw 0x80 comf REGA0,f ;2's complement comf REGA1,f comf REGA2,f comf REGA3,f incfsz REGA0,f goto nega1 incfsz REGA1,f goto nega1 incfsz REGA2,f goto nega1 incf REGA3,f nega1: incf MTEMP,f ;flip sign flag addwf REGA3,w ;Return carry set if -2147483648 return ;Check sign of REGB and convert negative to positive ;Used by multiply, divide absb: rlf REGB3,w skpc return ;Positive ;Negate REGB ;Used by absb, subtract, multiply, divide negateb: movf REGB3,w ;Save sign in w andlw 0x80 comf REGB0,f ;2's complement comf REGB1,f comf REGB2,f comf REGB3,f incfsz REGB0,f goto negb1 incfsz REGB1,f goto negb1 incfsz REGB2,f goto negb1 incf REGB3,f negb1: incf MTEMP,f ;flip sign flag addwf REGB3,w ;Return carry set if -2147483648 return ;Shift left REGA and REGC ;Used by multiply, divide, round slac: rlf REGA0,f rlf REGA1,f rlf REGA2,f rlf REGA3,f slc: rlf REGC0,f rlf REGC1,f rlf REGC2,f rlf REGC3,f return ;Set all digits to 0 ;Used by bin2dec clrdig: clrf DSIGN clrf DIGIT1 clrf DIGIT2 clrf DIGIT3 clrf DIGIT4 clrf DIGIT5 clrf DIGIT6 clrf DIGIT7 clrf DIGIT8 clrf DIGIT9 clrf DIGIT10 return ORG 0x2100 dt"Fordulatszammero LED-el. Kisesztergahoz" ORG 0x2130 dt" v1.0 " dt"Nemeshazi Gyorgy" end