; Quartz frekvencia = 20,0 list p=16f628 #include __CONFIG _HS_OSC & _BODEN_ON & _PWRTE_ON & _WDT_ON & _LVP_OFF & _MCLRE_OFF ; _CP_ALL ; _DATA_CP_ON ; errorlevel -302 ;Nem hibaüzenetet bankváltás ;============================================================================================ banc0 macro bcf STATUS,RP0 bcf STATUS,RP1 endm banc1 macro bsf STATUS,RP0 bcf STATUS,RP1 endm banc2 macro bsf STATUS,RP1 bcf STATUS,RP0 endm banc3 macro bsf STATUS,RP0 bsf STATUS,RP1 endm ;============================================================================================== ;konstansok K_TMR0 equ D'11' ;Állandó időmérő TMR0 = 0,1 ms, 10 kHz-es modulációs K_SH equ D'100' ;Állandó frekvencia vizsgálatok azt mutatják, 10ms K_SL equ D'50' ;Az állandó frekvenciapásztázó gombok 500ms K_M60 equ D'0' ;167 állandó alacsony byte számlálókat, idő-kapcsoló A és B fázis K_S60 equ D'167' ;Állandó byte számlálók kapcsolási idő-fázisban A és B K_M90 equ D'0' ;250; állandó alacsony byte számlálókat, a váltás pillanata szakaszának Marks K_S90 equ D'250' ;Állandó byte számlálókat, arra a pillanatra kapcsolási fázis Marks K_NO equ D'5' ;A folyamatos forgalom növekedés üteme ;NYILVÁNTARTÁSOK ZAD_F equ H'20' ;A kívánt frekvenciát a háromfázisú inverter S_P_MR equ H'21' ;regisztrálj lépésekben a frekvenciaváltó LSB S_P_SR equ H'22' ;regisztrálj lépésekben a frekvenciaváltó LSB TEMP equ H'23' ;Ideiglenes nyilvántartás frekvenciaváltó S_A_MR equ H'26' ;A Counter-fázis LSB S_A_SR equ H'27' ;Fázis-számláló MSB S_B_MR equ H'28' ;Phase B-számláló LSB S_B_SR equ H'29' ;Phase B-számláló MSB S_C_MR equ H'2A' ;Fázisú C-Counter LSB S_C_SR equ H'2B' ;Fázisú C-számláló MSB RA_A equ H'2F' ;A amplitúdója nyilvántartás fázis-A RA_B equ H'30' ;A amplitúdója nyilvántartás fázis-B RA_C equ H'31' ;A amplitúdója nyilvántartás fázis-C RF equ H'32' ;reg.Flaga: gombok, 1razr = 0 megnyomjuk a könyv STOP = 1, a könyv megnyomja a START, 2razr = 1 + kn sajtolt, préselt 3razr = 1 kn - ;Megjelenítéséhez 4razr = 0 legyen indits ml.razr = 1 indits st.razr ;Fázis, 5-bit = 1 - fázis-A = 0, az inverz fázis-A, 6 bit = 1 - Phase-B = 0, az inverz fázis-B ;7-bit = 1 - Phase-C = 0, az inverz fázis-C; RF1 equ H'33' ;reg.Flaga: Swap cím számlálók szakaszból áll. 0 bit. = 0 fázisában az A +,0-bites számláló. = 1 fázis az A-számláló ;1 bites. = 0 szakasza a B +, 1 bites számláló. = 1, B-fázisú számláló, 2-bites. = 0 fázisában a C +, 2 bites számláló. = 1 fázis a C-számláló UI1 equ H'34' ;legalacsonyabb tizedes meg a kijelzőn UI2 equ H'35' ;legnagyobb decimális számjeggyel a kijelzőn UI equ H'36' ;ideiglenes nyilvántartás jelzi, D_SH equ H'37' ;Szkennelési sebesség érzékeny billentyűk Nagy Bájt D_SL equ H'38' ;Szkennelési sebesség érzékeny gombok Alacsony Bájt R_NO equ H'39' ;esetében a növekedés mértéke forgalom cnt1 equ H'3A' ;ideiglenes regiszter cnt2 equ H'3B' ;ideiglenes regiszter cnt3 equ H'3C' ;ideiglenes regiszter ADROZU equ H'40' ; címe RAM DTIM equ H'41' ; RAM adatok W_COPY equ H'42' ; Egy példányát a W regiszter STATUS_COPY equ H'43' ; Egy példánya STATUS regisztrálj #define OSCILLATOR D'20000000' ;============================================================================================== org 0 ;Visszaállítás vektor goto START ;============================================================================================== org 4 ;Megszakítás vektor movwf W_COPY ;Mentse stack-W menteni a nyilvántartás W_COPY swapf STATUS,W ;Csere majszol egy, a nyilvánosság, és rögzítse az állapotát W movwf STATUS_COPY ;W tárolni a nyilvántartásban, STATUS_COPY btfsc INTCON,T0IF ;Túlcsordulás megszakítás időzítő TMR0 goto INT_TMR0 END_PRER ;vissza a köteget swapf STATUS_COPY,W ;Csere majszol STATUS és írni W movwf STATUS ;Írja be a w-ben a STATUS swapf W_COPY,F ;csere majszol a nyilvántartásban, s maradjon W_COPY W_COPY swapf W_COPY,W ;csere majszol a nyilvántartásban, és helyreállítsa a nyilvántartás W_COPY W anélkül STATUS retfie ;============================================================================================== INT_TMR0 movlw K_TMR0 movwf TMR0 ;Töltse be a konstans a TMR0 bcf INTCON,T0IF ;a számláló megszakítás TMRO zászlót, és újra lehetővé teszi a megszakítás clrwdt ;Megtaláljuk a növekedés S_P_MR, S_P_SR táblázat alapján a TEMP = tényleges frekvenciaváltó movf TEMP,w call P_MR ;Válasszon egy mintát a növekmény S_P_MR clrf PCLATH ; movwf S_P_MR ;w -> S_P_MR movf TEMP,w call P_SR ;Válasszon egy mintát a növekmény S_P_SR clrf PCLATH ; movwf S_P_SR ;w -> S_P_SR ;---------- ;Állítsa be a címet számláló a fázis-A, majd telepítse újra a zászlók btfsc RF1,0 ;Ellenőrizze a zászló a fázis-A goto P2 ;Csökkentse a címet számlálót megnöveljük venni az asztalról, és S_P_MR S_P_SR függően a frekvenciaváltó ;Ellenkező esetben, megnöveljük a cím számlálót megnöveljük movf S_P_MR,W ;S_P_MR -> W addwf S_A_MR,F ;S_A_MR + W -> S_A_MR btfss STATUS,C ;Hasonlítsa túlcsordul goto P1 ;nincs movlw D'6' ;Igen, az állandó -> W addwf S_A_MR,F ;Azt, hogy a kiigazítás ellentétes S_A_MR + W -> S_A_MR P3 incf S_A_SR,F ;S_A_SR +1 -> S_A_SR movf S_A_SR,w ;Összehasonlítása S_A_SR = K_S90, S_A_SR -> W sublw K_S90 ;K_S90 - W->W btfsc STATUS,Z ;S_A_SR=K_S90 goto P4 ;Igen jól P5 movf S_P_SR,W ;Nem, S_P_SR -> W addwf S_A_SR,F ;S_A_SR + W -> S_A_SR btfsc STATUS,C ;Hasonlítsa túlcsordul goto P4 ;Igen, volt egy túlfolyó movf S_A_SR,w ;Nem, S_A_SR -> W sublw K_S90 ;K_S90 -W->W btfss STATUS,C ;Összehasonlítása S_A_SR> K_S90 goto P4 ;igen btfsc STATUS,Z ;Nincs összehasonlítás S_A_SR = K_S90 goto P4 ;igen goto P6 ;No Exit P4 movlw K_S90 ;K_S90 -->W movwf S_A_SR ;W-->S_A_SR clrf S_A_MR ;Visszaállítás S_A_MR bsf RF1,0 ;Telepítse a jele, hogy csökkentsék a számláló goto P6 ;Kilépés P1 movf S_A_MR,w ;Nem, S_A_MR -> W sublw K_S90 ;K_S90 -W->W btfss STATUS,C ;Összehasonlítása S_A_MR> K_S90 goto P7 ;igen btfss STATUS,Z ;Nincs összehasonlítás S_A_MR = K_S90 goto P5 ;nincs clrf S_A_MR ;Visszaállítás S_A_MR goto P3 ; P7 movlw K_S90 ;K_S90 -->W subwf S_A_MR,F ;S_A_MR-K_S90 -->S_A_MR goto P3 ; P2 ;Csökkentse a címet számláló szeretné növelni movf S_A_SR,F ;Ellenőrizze a zászló-Z btfsc STATUS,Z ;Összehasonlítása S_A_SR = 0 goto M1 ;igen movf S_P_MR,W ;Nem, S_P_MR -> W subwf S_A_MR,F ;S_A_MR-W-->S_A_MR btfsc STATUS,C ;Hasonlítsa össze a kölcsön goto M2 ;nincs movlw D'6' ;Igen, az állandó -> W subwf S_A_MR,F ;Azt, hogy a kiigazítás ellentétes S_A_MR-W -> S_A_MR decf S_A_SR,F ;S_A_SR-1-->S_A_SR movf S_A_SR,F ;Ellenőrizze a zászló-Z btfsc STATUS,Z ;Összehasonlítása S_A_SR = 0 goto M3 ;igen M2 movf S_P_SR,W ;Nem, S_P_SR -> W subwf S_A_SR,F ;S_A_SR-W-->S_A_SR btfsc STATUS,C ;Hasonlítsa össze a kölcsön goto M4 ;nincs clrf S_A_SR ;Visszaállítás S_A_SR goto M5 M3 movf S_A_MR,F ;Ellenőrizze a zászló-Z btfsc STATUS,Z ;Összehasonlítása S_A_MR = 0 goto M6 ;igen goto M2 ;nincs M4 movf S_A_SR,F ;Ellenőrizze a zászló-Z btfss STATUS,Z ;Összehasonlítása S_A_SR = 0 goto P6 ;nincs movf S_A_MR,F ;Igen, ellenőrizze a zászló-Z btfsc STATUS,Z ;Összehasonlítása S_A_MR = 0 goto M6 ;igen goto P6 ;nincs M1 movf S_P_MR,W ;Igen, S_P_MR -> W subwf S_A_MR,F ;S_A_MR-W-->S_A_MR btfsc STATUS,C ;Hasonlítsa össze a kölcsön goto M2 ;nincs M5 clrf S_A_MR ;Visszaállítás S_A_MR M6 bcf RF1,0 ;Toggle zászló a növekedés címet számláló movlw K_M60 ;Betöltése állandók a nyilvántartásokat számlálók fázisok movwf S_B_MR ;Beállítani a ciklust movwf S_C_MR ; movlw K_S60 movwf S_B_SR movwf S_C_SR clrf RA_A ;Az amplitúdók a nulla fázis ki a nyilvántartás-A btfsc RF,5 ;Fordítsa a fázis a zászlók-A direkt vagy inverz goto RES_A ;váltani direct-to-impulzus fázismegfordulás és fordítva bsf RF,5 goto P6 ;A kimeneti feldolgozásának fázis RES_A bcf RF,5 ; P6 ;A kimenet feldolgozása a fázis-A ;---------- ;Állítsa be a címet számláló a fázis-B, és újra a zászlók btfsc RF1,1 ;Ellenőrizze a zászló a fázis-B goto P12 ;Csökkentse a címet számlálót megnöveljük venni az asztalról, és S_P_MR S_P_SR függően a frekvenciaváltó ;Ellenkező esetben, megnöveljük a cím számlálót megnöveljük movf S_P_MR,W ;S_P_MR -->W addwf S_B_MR,F ;S_B_MR +W-->S_B_MR btfss STATUS,C ;Hasonlítsa túlcsordul goto P11 ;nincs movlw D'6' ;Igen, az állandó -> W addwf S_B_MR,F ;Azt, hogy a kiigazítás ellentétes S_B_MR + W -> S_B_MR P13 incf S_B_SR,F ;S_B_SR+1-->S_B_SR movf S_B_SR,w ;Összehasonlítása S_B_SR = K_S90, S_B_SR -> W sublw K_S90 ;K_S90 - W->W btfsc STATUS,Z ;S_B_SR=K_S90 goto P14 ;Igen jól P15 movf S_P_SR,W ;Nem, S_P_SR -> W addwf S_B_SR,F ;S_B_SR +W-->S_B_SR btfsc STATUS,C ;Hasonlítsa túlcsordul goto P14 ;Igen, volt egy túlfolyó movf S_B_SR,w ;Nem, S_B_SR -> W sublw K_S90 ;K_S90 -W->W btfss STATUS,C ;Összehasonlítása S_B_SR> K_S90 goto P14 ;igen btfsc STATUS,Z ;Nincs összehasonlítás S_B_SR = K_S90 goto P14 ;igen goto P16 ;No Exit P14 movlw K_S90 ;K_S90 -->W movwf S_B_SR ;W-->S_B_SR clrf S_B_MR ;Visszaállítás S_B_MR bsf RF1,1 ;Telepítse a jele, hogy csökkentsék a számláló goto P16 ;Kilépés P11 movf S_B_MR,w ;Nem, S_B_MR -> W sublw K_S90 ;K_S90 -W->W btfss STATUS,C ;Összehasonlítása S_B_MR> K_S90 goto P17 ;igen btfss STATUS,Z ;Nincs összehasonlítás S_B_MR = K_S90 goto P15 ;nincs clrf S_B_MR ;Visszaállítás S_B_MR goto P13 ; P17 movlw K_S90 ;K_S90 -->W subwf S_B_MR,F ;S_B_MR-K_S90 -->S_B_MR goto P13 ; P12 ;Csökkentse a címet számláló szeretné növelni movf S_B_SR,F ;Ellenőrizze a zászló-Z btfsc STATUS,Z ;Összehasonlítása S_B_SR = 0 goto M11 ;igen movf S_P_MR,W ;Nem, S_P_MR -> W subwf S_B_MR,F ;S_B_MR-W-->S_B_MR btfsc STATUS,C ;Hasonlítsa össze a kölcsön goto M12 ;nincs movlw D'6' ;Igen, az állandó -> W subwf S_B_MR,F ;Azt, hogy a kiigazítás ellentétes S_B_MR-W -> S_B_MR decf S_B_SR,F ;S_B_SR-1-->S_B_SR movf S_B_SR,F ;Ellenőrizze a zászló-Z btfsc STATUS,Z ;Összehasonlítása S_B_SR = 0 goto M13 ;igen M12 movf S_P_SR,W ;Nem, S_P_SR -> W subwf S_B_SR,F ;S_B_SR-W-->S_B_SR btfsc STATUS,C ;Hasonlítsa össze a kölcsön goto M14 ;nincs clrf S_B_SR ;Visszaállítás S_B_SR goto M15 M13 movf S_B_MR,F ;Ellenőrizze a zászló-Z btfsc STATUS,Z ;Összehasonlítása S_B_MR = 0 goto M16 ;igen goto M12 ;nincs M14 movf S_B_SR,F ;Ellenőrizze a zászló-Z btfss STATUS,Z ;Összehasonlítása S_B_SR = 0 goto P16 ;nincs movf S_B_MR,F ;Igen, ellenőrizze a zászló-Z btfsc STATUS,Z ;Összehasonlítása S_B_MR = 0 goto M16 ;igen goto P16 ;nincs M11 movf S_P_MR,W ;Igen, S_P_MR -> W subwf S_B_MR,F ;S_B_MR-W-->S_B_MR btfsc STATUS,C ;Hasonlítsa össze a kölcsön goto M12 ;nincs M15 clrf S_B_MR ;Visszaállítás S_B_MR M16 bcf RF1,1 ;Toggle zászló a növekedés címet számláló movlw K_M60 ;Betöltése állandók a nyilvántartásokat számlálók fázisok movwf S_A_MR ;Beállítani a ciklust movwf S_C_MR ; movlw K_S60 movwf S_A_SR movwf S_C_SR clrf RA_B ;Az amplitúdók a nulla fázis ki a nyilvántartás-B btfsc RF,6 ;Fordítsa a fázis-B zászlók direkt vagy inverz goto RES_B ;váltani direct-to-impulzus fázismegfordulás és fordítva bsf RF,6 goto P16 ;A kimenet feldolgozása a B fázis RES_B bcf RF,6 ; P16 ;A kimenet feldolgozása a B fázis ;---------- ;Állítsa be a címet számláló a fázis-C, majd telepítse újra a zászlók btfsc RF1,2 ;Ellenőrizze a zászló a fázis-C goto P22 ;Csökkentse a címet számlálót megnöveljük venni az asztalról, és S_P_MR S_P_SR függően a frekvenciaváltó ;Ellenkező esetben, megnöveljük a cím számlálót megnöveljük movf S_P_MR,W ;S_P_MR -->W addwf S_C_MR,F ;S_C_MR +W-->S_C_MR btfss STATUS,C ;Hasonlítsa túlcsordul goto P21 ;nincs movlw D'6' ;Igen, az állandó -> W addwf S_C_MR,F ;Azt, hogy a kiigazítás ellentétes S_C_MR + W -> S_C_MR P23 incf S_C_SR,F ;S_C_SR+1-->S_C_SR movf S_C_SR,w ;Összehasonlítása S_C_SR = K_S90, S_C_SR -> W sublw K_S90 ;K_S90 - W->W btfsc STATUS,Z ;S_C_SR=K_S90 goto P24 ;Igen jól P25 movf S_P_SR,W ;Nem, S_P_SR -> W addwf S_C_SR,F ;S_C_SR +W-->S_C_SR btfsc STATUS,C ;Hasonlítsa túlcsordul goto P24 ;Igen, volt egy túlfolyó movf S_C_SR,w ;Nem, S_C_SR -> W sublw K_S90 ;K_S90 -W->W btfss STATUS,C ;Összehasonlítása S_C_SR> K_S90 goto P24 ;igen btfsc STATUS,Z ;Nincs összehasonlítás S_C_SR = K_S90 goto P24 ;igen goto P26 ;No Exit P24 movlw K_S90 ;K_S90 -->W movwf S_C_SR ;W-->S_C_SR clrf S_C_MR ;Visszaállítás S_C_MR bsf RF1,2 ;Telepítse a jele, hogy csökkentsék a számláló goto P26 ;Kilépés P21 movf S_C_MR,w ;Nem, S_C_MR -> W sublw K_S90 ;K_S90 -W->W btfss STATUS,C ;Összehasonlítása S_C_MR> K_S90 goto P27 ;igen btfss STATUS,Z ;Nincs összehasonlítás S_C_MR = K_S90 goto P25 ;nincs clrf S_C_MR ;Visszaállítás S_C_MR goto P23 ; P27 movlw K_S90 ;K_S90 -->W subwf S_C_MR,F ;S_C_MR-K_S90 -->S_C_MR goto P23 ; P22 ;Csökkentse a címet számláló szeretné növelni movf S_C_SR,F ;Ellenőrizze a zászló-Z btfsc STATUS,Z ;Összehasonlítása S_C_SR = 0 goto M21 ;igen movf S_P_MR,W ;Nem, S_P_MR -> W subwf S_C_MR,F ;S_C_MR-W-->S_C_MR btfsc STATUS,C ;Hasonlítsa össze a kölcsön goto M22 ;nincs movlw D'6' ;Igen, az állandó -> W subwf S_C_MR,F ;Azt, hogy a kiigazítás ellentétes S_C_MR-W -> S_C_MR decf S_C_SR,F ;S_C_SR-1-->S_C_SR movf S_C_SR,F ;Ellenőrizze a zászló-Z btfsc STATUS,Z ;Összehasonlítása S_C_SR = 0 goto M23 ;igen M22 movf S_P_SR,W ;Nem, S_P_SR -> W subwf S_C_SR,F ;S_C_SR-W-->S_C_SR btfsc STATUS,C ;Hasonlítsa össze a kölcsön goto M24 ;nincs clrf S_C_SR ;Visszaállítás S_C_SR goto M25 M23 movf S_C_MR,F ;Ellenőrizze a zászló-Z btfsc STATUS,Z ;Összehasonlítása S_C_MR = 0 goto M26 ;igen goto M22 ;nincs M24 movf S_C_SR,F ;Ellenőrizze a zászló-Z btfss STATUS,Z ;Összehasonlítása S_C_SR = 0 goto P26 ;nincs movf S_C_MR,F ;Igen, ellenőrizze a zászló-Z btfsc STATUS,Z ;Összehasonlítása S_C_MR = 0 goto M26 ;igen goto P26 ;nincs M21 movf S_P_MR,W ;Igen, S_P_MR -> W subwf S_C_MR,F ;S_C_MR-W-->S_C_MR btfsc STATUS,C ;Hasonlítsa össze a kölcsön goto M22 ;nincs M25 clrf S_C_MR ;Visszaállítás S_C_MR M26 bcf RF1,2 ;Toggle zászló a növekedés címet számláló movlw K_M60 ;Betöltése állandók a nyilvántartásokat számlálók fázisok movwf S_A_MR ;Beállítani a ciklust movwf S_B_MR ; movlw K_S60 movwf S_A_SR movwf S_B_SR clrf RA_C ;Az amplitúdók a nulla meg a fázis-C regiszter btfsc RF,7 ;Fordítsa a fázis-C zászlók direkt vagy inverz goto RES_C ;váltani direct-to-impulzus fázismegfordulás és fordítva bsf RF,7 goto P26 ;A kimenet feldolgozása a fázis C RES_C bcf RF,7 ; P26 ;A kimenet feldolgozása a fázis C ;---------- btfss RF,1 ;Ellenőrzése a Stop gomb megnyomásával goto STOP ;Igen, az átmenet ;Start gomb megnyomásakor btfss PORTA,5 ;Vizsgálati jel volt a védelmi goto AVAR ;Igen, az átmenet ;---------- ;Indítsa el a motort, sima növekedésével gyakorisága a nulla ZAD_F referencia-frekvencia movf PORTB,W iorlw b'00111111' ;Kapcsolja ki a kulcsokat, ha ezeket felvették movwf PORTB ;Túlcsordulás a regisztráció lendületet adnak az amplitúdó btfsc RF,5 ;ellenőrizze a zászló a fázis-A call I_A ;Annak érdekében, hogy lendületet ad a közvetlen fázis-A btfss RF,5 ;ellenőrizze a zászló a fázis-A call I_A_ ;Annak érdekében, hogy lendületet adjon egy fordított fázis-A btfsc RF,6 ;ellenőrizze a zászló a fázis-B call I_B ;Annak érdekében, hogy lendületet ad a közvetlen fázis-B btfss RF,6 ;ellenőrizze a zászló a fázis-B call I_B_ ;Annak érdekében, hogy lendületet adjon egy fordított fázis-B btfsc RF,7 ;ellenőrizze a zászló a fázis-C call I_C ;Annak érdekében, hogy lendületet ad a közvetlen fázis-C btfss RF,7 ;ellenőrizze a zászló a fázis-C call I_C_ ;Annak érdekében, hogy lendületet adjon egy fordított fázisú C- ;---------- STOP ;Kimenet megjelenítésére és állítsa be a sorrendben, a kijelző és a funkció gombnyomás decfsz D_SH,f ;késleltetni a kijelző meg egy állandó D_SH goto EX_UI2 ;A késedelem nem érte el a végét movlw K_SH ;Állandók a regiszterek betöltése Scanning Frequency kijelző movwf D_SH ;Töltsön K_SH -> itt D_SH btfsc RF,4 ;ellenőrzés volt, 0-4 RF kibocsátás nyilvántartásában goto EX_UI1 ;NO-jelzés UI1 nem származhat bcf PORTB,6 ;IGEN, oltsa UI2 ;A szolgáltatás telepítése gombnyomás clrf PORTA bsf PORTA,0 ;1->RA0 nop ;késleltetheti a következetlenségek megszüntetése folyamatban olvasás zap.-port nop nop nop btfsc PORTA,4 ;ellenőrizze a Start gomb megnyomásakor bsf RF,1 ;Igen, telepítsen egy jel clrf PORTA bsf PORTA,1 ;1->RA1 nop ;késleltetheti a következetlenségek megszüntetése folyamatban olvasás zap.-port nop nop nop btfsc PORTA,4 ;ellenőrizze a Stop gomb megnyomásával goto STOP_ Y_ST ;Lassan emelje a frekvenciát az inverter 1 ZAD_F movf R_NO,f btfss STATUS,Z ;Ellenőrizze az eltelt idő meghatározott R_NO goto N_R_NO ;nincs movf TEMP,w ;Igen, a Check TEMP = ZAD_F subwf ZAD_F,w btfsc STATUS,Z goto NO_PM ;Gyakorisága, az inverter és a motor frekvenciája megegyezik TEMP = ZAD_F btfss STATUS,C ;ellenőrizze a zászló "Közlekedés" goto EX1 ;ZAD_FTEMP, TEMP+1->TEMP goto EX2 EX1 decf TEMP,f ;ZAD_FTEMP EX2 movlw K_NO ; movwf R_NO ;Töltse be az állandó ütemű növekedése a sebesség nyilvántartásban goto NO_PM N_R_NO decf R_NO,f ;Nem R_NO-1-> R_NO NO_PM decfsz D_SL,f ;Telepítése + jel - késéssel beállítva, hogy egy állandó D_SL goto NO_P ;A késedelem nem érte el a végét ;Betöltése állandók a nyilvántartások frekvencia beolvasógomb movlw K_SL ;Töltsön K_SL W movwf D_SL ;W terhelés D_SL clrf PORTA bsf PORTA,2 ;1->RA2 nop ;késleltetheti a következetlenségek megszüntetése folyamatban olvasás zap.-port nop nop nop btfsc PORTA,4 ;Ellenőrzés gomb megnyomása + bsf RF,2 ;Igen, telepítsen egy jel clrf PORTA bsf PORTA,3 ;1->RA3 nop ;késleltetheti a következetlenségek megszüntetése folyamatban olvasás zap.-port nop nop nop btfsc PORTA,4 ;Ellenőrzés gomb megnyomása - bsf RF,3 ;Igen, telepítsen egy jel NO_P movf UI1,0 ;kiszámításának regisztrálj UI1 -> W movwf PORTA ;Nyomtatási adatok portolni egy a kijelzőn bsf PORTB,7 ;Kindle UI1 bsf RF,4 ;telepíteni utaló jelzésnek 2 kibocsátás goto EX_UI2 ;jelzése UI2 nem származhat EX_UI1 bcf PORTB,7 ;IGEN, oltsa UI1 movf UI2,0 ;betölteni regisztrálj UI2-> W movwf PORTA ;Nyomtatási adatok portolni egy a kijelzőn bsf PORTB,6 ;Kindle UI2 bcf RF,4 ;telepíteni egy jel jelzi mentesíti EX_UI2 goto END_PRER ;Kilépés a megszakítás ;============================================================================================== STOP_ movlw b'00111111' ;Kapcsolja ki a kulcsokat iorwf PORTB,f ;Fordítsa az üzemmódválasztó gátlás bcf RF,1 ;Igen, telepítsen egy jel ST movlw D'1' ;Betöltése kezdeti gyakorisága az inverter movwf TEMP bsf PORTB,6 ;Kapcsolja be a reosztát, a rendelkezés az energia disszipáció a reosztát bsf PORTB,7 ;mint Állítsa le a motort futtatása után a regeneratív módban ;------------- Sub-2 másodperces késleltetés movlw D'255' ;MLS movwf cnt2 movlw D'255' ;házasodik movwf cnt1 movlw D'60' ;CT movwf cnt3 dloop2 clrwdt decfsz cnt2,f goto $+2 decfsz cnt1,f goto dloop2 decfsz cnt3,f goto dloop2 bcf PORTB,6 ;Kapcsolja ki a reosztát bcf PORTB,7 ;Kapcsolja ki a fékező üzemmódban goto Y_ST ;------------- AVAR bcf RF,1 ;Ír egy stop üzemmódban movlw b'00111111' iorwf PORTB,f ;Kapcsolja ki a kulcsokat, hogy állítsa vissza a Honvédelmi goto STOP ;============================================================================================== I_A movf S_A_SR,w ;Töltse be a címet táblázatok Sines sublw D'240' ;Ha a cím> 240 btfss STATUS,C goto L1 ;Igen, fordítsa el a kulcsot movf S_A_SR,w ;Töltse be a címet táblázatok Sines call sinus ;A mintát az amplitúdó clrf PCLATH ;Nullázza az idősebb a lakcímnyilvántartás addwf RA_A,f ;Hajtsd az amplitúdó a minta btfss STATUS,C ;Túlcsordulás az amplitúdó goto VI5 L1 bcf PORTB,0 ;Igen, fordítsa el a kulcsot fázis-A return VI5 bsf PORTB,0 ;Ellenkező esetben a legfontosabb szakasza az off-A return ;============================================================================================== I_A_ movf S_A_SR,w ;Töltse be a címet táblázatok Sines sublw D'240' ;Ha a cím> 240 btfss STATUS,C goto L2 ;Igen, fordítsa el a kulcsot movf S_A_SR,w ;Töltse be a címet táblázatok Sines call sinus ;A mintát az amplitúdó clrf PCLATH ;Nullázza az idősebb a lakcímnyilvántartás addwf RA_A,f ;Hajtsd az amplitúdó a minta btfss STATUS,C ;Túlcsordulás az amplitúdó goto VI6 L2 bcf PORTB,1 ;Igen, fordítsa el a kulcsot fázis-A-invertált return VI6 bsf PORTB,1 ;Ellenkező esetben a legfontosabb szakasza az off-A-invertált return ;============================================================================================== I_B movf S_B_SR,w ;Töltse be a címet táblázatok Sines sublw D'240' ;Ha a cím> 240 btfss STATUS,C goto L3 ;Igen, fordítsa el a kulcsot movf S_B_SR,w ;Töltse be a címet táblázatok Sines call sinus ;A mintát az amplitúdó clrf PCLATH ;Nullázza az idősebb a lakcímnyilvántartás addwf RA_B,f ;Hajtsd az amplitúdó a minta btfss STATUS,C ;Túlcsordulás az amplitúdó goto VI3 L3 bcf PORTB,2 ;Igen, fordítsa el a kulcsot fázis-B return VI3 bsf PORTB,2 ;Ellenkező esetben a legfontosabb szakasza az off-B return ;============================================================================================== I_B_ movf S_B_SR,w ;Töltse be a címet táblázatok Sines sublw D'240' ;Ha a cím> 240 btfss STATUS,C goto L4 ;Igen, fordítsa el a kulcsot movf S_B_SR,w ;Töltse be a címet táblázatok Sines call sinus ;A mintát az amplitúdó clrf PCLATH ;Nullázza az idősebb a lakcímnyilvántartás addwf RA_B,f ;Hajtsd az amplitúdó a minta btfss STATUS,C ;Túlcsordulás az amplitúdó goto VI4 L4 bcf PORTB,3 ;Igen, kapcsolja ki a fő fázisa fordított-B- return VI4 bsf PORTB,3 ;Ellenkező esetben a legfontosabb szakasza az off-B-fordított return ;============================================================================================== I_C movf S_C_SR,w ;Töltse be a címet táblázatok Sines sublw D'240' ;Ha a cím> 240 btfss STATUS,C goto L5 ;Igen, fordítsa el a kulcsot movf S_C_SR,w ;Töltse be a címet táblázatok Sines call sinus ;A mintát az amplitúdó clrf PCLATH ;Nullázza az idősebb a lakcímnyilvántartás addwf RA_C,f ;Hajtsd az amplitúdó a minta btfss STATUS,C ;Túlcsordulás az amplitúdó goto VI1 L5 bcf PORTB,4 ;Igen, kapcsolja ki a fő fázisait C return VI1 bsf PORTB,4 ;Ellenkező esetben hamis fázisa a C return ;============================================================================================== I_C_ movf S_C_SR,w ;Töltse be a címet táblázatok Sines sublw D'240' ;Ha a cím> 240 btfss STATUS,C goto L6 ;Igen, fordítsa el a kulcsot movf S_C_SR,w ;Töltse be a címet táblázatok Sines call sinus ;A mintát az amplitúdó clrf PCLATH ;Nullázza az idősebb a lakcímnyilvántartás addwf RA_C,f ;Hajtsd az amplitúdó a minta btfss STATUS,C ;Túlcsordulás az amplitúdó goto VI2 L6 bcf PORTB,5 ;Igen, kapcsolja ki a fő fázisa fordított-C- return VI2 bsf PORTB,5 ;Ellenkező esetben, a fázis-off kapcsoló inverz return ;============================================================================================== START ;Inicializálása CPU regiszterek banc0 ;Csere. a bank0 clrf PORTA ;nullára out PORTA movlw B'00000111' ;Kapcsolja ki a komparátor movwf CMCON ;PORTA digitális bemenetek és kimenetek movlw B'00111111' ;Gasim mutatók movwf PORTB ;kapcsolja ki a kulcsokat movlw K_TMR0 movwf TMR0 ;Töltse be a konstans a TMR0 banc1 ;Csere. a BANK1 bcf VRCON,VREN ;Kapcsolja ki a feszültség referencia movlw B'10000000' ;Nagruz.rez.porta B off, Clock Input gener.na TMR0, predd. TMR0, koef.del = 01:02 movwf OPTION_REG movlw B'00110000' ;Portok RA0-RA3, végezetül, RA4-RA5-bemenet movwf TRISA movlw B'00000000' ;Portok Rb0-RB7 a kimenetre movwf TRISB movlw B'10100000' ;Összes prérik és prérin. A TMR0-képes movwf INTCON banc0 movlw 0x20 ;a 20h kezdőcím bevitele a munkaregiszterbe movwf FSR ;a kezdőcím bevitele a címregiszterbe Clr clrf INDF ;a közvetve kijelölt memóriahely törlése incf FSR,F ;a címregiszter növelése 1-gyel btfss FSR,4 ;a címregiszter vizsgálata goto Clr ;ugrás, ha a cím < 2Fh movlw K_NO movwf R_NO ;Töltse be az állandó ütemű növekedése a sebesség nyilvántartásban movlw D'1' ;???????? ????????? ??????? ????????? movwf TEMP movlw B'00100000' ;Állítsa be a jel a pozitív félhullámú fázis-A, B, C-negatív movwf RF movlw B'00000010' ;Kezdeti telepítés a jele a fázis mérő B-, A, C + movwf RF1 movlw K_M60 ;Betöltése állandók a nyilvántartásokat számlálók fázisok movwf S_A_MR ;A megfelelő a ciklus kezdetén movwf S_B_MR ;Fázis C-nullázódik movlw K_S60 movwf S_A_SR movwf S_B_SR ;Betöltése állandók a nyilvántartások frekvencia beolvasógomb movlw K_SH ;Töltsön K_SH W movwf D_SH ;W terhelés D_SH movlw K_SL ;Töltsön K_SL W movwf D_SL ;W terhelés D_SL ;olvasd el a RAM-ból az adott frekvenciaváltó movlw D'0' ;Töltse be a címét a RAM W call SCHIT ;Olvassa ZAD_F RAM movwf ZAD_F ;Írjuk be az adatokat a RAM-ból regisztrálni ZAD_F call B_D ;Bináris BCD ;============================================================================================== CIKL clrwdt ;WDT Reset btfsc RF,2 ;check 0 volt a 2-bites regiszter RF call Y_KN_P ;Nem, ez azt jelenti, a gomb megnyomásakor 1 btfsc RF,3 ;ellenőrzés volt, 3-0-bites regiszter RF call Y_KN_M ;Nem, ez azt jelenti, a gomb megnyomásakor -1 goto CIKL ;a ciklus programot ;============================================================================================== Y_KN_P ;korrekciója egy adott frekvenciaváltó egy gombot movlw D'99' ;VIZSGÁLATOK subwf ZAD_F,W ;Ha ZAD_F = 99 btfss STATUS,Z ;Igen ZAD_F = 99 ellenőrizni a zászló Z = 0, akkor átugorjuk lépés " incf ZAD_F,f ;azt jelenti, ZAD_F = 1 ZAD_F call B_D ;Bináris BCD bcf RF,2 ;Reset gomb megnyomását jele goto L9 Y_KN_M ;korrekciója egy adott frekvenciaváltó egy gomb -1 movlw D'01' ;VIZSGÁLATOK subwf ZAD_F,W ;Ha ZAD_F = 01 btfss STATUS,Z ;Igen ZAD_F = 01 ellenőrizni a zászló Z = 0, akkor átugorjuk lépés " decf ZAD_F,f ;azt jelenti, ZAD_F = ZAD_F-1 call B_D ;Bináris BCD bcf RF,3 ;Reset gomb megnyomását jele -1 L9 movf ZAD_F,0 ;Töltsön ZAD_F W movwf DTIM ;ZAD_F->DTIM movlw D'0' ;Töltse be a címét a RAM W call ZAPIS ;Írjon ZAD_F clrwdt ;WDT Reset return ;============================================================================================== B_D ;Preobrazovvyvaem bin tól ZAD_F a december és tedd a UI1 és UI2 movf ZAD_F,w ;Töltsön ZAD_F -> W bcf INTCON,GIE ;Minden megszakítás tiltása call bin_dec ;Dekódolása a bin-> december-table módszerrel clrf PCLATH ;Nullázza az idősebb a lakcímnyilvántartás bsf INTCON,GIE ;hogy minden megszakítás movwf UI ;W -> UI andlw b'00001111' ;Maszk UI1 movwf UI1 ;W -> UI1 swapf UI,w ;swap a senior és junior 4bit -> W andlw b'00001111' ;Maszk UI2 movwf UI2 ;W -> UI2 return ;============================================================================================== ;Sub-felvétel adatai a RAM-ban ZAPIS bcf INTCON,GIE ;Minden megszakítás tiltása banc1 movwf EEADR ;Írja be a címet a RAM lakcímnyilvántartás banc0 movf DTIM,0 ;DTIM tárolt W banc1 movwf EEDATA ;Írjuk be az adatokat a RAM-adatok nyilvántartása bsf EECON1,WREN ;behatolhatnak movlw H'55' ;Szükséges műtét movwf EECON2 ;meg kell akadályozni movlw H'AA' ;véletlenszerű írás movwf EECON2 ;Flash memória bsf EECON1,WR ;A parancs a felvétel elindításához banc0 bsf INTCON,GIE ;hogy minden megszakítás return ;--------------------------- ;Szubrutin olvasni adatokat a RAM memóriából SCHIT bcf INTCON,GIE ;Minden megszakítás tiltása banc1 movwf EEADR ;Írja be a címet a RAM lakcímnyilvántartás bsf EECON1,RD ;az olvasási parancs movf EEDATA,W ;Az adatokat a RAM van a W regiszter banc0 bsf INTCON,GIE ;hogy minden megszakítás return ;============================================================================================ ; Átváltási táblázat BIN -> 2 december mentesítési ; Ellenőrizze, hogy a szám nagyobb, mint 63, akkor a táblázat nem megy org H'300' bin_dec bsf PCLATH,0 bsf PCLATH,1 addwf PCL,F dt 00, 01, 02, 03, 04, 05, 06, 07, 08, 09 dt 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 dt 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 dt 30, 31, 32, 33, 34, 35, 36, 37, 38, 39 dt 40, 41, 42, 43, 44, 45, 46, 47, 48, 49 dt 50, 51, 52, 53, 54, 55, 56, 57, 58, 59 dt 60, 61, 62, 63, 64, 65, 66, 67, 68, 69 dt 70, 71, 72, 73, 74, 75, 76, 77, 78, 79 dt 80, 81, 82, 83, 84, 85, 86, 87, 88, 89 dt 90, 91, 92, 93, 94, 95, 96, 97, 98, 99 ;============================================================================================== ; Táblázat Sines *** mielőtt ellenőrizheti, hogy egy táblázat számot 240-250 is ; túlcsordulás bit be "C" az egység, és nem megy az asztalhoz org H'400' sinus bsf PCLATH,2 addwf PCL,F dt 00, 02, 03, 05, 06, 08, 0A, 0B, 0D, 0E, 10, 12, 13, 15, 16, 18 dt 1A, 1B, 1D, 1E, 20, 22, 23, 25, 26, 28, 2A, 2B, 2D, 2E, 30, 32 dt 33, 35, 36, 38, 39, 3B, 3D, 3E, 40, 41, 43, 44, 46, 47, 49, 4B dt 4C, 4E, 4F, 51, 52, 54, 55, 57, 58, 5A, 5B, 5D, 5E, 60, 61, 63 dt 64, 66, 67, 69, 6A, 6C, 6D, 6E, 70, 71, 73, 74, 76, 77, 79, 7A dt 7B, 7D, 7E, 80, 81, 82, 84, 85, 86, 88, 89, 8B, 8C, 8D, 8F, 90 dt 91, 93, 94, 95, 96, 98, 99, 9A, 9C, 9D, 9E, 9F, 0A1, 0A2, 0A3, 0A4 dt 0A6, 0A7, 0A8, 0A9, 0AA, 0AC, 0AD, 0AE, 0AF, 0B0, 0B2, 0B3, 0B4, 0B5, 0B6, 0B7 dt 0B8, 0BA, 0BB, 0BC, 0BD, 0BE, 0BF, 0C0, 0C1, 0C2, 0C3, 0C4, 0C5, 0C6, 0C7, 0C8 dt 0C9, 0CA, 0CB, 0CC, 0CD, 0CE, 0CF, 0D0, 0D1, 0D2, 0D3, 0D4, 0D5, 0D6, 0D6, 0D7 dt 0D8, 0D9, 0DA, 0DB, 0DC, 0DC, 0DD, 0DE, 0DF, 0E0, 0E0, 0E1, 0E2, 0E3, 0E3, 0E4 dt 0E5, 0E6, 0E6, 0E7, 0E8, 0E8, 0E9, 0EA, 0EA, 0EB, 0EC, 0EC, 0ED, 0ED, 0EE, 0EF dt 0EF, 0F0, 0F0, 0F1, 0F1, 0F2, 0F2, 0F3, 0F3, 0F4, 0F4, 0F5, 0F5, 0F6, 0F6, 0F7 dt 0F7, 0F8, 0F8, 0F8, 0F9, 0F9, 0F9, 0FA, 0FA, 0FB, 0FB, 0FB, 0FB, 0FC, 0FC, 0FC dt 0FD, 0FD, 0FD, 0FD, 0FE, 0FE, 0FE, 0FE, 0FE, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF dt 0FF ;============================================================================================== ;Táblázat növekmény frekvenciaváltó LSB org H'500' P_MR bsf PCLATH,0 bsf PCLATH,2 addwf PCL,F dt 00, 19, 32, 4B, 64, 7D, 96, 0AF, 0C8, 0E1 dt 00, 19, 32, 4B, 64, 7D, 96, 0AF, 0C8, 0E1 dt 00, 19, 32, 4B, 64, 7D, 96, 0AF, 0C8, 0E1 dt 00, 19, 32, 4B, 64, 7D, 96, 0AF, 0C8, 0E1 dt 00, 19, 32, 4B, 64, 7D, 96, 0AF, 0C8, 0E1 dt 00, 19, 32, 4B, 64, 7D, 96, 0AF, 0C8, 0E1 dt 00, 19, 32, 4B, 64, 7D, 96, 0AF, 0C8, 0E1 dt 00, 19, 32, 4B, 64, 7D, 96, 0AF, 0C8, 0E1 dt 00, 19, 32, 4B, 64, 7D, 96, 0AF, 0C8, 0E1 dt 00, 19, 32, 4B, 64, 7D, 96, 0AF, 0C8, 0E1 ;============================================================================================== ;Táblázat növekmény frekvenciaváltó MSB org H'600' P_SR bsf PCLATH,1 bsf PCLATH,2 addwf PCL,F dt 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 dt 01, 01, 01, 01, 01, 01, 01, 01, 01, 01 dt 02, 02, 02, 02, 02, 02, 02, 02, 02, 02 dt 03, 03, 03, 03, 03, 03, 03, 03, 03, 03 dt 04, 04, 04, 04, 04, 04, 04, 04, 04, 04 dt 05, 05, 05, 05, 05, 05, 05, 05, 05, 05 dt 06, 06, 06, 06, 06, 06, 06, 06, 06, 06 dt 07, 07, 07, 07, 07, 07, 07, 07, 07, 07 dt 08, 08, 08, 08, 08, 08, 08, 08, 08, 08 dt 09, 09, 09, 09, 09, 09, 09, 09, 09, 09 ;============================================================================================== end