;********************************************************************************************* ; MPLAB¥¢¥»¥ó¥Ö¥éÍÑ¡¡Ver2(16F628AÍÑ)¡¡ ; ; ; ¡Ú µ¡ ǽ ¡Û SE3P²óž¿ô¿®¹æ½èÍý¥×¥í¥°¥é¥à ; ¡¡1) ÆâÉô¥ª¥·¥ì¡¼¥È4MHz»ÈÍÑ ; 2) IGf¿®¹æ¤Î¥Ñ¥ë¥¹¿ô¥«¥¦¥ó¥È½èÍý(16bit¥«¥¦¥ó¥¿¡¼:100¡Á12000rpm/100rpmȽÄê²Äǽ) ; 3) IGf¿®¹æ¥Î¥¤¥º½üµî¤Ï3²ó¤ÎºÇÂç¥Ñ¥ë¥¹¿ô(ºÇ¾®²óž¿ô)¤ò»ÈÍѤ¹¤ë¤³¤È¤Ë¤è¤ê½üµî ; ; ; ¡Ú Íú Îò ¡Û ; ;¡¡¡Ú P I C ¡Û PIC16F628AÍÑ ; ; ¡Ú ´ð ÈÄ ¡Û IGf¿®¹æ + 7¥»¥°¡ß2 + PB¡ß2 Ver1 ; ;¡¡¡Ú ¸À ¸ì ¡Û MPLABÍÑ¥¢¥»¥ó¥Ö¥ë + ¥Þ¥¯¥í»ÈÍÑ(pic_macro3.asm¤ò»ÈÍÑ) ; ;¡¡¡Ú I/O¥Ô¥ó ¡Û PIC16F62x/62xA ¢ª¡¡#includeÀßÄê¤òÊѹ¹¤¹¤ë¤³¤È¤Ë¤è¤ê»ÈÍѲÄǽÂоÝPIC ;********************************************************************************************* ; CONFIGÀßÄê(PIC16F62xA) LIST p=16F628A,R=DEC ;»ÈÍÑPIC¤ÏPIC16F628A,¥Ç¥Õ¥©¥ë¥È¤Ï10¿Ê¿ô #include ;16F628A¥¤¥ó¥¯¥ë¡¼¥É #include ;¥Þ¥¯¥í¥Õ¥¡¥¤¥ë¤ò¥¤¥ó¥¯¥ë¡¼¥É __CONFIG _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _LVP_OFF & _BODEN_OFF & _CP_OFF & _DATA_CP_ON ;ÊÑ¿ôÀë¸À tim0 EQU 020H ;¡¡waitÍÑÊÑ¿ô1 tim1 EQU 021H ;¡¡waitÍÑÊÑ¿ô2 tim2 EQU 022H ;¡¡waitÍÑÊÑ¿ô3 IGfplus EQU 023H ; 1²óž¤¢¤¿¤ê¤ÎÅÀ²Ð¥Ñ¥ë¥¹¿ô(4µ¤ÅûDOHC¤ÏÄ̾ï=2¥Ñ¥ë¥¹,RE¤Ï1¥Ñ¥ë¥¹) rev1k_1 EQU 024H ;¡¡ÀßÄê²óž¿ô­¡(1000ñ°Ì) rev100_1 EQU 025H ;¡¡ÀßÄê²óž¿ô­¡(100ñ°Ì) rev1k_2 EQU 026H ;¡¡ÀßÄê²óž¿ô­¢(1000ñ°Ì) rev100_2 EQU 027H ;¡¡ÀßÄê²óž¿ô­¢(100ñ°Ì) rev1k_3 EQU 028H ;¡¡ÀßÄê²óž¿ô­£(1000ñ°Ì) rev100_3 EQU 029H ;¡¡ÀßÄê²óž¿ô­£(100ñ°Ì) KINOU EQU 02AH ;¡¡É½¼¨µ¡Ç½ div1b EQU 02BH ;¡¡³ä¤é¤ì¤ë¿ô¾å°Ì8bit¡¡ div1a EQU 02CH ;¡¡³ä¤é¤ì¤ë¿ô²¼°Ì8bit div2b EQU 02DH ;¡¡³ä¤ë¿ô¾å°Ì8bit div2a EQU 02EH ;¡¡³ä¤ë¿ô²¼°Ì8bit div3b EQU 02FH ;¡¡Åú¤¨¾å°Ì8bit div3a EQU 030H ;¡¡Åú¤¨²¼°Ì8bit div4b EQU 031H ;¡¡Í¾¤ê¾å°Ì8bit div4a EQU 032H ;¡¡Í¾¤ê²¼°Ì8bit divl1 EQU 033H ;¡¡ÆâÉô·×»»ÍÑ1 divl2 EQU 034H ;¡¡ÆâÉô·×»»ÍÑ2 diverr EQU 035H ;¡¡³ä¤ë¿ô=0»þ¤Î¥¨¥é¡¼(¥¨¥é¡¼»þ¤Ïdiverr=1¤ò¥»¥Ã¥È) cal_dH EQU 036H ; ÀßÄê²óž¿ô¡¿100(10¿Ê¿ô) cal_dL EQU 037H ; ÀßÄê²óž¿ô¡¿100(10¿Ê¿ô) s_rev0_H EQU 038H ;¡¡ÀßÄê²óž¿ô1 ¤Î¾å°Ì8bit¥«¥¦¥ó¥È¿ô(IGf_H¤È¤ÎÈæ³ÓÍÑ) s_rev1_H EQU 039H ;¡¡ÀßÄê²óž¿ô2 ¤Î¾å°Ì8bit¥«¥¦¥ó¥È¿ô(¡¡ ¡¡ ¡· ¡¡¡¡¡¡) s_rev2_H EQU 03AH ;¡¡ÀßÄê²óž¿ô3 ¤Î¾å°Ì8bit¥«¥¦¥ó¥È¿ô(¡¡ ¡¡¡· ¡¡¡¡¡¡) s_rev3_H EQU 03BH ;¡¡RED7500rpm¡¡¤Î¾å°Ì8bit¥«¥¦¥ó¥È¿ô(¡¡¡¡¡¡¡· ¡¡¡¡¡¡) s_rev0_L EQU 03CH ;¡¡ÀßÄê²óž¿ô1 ¤Î²¼°Ì8bit¥«¥¦¥ó¥È¿ô(IGf_L¤È¤ÎÈæ³ÓÍÑ) s_rev1_L EQU 03DH ;¡¡ÀßÄê²óž¿ô2 ¤Î²¼°Ì8bit¥«¥¦¥ó¥È¿ô(¡¡ ¡¡¡· ¡¡¡¡¡¡) s_rev2_L EQU 03EH ;¡¡ÀßÄê²óž¿ô3 ¤Î²¼°Ì8bit¥«¥¦¥ó¥È¿ô(¡¡ ¡¡¡· ¡¡¡¡¡¡) s_rev3_L EQU 03FH ;¡¡RED7500rpm ¤Î²¼°Ì8bit¥«¥¦¥ó¥È¿ô(¡¡ ¡¡¡· ¡¡¡¡¡¡) IGf_H EQU 040H ;¡¡IGf¾å°Ì8bit¥«¥¦¥ó¥È¿ôÊÝ»ýÊÑ¿ô IGf_L EQU 041H ;¡¡IGf²¼°Ì8bit¥«¥¦¥ó¥È¿ôÊÝ»ýÊÑ¿ô E_DATA EQU 042H ; EEPROM½ñ¹þ¥Ç¡¼¥¿°ì»þÊÝ»ýÊÑ¿ô E_ADRS EQU 043H ;¡¡EEPROM¥Ç¡¼¥¿³«»Ï¥¢¥É¥ì¥¹ cnt EQU 044H ; ²óž¿ô·×»»»þ°ì»þÊÑ¿ô IGfmax_H EQU 045H ;¡¡3²ó¤Ç¤ÎºÇÂç¥Ñ¥ë¥¹¿ô¾å°Ì8bitÊÝ´ÉÊÑ¿ô(¥Î¥¤¥º¿®¹æ½üµîÍÑ) IGfmax_L EQU 046H ;¡¡3²ó¤Ç¤ÎºÇÂç¥Ñ¥ë¥¹¿ô²¼°Ì8bitÊÝ´ÉÊÑ¿ô(¥Î¥¤¥º¿®¹æ½üµîÍÑ) max_cnt EQU 047H ; ¥Î¥¤¥º½èÍý¥«¥¦¥ó¥È¿ô pluscnt EQU 048H ; ÅÀ²Ð¥Ñ¥ë¥¹¼èÆÀ¿ô¥«¥¦¥ó¥¿¡¼ PBcnt EQU 049H ;¡¡ÀßÄêɽ¼¨ÍÑ¥«¥¦¥ó¥¿ segNo EQU 04AH ; 7¥»¥°É½¼¨ÍÑÊÑ¿ô segCnt EQU 04BH ; 7¥»¥°É½¼¨ÍÑ·«ÊÖ¤·¥«¥¦¥ó¥¿¡¼ SetCnt EQU 04CH ; 7¥»¥°É½¼¨ÍÑ·«ÊÖ¤·¥«¥¦¥ó¥¿¡¼ segNo10 EQU 04DH ; 7¥»¥°10¤Î°ÌÂàÈòÊÑ¿ô segNo1 EQU 04EH ; 7¥»¥°1¤Î°ÌÂàÈòÊÑ¿ô LEDmsec EQU 04FH ; ¥·¥Õ¥È¥Ý¥¤¥ó¥ÈLEDɽ¼¨»þ´Ö prm1a EQU 050H ;ÊÑ´¹¤·¤¿¤¤Ã͡ʣ±¥Ð¥¤¥È¡£ÊÑ´¹¸å¤Ï²õ¤ì¤ë¡Ë prm3c EQU 051H ;10¿Ê³ÊǼ¾ì½ê¡Ê£³¥Ð¥¤¥È¡Ë¾å°Ì prm3b EQU 052H prm3a EQU 053H ;¡Á²¼°Ì srlc1 EQU 054H ;¥«¥¦¥ó¥¿¡Ê¥µ¥Ö¥ë¡¼¥Á¥ó¤Ç»ÈÍÑ¡Ë srwk1 EQU 055H ;°ì»þ;¤ê³ÊǼ¾ì½ê¡Ê¥µ¥Ö¥ë¡¼¥Á¥ó¤Ç»ÈÍÑ¡Ë ;(47byte»ÈÍÑ) ;¸ÇÄêÃÍÀë¸À #DEFINE P10 PORTA,0 ;7¥»¥°10pin #DEFINE DIP PORTA,1 ;7¥»¥°DIP #DEFINE SEGtr_1 PORTA,2 ;7¥»¥°1¤Î°Ì #DEFINE SEGtr_10 PORTA,3 ;7¥»¥°10¤Î°Ì #DEFINE PB1 PORTA,4 ;PB1 #DEFINE PB2 PORTA,5 ;PB2 #DEFINE P1 PORTA,6 ;7¥»¥°1pin #DEFINE P8 PORTA,7 ;7¥»¥°8pin #DEFINE IGf PORTB,0 ;²óž¿ô¿®¹æ(3v¥Ñ¥ë¥¹¡Ë #DEFINE SP_P PORTB,1 ;¼Ö®¿®¹æ(¡©v¥Ñ¥ë¥¹¡Ë #DEFINE LED1 PORTB,2 ;LED1 #DEFINE LED2 PORTB,3 ;LED2 #DEFINE P5 PORTB,4 ;7¥»¥°5pin #DEFINE P4 PORTB,5 ;7¥»¥°4pin #DEFINE P3 PORTB,6 ;7¥»¥°3pin #DEFINE P2 PORTB,7 ;7¥»¥°2pin org 00h goto start ;¥ê¥»¥Ã¥È»þ¤Ë¤ÏSTART¤Ø org 04h goto start1 ;³ä¹þ»þ¤Ë¤ÏSTART1¤Ø ;************************************************************************************** ; ¥ê¥»¥Ã¥È»þ½èÍý start set_port TRISA,00110000b ; PORTA,4,5pin=ÆþÎÏ set_port TRISB,00000011b ; PORTB,0pin=ÆþÎÏ clrf PORTA ; PORTA¥¯¥ê¥¢ clrf PORTB ; PORTB¥¯¥ê¥¢ port_DIG ; ¥Ý¡¼¥ÈA¤ò¥Ç¥¸¥¿¥ë¤ËÀßÄê mov_fl IGfplus,1 ; ¥Ñ¥ë¥¹¿ô = 1 ¤Ë¥»¥Ã¥È(SE3P¤ÎRE¡Ë start1 call LED_Allreset clrf SetCnt clrf PBcnt ; PBcnt¥¯¥ê¥¢ clrf pluscnt ; pluscnt¥¯¥ê¥¢ clrf segNo clrf segNo10 clrf segNo1 goto read_EEPROM ; EEPROMÆÉ¹þ¤ß start2 bsf LED1 call tim100ms_4MHz ; 100msÂÔµ¡ bsf LED2 call tim100ms_4MHz ; 100msÂÔµ¡ bsf LED1 bsf LED2 call tim100ms_4MHz ; 100msÂÔµ¡ bcf LED1 bcf LED2 call LED_Allreset goto main ;*************************************************************************************** ; ¥á¥¤¥ó½èÍý main call rev_LED snb PB1 call setting_mode call IGf_main ; PB1²¡²¼¤Ê¤·¢ª¥Ñ¥ë¥¹Â¬Äê¤Ø goto main ;*************************************************************************************** ;IGf¿®¹æ¼è¹þ¡Ü¥Ñ¥ë¥¹¿ô·×»»½èÍý IGf_main call rev_LED clrf pluscnt ;ÅÀ²Ð¥Ñ¥ë¥¹¼èÆÀ¿ô¥«¥¦¥ó¥¿¡¼¤Î¥¯¥ê¥¢ clrf IGf_H ;IGf¥Ñ¥ë¥¹¥«¥¦¥ó¥¿¡¼¥¯¥ê¥¢ clrf IGf_L ;IGf¥Ñ¥ë¥¹¥«¥¦¥ó¥¿¡¼¥¯¥ê¥¢ snb IGf ;IGf¿®¹æ¥Á¥§¥Ã¥¯(RB0) call IGf_cnt0 ;IGf¿®¹æ¼èÆÀ¤·¤¿¾ì¹ç¡¢¥Ñ¥ë¥¹·×»»½èÍý¤Ø goto main ;IGf¿®¹æ¤¬Ìµ¤¤¾ì¹ç¡¢main¤Ø ;--------------------------------------------------------------------------------------- ;ÀßÄêÅÀ²Ð¥Ñ¥ë¥¹´Ö¤Î¥«¥¦¥ó¥¿¡¼(IGf_cnt*¤Ï40us) ;¥Ñ¥ë¥¹¼èÆÀ¡Á½ªÎ»¤Þ¤Ç¤Î¥«¥¦¥ó¥È IGf_cnt0 cje_ff pluscnt,IGfplus,IGf_chk ; ÀßÄê¥Ñ¥ë¥¹Åþã¸å¤ÏIGf_chk¤Ø inc pluscnt ; ¼èÆÀ¥Ñ¥ë¥¹¿ô+1 goto IGf_cnt11 ; »þ´Ö¹ç¤ï¤»¤Î¤¿¤áIGf_cnt11¤Ø IGf_cnt1 nop nop nop ; »þ´Ö¹ç¤ï¤»¤Î½¤ÀµÍÑnop nop nop nop IGf_cnt11 incFW IGf_H,IGf_L ; IGf¥«¥¦¥ó¥¿+1(16bit) call wait40us_4MHz ; 40usÂÔµ¡(¼Â¼Ácall¡Áret=27us) snb IGf ; IGf¿®¹æÍ­¢ªIGf_cnt2¡¢Ìµ¢ªIGf_cnt1 goto IGf_cnt1 goto IGf_cnt2 ;¥Ñ¥ë¥¹½ªÎ»¡Á¼èÆÀ¤Þ¤Ç¤Î¥«¥¦¥ó¥È IGf_cnt2 nop nop nop ; »þ´Ö¹ç¤ï¤»¤Î½¤ÀµÍÑnop nop nop nop incFW IGf_H,IGf_L ; IGf¥«¥¦¥ó¥¿+1(16bit) call wait40us_4MHz ; 40usÂÔµ¡(¼Â¼Ácall¡Áret=27us) snb IGf ; IGf¿®¹æÍ­¢ªIGf_cnt0¡¢Ìµ¢ª·«ÊÖ¤· goto IGf_cnt0 goto IGf_cnt2 ;--------------------------------------------------------------------------------------- ;IGf¿®¹æ3²ó¼èÆÀ¤Ç¤ÎºÇÂçÃÍ»ÈÍѽèÍý(¥Î¥¤¥º¿®¹æ½üµî½èÍý) ;¡¡¼èÆÀIGf¿®¹æ3²ó¤Ç¤ÎºÇÂçÃͤòÀµ¾ï¥Ñ¥ë¥¹¿ô¤ÈȽÃǤ¹¤ë ; (¥Î¥¤¥º¿®¹æ¤Ç¤Î²óž¿ô·×»»¤ÏºÇ¾®¤Ë¤Ê¤ë¤Ï¤º¡¦¡¦¡¦) IGf_chk inc max_cnt ;¼ý½¸²ó¿ô¥«¥¦¥ó¥¿+1 cje_fl max_cnt,1,max1 ;1²óÌܤνèÍý¤Ø cje_fl max_cnt,2,max2 ;2²óÌܤÏÁ°²ó¤È¤ÎÈæ³Ó½èÍý¤Ø cje_fl max_cnt,3,maxlast ;ºÇ½ª²ó¤ÏLEDÅÀÅô½èÍý½àÈ÷¤Ø goto IGf_main ; °Û¾ï¤Î¾ì¹ç¤Ï¥á¥¤¥ó¤ØÌ᤹ ;--------------------------------------------------------------------------------------- ;ºÇÂçIGf¿®¹æÈ½Äê½èÍý max1 mov_ff IGfmax_H,IGf_H ;1²óÌܼèÆÀ¥Ñ¥ë¥¹¿ô¾å°Ì8bit¤ò¥»¥Ã¥È mov_ff IGfmax_L,IGf_L ;1²óÌܼèÆÀ¥Ñ¥ë¥¹¿ô²¼°Ì8bit¤ò¥»¥Ã¥È goto IGf_main max2 cja_ff IGfmax_H,IGf_H,IGf_main ;Á°²ó¾å°Ì¡äº£²ó¾å°Ì ¢ª Á°²ó»ÈÍÑ cje_ff IGfmax_H,IGf_H,max2_d0 ;Á°²ó¾å°Ì¡áº£²ó¾å°Ì ¢ª ²¼°ÌbitÈæ³Ó¤Ø cja_ff IGf_H,IGfmax_H,max2_d1 ;Á°²ó¾å°Ì¡ãº£²ó¾å°Ì ¢ª º£²ó¤ò¥»¥Ã¥È goto IGf_main max2_d0 cja_ff IGfmax_L,IGf_L,IGf_main ;Á°²ó²¼°Ì¡äº£²ó²¼°Ì ¢ª Á°²ó»ÈÍÑ mov_ff IGfmax_L,IGf_L ;Á°²ó²¼°Ì¡åº£²ó²¼°Ì ¢ª º£²ó¤ò¥»¥Ã¥È goto IGf_main max2_d1 mov_ff IGfmax_H,IGf_H ;º£²ó¼èÆÀ¥Ñ¥ë¥¹¿ô¾å°Ì8bit¤ò¥»¥Ã¥È mov_ff IGfmax_L,IGf_L ;º£²ó¼èÆÀ¥Ñ¥ë¥¹¿ô²¼°Ì8bit¤ò¥»¥Ã¥È goto IGf_main maxlast cja_ff IGfmax_H,IGf_H,IGf_Set ;Á°²ó¾å°Ì¡äº£²ó¾å°Ì ¢ª Á°²ó»ÈÍѤ·LEDÅÀÅô¤Ø cje_ff IGfmax_H,IGf_H,maxlast_d0 ;Á°²ó¾å°Ì¡áº£²ó¾å°Ì ¢ª ²¼°ÌbitÈæ³Ó¤Ø cja_ff IGf_H,IGfmax_H,maxlast_d1 ;Á°²ó¾å°Ì¡ãº£²ó¾å°Ì ¢ª º£²ó¤ò¥»¥Ã¥È goto IGf_main maxlast_d0 cja_ff IGfmax_L,IGf_L,IGf_Set ;Á°²ó²¼°Ì¡äº£²ó²¼°Ì ¢ª Á°²ó»ÈÍѤ·LEDÅÀÅô¤Ø mov_ff IGfmax_L,IGf_L ;Á°²ó²¼°Ì¡åº£²ó²¼°Ì ¢ª º£²ó¤ò¥»¥Ã¥È goto IGf_Set ;LEDÅÀÅô¤Ø maxlast_d1 mov_ff IGfmax_H,IGf_H ;º£²ó¼èÆÀ¥Ñ¥ë¥¹¿ô¾å°Ì8bit¤ò¥»¥Ã¥È mov_ff IGfmax_L,IGf_L ;º£²ó¼èÆÀ¥Ñ¥ë¥¹¿ô²¼°Ì8bit¤ò¥»¥Ã¥È goto IGf_Set IGf_Set mov_ff IGf_H,IGfmax_H ;ºÇÂç¥Ñ¥ë¥¹¿ô¾å°Ì8bit¤ò¥»¥Ã¥È mov_ff IGf_L,IGfmax_L ;ºÇÂç¥Ñ¥ë¥¹¿ô²¼°Ì8bit¤ò¥»¥Ã¥È clrf max_cnt ;¥Ñ¥ë¥¹¼ý½¸²ó¿ô¥«¥¦¥ó¥¿¥ê¥»¥Ã¥È call cal_palus goto revLED_on ;--------------------------------------------------------------------------------------- ;ÀßÄê²óž¿ô¡Á-1000rpm¤Ç¤ÎLEDɽ¼¨ revLED_on cje_fl KINOU,3,Tacho_7SEG ; KINOU = 3 ¢ª¡¡²óž¿ô7¥»¥°É½¼¨¤Ø goto rev3_chk_u ;¼ÂÀÓ¤ÈÀßÄê¥Ñ¥ë¥¹¿ôÈæ³Ó½èÍý¤Ø rev3_chk_u cja_ff IGf_H,s_rev3_H,revLED_1 ;¾å°Ì8bit¤¬´û¤ËÂ礭¤¤¤Î¤ÇLED1 cje_ff IGf_H,s_rev3_H,rev3_chk_d ;¾å°Ì8bit¤¬Æ±¤¸¤Ê¤Î¤Ç²¼°Ì8bit_chk¤Ø cja_ff s_rev3_H,IGf_H,rev2_chk_u ;¾å°Ì8bit¤¬´û¤Ë¾®¤µ¤¤¤Î¤Ç¼¡¤Îrev_chk¤Ø goto main rev3_chk_d cja_ff IGf_L,s_rev3_L,revLED_1 ;²¼°Ì8bit¤¬´û¤ËÂ礭¤¤¤Î¤ÇLED1 cje_ff IGf_L,s_rev3_L,revLED_2 cja_ff s_rev3_L,IGf_L,rev2_chk_u ;²¼°Ì8bit¤¬¾®¤µ¤¤¤Î¤Ç¼¡¤Îrev_chk¤Ø goto main rev2_chk_u cja_ff IGf_H,s_rev2_H,revLED_2 ;¾å°Ì8bit¤¬´û¤ËÂ礭¤¤¤Î¤ÇLED2 cje_ff IGf_H,s_rev2_H,rev2_chk_d ;¾å°Ì8bit¤¬Æ±¤¸¤Ê¤Î¤Ç²¼°Ì8bit_chk¤Ø cja_ff s_rev2_H,IGf_H,rev1_chk_u ;¾å°Ì8bit¤¬´û¤Ë¾®¤µ¤¤¤Î¤Ç¼¡¤Îrev_chk¤Ø goto main rev2_chk_d cja_ff IGf_L,s_rev2_L,revLED_2 ;²¼°Ì8bit¤¬´û¤ËÂ礭¤¤¤Î¤ÇLED2 cje_ff IGf_L,s_rev2_L,revLED_3 cja_ff s_rev2_L,IGf_L,rev1_chk_u ;²¼°Ì8bit¤¬¾®¤µ¤¤¤Î¤Ç¼¡¤Îrev_chk¤Ø goto main rev1_chk_u cja_ff IGf_H,s_rev1_H,revLED_3 ;¾å°Ì8bit¤¬´û¤ËÂ礭¤¤¤Î¤ÇLED3 cje_ff IGf_H,s_rev1_H,rev1_chk_d ;¾å°Ì8bit¤¬Æ±¤¸¤Ê¤Î¤Ç²¼°Ì8bit_chk¤Ø cja_ff s_rev1_H,IGf_H,rev0_chk_u ;¾å°Ì8bit¤¬´û¤Ë¾®¤µ¤¤¤Î¤Ç¼¡¤Îrev_chk¤Ø goto main rev1_chk_d cja_ff IGf_L,s_rev1_L,revLED_3 ;²¼°Ì8bit¤¬´û¤ËÂ礭¤¤¤Î¤ÇLED3 cje_ff IGf_L,s_rev1_L,revLED_4 cja_ff s_rev1_L,IGf_L,rev0_chk_u ;²¼°Ì8bit¤¬¾®¤µ¤¤¤Î¤Ç¼¡¤Îrev_chk¤Ø goto main rev0_chk_u cja_ff IGf_H,s_rev0_H,revLED_4 ;¾å°Ì8bit¤¬´û¤ËÂ礭¤¤¤Î¤ÇLED4 cje_ff IGf_H,s_rev0_H,rev0_chk_d ;¾å°Ì8bit¤¬Æ±¤¸¤Ê¤Î¤Ç²¼°Ì8bit_chk¤Ø cja_ff s_rev0_H,IGf_H,revLED_5 ;¾å°Ì8bit¤¬´û¤Ë¾®¤µ¤¤¤Î¤Ç²óž¿ô¥ª¡¼¥Ð¡¼¤Ø goto main rev0_chk_d cja_ff IGf_L,s_rev0_L,revLED_4 ;²¼°Ì8bit¤¬´û¤ËÂ礭¤¤¤Î¤ÇLED4 cje_ff IGf_L,s_rev0_L,revLED_5 cja_ff s_rev0_L,IGf_L,revLED_5 ;²¼°Ì8bit¤¬¾®¤µ¤¤¤Î¤Ç¼¡¤Îrev_chk¤Ø goto main ;--------------------------------------------------------------------------------------- ; ²óž¿ô¤Î7¥»¥°É½¼¨ Tacho_7SEG mov_ff cal_dH,IGf_H mov_ff cal_dL,IGf_L call cal_palus ;²óž¿ô¤Î·×»» mov_ff prm1a,div3a call hexdec8 mov_ff segNo10,prm3b ; BCDÊÑ´¹¤Î10¤Î°Ì¤òsegNo10 mov_ff segNo1,prm3a ; BCDÊÑ´¹¤Î1¤Î°Ì¤òsegNo1 call rev_LED goto main return ;--------------------------------------------------------------------------------------- ;£¸¥Ó¥Ã¥È¡Ê£±¥Ð¥¤¥È¡Ë¿ôÃͤò£±£°¿Ê¿ô£³·å¤Î£Â£Ã£Ä¿ôÃͤËÊÑ´¹¤¹¤ë ;°ú¤­¿ô¤Ï prm1a ¤Î£±¥Ð¥¤¥È ;·ë²Ì¤Ï prm3c,prm3b,prm3a ¤ËÆÀ¤é¤ì¤ë¡£ hexdec8 movlw srlc1 ;³ÊǼ¾ì½ê½é´üÃÍ movwf 4h ;4h=fsr call devide_hexdec ;ºÇ²¼°ÌÊÑ´¹ call devide_hexdec call devide_hexdec ;ºÇ¾å°ÌÊÑ´¹ return devide_hexdec ;¡à£±£°¥µ¥Ö¥ë¡¼¥Á¥ó¡¡¡Ê£±£°¤Ç½ü»»¡Ë movlw 8 ;£¸¥Ó¥Ã¥È¤¯¤êÊÖ¤· movwf srlc1 clrf srwk1 devide0_hexdec bcf 3h,0 ;¥­¥ã¥ê¥Õ¥é¥°¤Î¥¯¥ê¥¢ rlf prm1a,1 rlf srwk1,1 movlw b'11110110' addwf srwk1,0 btfsc 3h,0 movwf srwk1 btfsc 3h,0 incf prm1a,1 decfsz srlc1,1 goto devide0_hexdec decf 4h,1 ;4h=fsr movf srwk1,0 movwf 0h ;;¤ê (0h=indirect) return ;--------------------------------------------------------------------------------------- ShiftPoint call rev_point_cal ;ÀßÄê²óž¿ô¤Ç¤Î·×»»½èÍý goto start2 Tacho1 call taco_point_cal1 ;1500¡Á3500rpm·×»»½èÍý goto start2 ;--------------------------------------------------------------------------------------- ; ³ÆÀßÄê²óž¿ô¤Î¥Ñ¥ë¥¹¿ô·×»»(´ð½à»þ´Ö=40us:3a98) rev_point_cal clrf cal_dH mov_ff cal_dL,rev100_1 clrf cnt inc_rev1 add_fl cal_dL,10 inc cnt cjne_ff cnt,rev1k_1,inc_rev1 call cal_palus ;²óž¿ô¤Î¥Ñ¥ë¥¹¿ô·×»» mov_ff s_rev3_H,div3b ;¾å°Ì8bitÀßÄê mov_ff s_rev3_L,div3a ;²¼°Ì8bitÀßÄê mov_ff cal_dL,rev100_2 clrf cnt inc_rev2 add_fl cal_dL,10 inc cnt cjne_ff cnt,rev1k_2,inc_rev2 call cal_palus ;²óž¿ô¤Î¥Ñ¥ë¥¹¿ô·×»» mov_ff s_rev2_H,div3b ;¾å°Ì8bitÀßÄê mov_ff s_rev2_L,div3a ;²¼°Ì8bitÀßÄê mov_ff cal_dL,rev100_3 clrf cnt inc_rev3 add_fl cal_dL,10 inc cnt cjne_ff cnt,rev1k_3,inc_rev3 call cal_palus ;²óž¿ô¤Î¥Ñ¥ë¥¹¿ô·×»» mov_ff s_rev1_H,div3b ;¾å°Ì8bitÀßÄê mov_ff s_rev1_L,div3a ;²¼°Ì8bitÀßÄê mov_fl cal_dL,5 clrf cnt inc_rev4 add_fl cal_dL,10 inc cnt cjne_fl cnt,7,inc_rev4 call cal_palus ;²óž¿ô¤Î¥Ñ¥ë¥¹¿ô·×»» mov_ff s_rev0_H,div3b ;¾å°Ì8bitÀßÄê mov_ff s_rev0_L,div3a ;²¼°Ì8bitÀßÄê return ;--------------------------------------------------------------------------------------- ; ¥¿¥³¥á¡¼¥¿ÍѤΥѥ륹¿ô·×»»4(´ð½à»þ´Ö=40us»þ) taco_point_cal1 mov_fl s_rev3_H,003h ;1500²óž mov_fl s_rev3_L,0e8h mov_fl s_rev2_H,002h ;2000²óž mov_fl s_rev2_L,0eeh mov_fl s_rev1_H,001h ;3000²óž mov_fl s_rev1_L,0f4h mov_fl s_rev0_H,001h ;4000²óž mov_fl s_rev0_L,077h return ;************************************************************************************** LED_Allreset bcf P1 bcf P2 bcf P3 bcf P4 bcf P5 bcf P8 bcf P10 return ;--------------------------------------------------------------------------------------- rev_LED cje_fl KINOU,1,exit_rev_LED bsf SEGtr_10 bcf SEGtr_1 mov_ff segNo,segNo10 call seg_on mov_fl tim0,2 call wait1ms_4MHz bcf SEGtr_10 bsf SEGtr_1 mov_ff segNo,segNo1 call seg_on mov_fl tim0,2 call wait1ms_4MHz exit_rev_LED nop return ;--------------------------------------------------------------------------------------- revLED_1 cje_fl KINOU,1,exit_revLED1 bsf SEGtr_10 bcf SEGtr_1 mov_fl segNo,1 mov_ff segNo10,segNo call seg_on mov_fl tim0,2 call wait1ms_4MHz bcf SEGtr_10 bsf SEGtr_1 mov_fl segNo,5 mov_ff segNo1,segNo call seg_on mov_fl tim0,2 call wait1ms_4MHz cjne_fl KINOU,1,main exit_revLED1 bcf LED1 bcf LED2 mov_ff tim0,LEDmsec call LEDwait100ms_4MHz goto main return ;--------------------------------------------------------------------------------------- revLED_2 cje_fl KINOU,1,exit_revLED2 bsf SEGtr_10 bcf SEGtr_1 mov_fl segNo,2 mov_ff segNo10,segNo call seg_on mov_fl tim0,2 call wait1ms_4MHz bcf SEGtr_10 bsf SEGtr_1 mov_fl segNo,0 mov_ff segNo1,segNo call seg_on mov_fl tim0,2 call wait1ms_4MHz cjne_fl KINOU,1,main exit_revLED2 bsf LED1 bcf LED2 mov_ff tim0,LEDmsec call LEDwait100ms_4MHz goto main return ;--------------------------------------------------------------------------------------- revLED_3 cje_fl KINOU,1,exit_revLED3 bsf SEGtr_10 bcf SEGtr_1 mov_fl segNo,3 mov_ff segNo10,segNo call seg_on mov_fl tim0,2 call wait1ms_4MHz bcf SEGtr_10 bsf SEGtr_1 mov_fl segNo,0 mov_ff segNo1,segNo call seg_on mov_fl tim0,2 call wait1ms_4MHz cjne_fl KINOU,1,main exit_revLED3 bcf LED1 bsf LED2 mov_ff tim0,LEDmsec call LEDwait100ms_4MHz goto main return ;--------------------------------------------------------------------------------------- revLED_4 cje_fl KINOU,1,exit_revLED4 bsf SEGtr_10 bcf SEGtr_1 mov_fl segNo,4 mov_ff segNo10,segNo call seg_on mov_fl tim0,2 call wait1ms_4MHz bcf SEGtr_10 bsf SEGtr_1 mov_fl segNo,0 mov_ff segNo1,segNo call seg_on mov_fl tim0,2 call wait1ms_4MHz cjne_fl KINOU,1,main exit_revLED4 bsf LED1 bsf LED2 mov_ff tim0,LEDmsec call LEDwait100ms_4MHz goto main return ;--------------------------------------------------------------------------------------- revLED_5 cje_fl KINOU,1,exit_revLED5 bsf SEGtr_10 bcf SEGtr_1 mov_fl segNo,4 mov_ff segNo10,segNo call seg_on mov_fl tim0,2 call wait1ms_4MHz bcf SEGtr_10 bsf SEGtr_1 mov_fl segNo,5 mov_ff segNo1,segNo call seg_on mov_fl tim0,2 call wait1ms_4MHz cjne_fl KINOU,1,main exit_revLED5 bcf LED1 bcf LED2 mov_ff tim0,LEDmsec call LEDwait100ms_4MHz goto main return ;*************************************************************************************** ; 7¥»¥°¿ôÃÍɽ¼¨¥ë¡¼¥Æ¥£¥ó seg_on cje_fl segNo,0,seg_0 cje_fl segNo,1,seg_1 cje_fl segNo,2,seg_2 cje_fl segNo,3,seg_3 cje_fl segNo,4,seg_4 cje_fl segNo,5,seg_5 cje_fl segNo,6,seg_6 cje_fl segNo,7,seg_7 cje_fl segNo,8,seg_8 cje_fl segNo,9,seg_9 seg_on_end nop return seg_0 bsf P1 bsf P2 bcf P3 bsf P4 bsf P5 bsf P8 bsf P10 goto seg_on_end seg_1 bcf P1 bcf P2 bcf P3 bcf P4 bcf P5 bsf P8 bsf P10 goto seg_on_end seg_2 bsf P1 bcf P2 bsf P3 bsf P4 bsf P5 bcf P8 bsf P10 goto seg_on_end seg_3 bsf P1 bcf P2 bsf P3 bcf P4 bsf P5 bsf P8 bsf P10 goto seg_on_end seg_4 bcf P1 bsf P2 bsf P3 bcf P4 bcf P5 bsf P8 bsf P10 goto seg_on_end seg_5 bsf P1 bsf P2 bsf P3 bcf P4 bsf P5 bsf P8 bcf P10 goto seg_on_end seg_6 bsf P1 bsf P2 bsf P3 bsf P4 bsf P5 bsf P8 bcf P10 goto seg_on_end seg_7 bsf P1 bsf P2 bcf P3 bcf P4 bcf P5 bsf P8 bsf P10 goto seg_on_end seg_8 bsf P1 bsf P2 bsf P3 bsf P4 bsf P5 bsf P8 bsf P10 goto seg_on_end seg_9 bsf P1 bsf P2 bsf P3 bcf P4 bsf P5 bsf P8 bsf P10 goto seg_on_end ;--------------------------------------------------------------------------------------- ; 16bit¤Î³ä»» ;¡¡³ÆÀßÄê²óž¿ô¤Î¥Ñ¥ë¥¹¿ô¤Î·×»» cal_palus mov_fl div1b,03ah ;´ð½à»þ´Ö40us( HEX(3a98) = DEC(15000) ) mov_fl div1a,098h mov_ff div2b,cal_dH mov_ff div2a,cal_dL call div16 ;³ä»»¼Â»Ü¡Ê ²ò = div3b,a ; = div4b,a ) return ;16bit³ä»» div16 movlw 10h ; movwf divl1 ; movf div2a,0 ; movwf div4a ; movf div2b,0 ; movwf div4b ; di1601 rlf div4a,1 ;1bitº¸¥·¥Õ¥È rlf div4b,1 ;1bitº¸¥·¥Õ¥È btfsc 3h,0 ;C¥Õ¥é¥°³Îǧ goto di1602 ;³ä¤ë¿ô¤Î¾å°Ì¥Ó¥Ã¥È°ÌÃÖ¸¡º÷ decfsz divl1,1 ; goto di1601 ; movlw 1 ; movwf diverr ;³ä¤ë¿ô = 0 ¢ª ¥¨¥é¡¼ return di1602 clrf div3a ;²ò¥»¥Ã¥ÈÍÑÊÑ¿ô¥¯¥ê¥¢ clrf div3b ; clrf div4a ;¥ï¡¼¥¯ÍÑÊÑ¿ô¥¯¥ê¥¢ clrf div4b ; movlw 10h ; movwf divl2 ; movf divl1,0 ; subwf divl2,1 ;»Ä¥ë¡¼¥×¿ô di1603 bcf 3h,0 ;C¥Õ¥é¥° = 0 rlf div1a,1 ; rlf div1b,1 ; rlf div4a,1 ; rlf div4b,1 ; decfsz divl1,1 ;³ä¤é¤ì¤ë¿ô¤ò½é´ü°ÌÃ֤ޤǥ·¥Õ¥È goto di1603 ; di1604 ;¸½°ÌÃ֤Ǥθº»»¤¬²ÄÈݳÎǧ movf div2b,0 ; subwf div4b,0 ; btfss 3h,0 ; goto di1606 ; movf div4b,0 ; subwf div2b,0 ; btfss 3h,0 ; goto di1605 ; movf div2a,0 ; subwf div4a,0 ; btfss 3h,0 ; goto di1606 ; di1605 movf div2a,0 ; subwf div4a,1 ;¥ï¡¼¥¯¤«¤é²¼°Ì¤ò°ú¤¯ btfss 3h,0 ;C¥Õ¥é¥° = 1 ¢ª¡¡skip decf div4b,1 ;¾å°Ì -1 movf div2b,0 ; subwf div4b,1 ;¥ï¡¼¥¯¤«¤é¾å°Ì¤ò°ú¤¯ bsf 3h,0 ;C¥Õ¥é¥° = 1 goto di1607 ; di1606 bcf 3h,0 ;C¥Õ¥é¥° = 0 di1607 rlf div3a,1 ;C¥Õ¥é¥°¤ÎÆâÍÆ¤ò²ò¤Ë¥·¥Õ¥È rlf div3b,1 ; movf divl2,1 ;divl2 = 0 ¤Î³Îǧ btfsc 3h,2 ; goto di1608 ;ºÇ²¼°Ì¤Þ¤Ç½èÍý¤·¤¿¤Ê¤é½ªÎ» decf divl2,1 ;bit°ÌÃÖ¤ò1¤Ä²¼¤²¤ë¡Ê±¦¤Ø¡Ë bcf 3h,0 ;C¥Õ¥é¥° = 0 rlf div1a,1 ;¥ï¡¼¥¯¤Ø1bitº¸¥·¥Õ¥È rlf div1b,1 ; rlf div4a,1 ; rlf div4b,1 ; goto di1604 ; di1608 clrf diverr ;Àµ¾ï½ªÎ» return ;************************************************************************************** ; ÀßÄê¥â¡¼¥É½èÍý setting_mode bcf LED1 ; LED1¾ÃÅô bcf LED2 ; LED2¾ÃÅô snb PB1 ; PB1¤Î²¡²¼³Îǧ call PB1_check ; PB1²¡²¼¤¢¤ê¢ª²¡²¼ÆâÍÆ³Îǧ¤Ø snb PB2 ; PB2¤Î²¡²¼³Îǧ call PB2_check ; PB2²¡²¼¤¢¤ê¢ª²¡²¼ÆâÍÆ³Îǧ¤Ø cje_fl PBcnt,1,rev1_on ;¡¡2 = ÀßÄê­¡1000²óž¿ôÀßÄêɽ¼¨ cje_fl PBcnt,2,rev1_on ;¡¡3 = ÀßÄê­¡100²óž¿ôÀßÄêɽ¼¨ cje_fl PBcnt,3,rev2_on ;¡¡4 = ÀßÄê­¢1000²óž¿ôÀßÄêɽ¼¨ cje_fl PBcnt,4,rev2_on ;¡¡5 = ÀßÄê­¢100²óž¿ôÀßÄêɽ¼¨ cje_fl PBcnt,5,rev3_on ;¡¡6 = ÀßÄê­£1000²óž¿ôÀßÄêɽ¼¨ cje_fl PBcnt,6,rev3_on ;¡¡6 = ÀßÄê­£100²óž¿ôÀßÄêɽ¼¨ cje_fl PBcnt,7,KINOU_on ;¡¡7 = ɽ¼¨µ¡Ç½ cje_fl PBcnt,8,LEDmsec_on ;¡¡8 = LEDɽ¼¨»þ´Ö100msec call tim40ms_4MHz ; 20msÂÔµ¡ goto setting_mode ;--------------------------------------------------------------------------------------- ; PB1¥Ü¥¿¥ó½èÍý PB1_check call tim40ms_4MHz ; 20msÂÔµ¡(¥Á¥ã¥¿¥ê¥ó¥°ËÉ»ß) sb PB1 ; PB1²¡²¼³Îǧ goto setting_mode ; ¡¡PB1²¡²¼Ìµ¤·¢ªÀßÄê¥â¡¼¥É¤Ø call tim1sec_4MHz snb PB1 goto write_EEPROM inc PBcnt ; PBcnt¥«¥¦¥ó¥¿¿ô¤Ë¤è¤ëɽ¼¨ÆâÍÆÊ¬´ô PBcnt1 cje_fl PBcnt,1,rev1_on ;¡¡2 = ÀßÄê­¡1000²óž¿ôÀßÄêɽ¼¨ cje_fl PBcnt,2,rev1_on ;¡¡3 = ÀßÄê­¡100²óž¿ôÀßÄêɽ¼¨ cje_fl PBcnt,3,rev2_on ;¡¡4 = ÀßÄê­¢1000²óž¿ôÀßÄêɽ¼¨ cje_fl PBcnt,4,rev2_on ;¡¡5 = ÀßÄê­¢100²óž¿ôÀßÄêɽ¼¨ cje_fl PBcnt,5,rev3_on ;¡¡6 = ÀßÄê­£1000²óž¿ôÀßÄêɽ¼¨ cje_fl PBcnt,6,rev3_on ;¡¡6 = ÀßÄê­£100²óž¿ôÀßÄêɽ¼¨ cje_fl PBcnt,7,KINOU_on ;¡¡7 = ɽ¼¨µ¡Ç½ cje_fl PBcnt,8,LEDmsec_on ;¡¡8 = LEDɽ¼¨»þ´Ö100msec cje_fl PBcnt,9,clrPB ;¡¡9 = 1¤ËÌ᤹½èÍý return clrPB mov_fl PBcnt,1 ; PBcnt¥¯¥ê¥¢ goto PBcnt1 ;--------------------------------------------------------------------------------------- ; PB2¥Ü¥¿¥ó½èÍý PB2_check call tim40ms_4MHz ; 20msÂÔµ¡(¥Á¥ã¥¿¥ê¥ó¥°Âкö) sb PB2 ; PB2²¡²¼³Îǧ goto setting_mode ; PB2²¡²¼Ìµ¤·¢ªÀßÄê¥â¡¼¥É¤Ø cje_fl PBcnt,1,rev1k_1_up ;¡¡ 2 = ÀßÄê­¡1000²óžÀßÄê¤ò+1¤¹¤ë½èÍý¤Ø cje_fl PBcnt,2,rev100_1_up ;¡¡ 3 = ÀßÄê­¡100²óžÀßÄê¤ò+1¤¹¤ë½èÍý¤Ø cje_fl PBcnt,3,rev1k_2_up ;¡¡ 4 = ÀßÄê­¢1000²óžÀßÄê¤ò+1¤¹¤ë½èÍý¤Ø cje_fl PBcnt,4,rev100_2_up ;¡¡ 5 = ÀßÄê­¢100²óžÀßÄê¤ò+1¤¹¤ë½èÍý¤Ø cje_fl PBcnt,5,rev1k_3_up ;¡¡ 6 = ÀßÄê­£1000²óžÀßÄê¤ò+1¤¹¤ë½èÍý¤Ø cje_fl PBcnt,6,rev100_3_up ;¡¡ 7 = ÀßÄê­£100²óžÀßÄê¤ò+1¤¹¤ë½èÍý¤Ø cje_fl PBcnt,7,KINOU_up ;¡¡ 8 = µ¡Ç½¤ò+1¤¹¤ë½èÍý¤Ø cje_fl PBcnt,8,LEDmsec_up ;¡¡ 9 = LEDɽ¼¨»þ´Ömsec¤ò+1¤¹¤ë½èÍý¤Ø return ;--------------------------------------------------------------------------------------- ; 1000²óž¿ôÀßÄê­¡½èÍý rev1k_1_up inc rev1k_1 ; rev1k = rev1k + 1 call tim40ms_4MHz ; 40msÂÔµ¡(¥Á¥ã¥¿¥ê¥ó¥°Âкö) cje_fl rev1k_1,10,rev1k_1_clr ; if rev1k > 9 then rev1k_1_up2 call rev1_on ; else LCDɽ¼¨½èÍý¤Ø goto setting_mode rev1k_1_clr mov_fl rev1k_1,1 ; rev1k¤Î½é´ü²½(=1) goto rev1k_1_up2 ;--------------------------------------------------------------------------------------- ; 100²óž¿ôÀßÄê­¡½èÍý rev100_1_up inc rev100_1 ; rev100 = rev100 + 1 call tim40ms_4MHz ; 40msÂÔµ¡(¥Á¥ã¥¿¥ê¥ó¥°Âкö) cje_fl rev100_1,10,rev100_1_clr ; if rev100 > 9 then rev100_1_up2 call rev1_on ; else LCDɽ¼¨½èÍý¤Ø goto setting_mode rev100_1_clr clrf rev100_1 ; rev100¤Î½é´ü²½(=0) goto rev100_1_up2 ;--------------------------------------------------------------------------------------- ; 1000²óž¿ôÀßÄê­¢½èÍý rev1k_2_up inc rev1k_2 ; rev1k = rev1k + 1 call tim40ms_4MHz ; 40msÂÔµ¡(¥Á¥ã¥¿¥ê¥ó¥°Âкö) cje_fl rev1k_2,10,rev1k_2_clr ; if rev1k > 9 then rev1k_2_up2 call rev2_on ; else LCDɽ¼¨½èÍý¤Ø goto setting_mode rev1k_2_clr mov_fl rev1k_2,1 ; rev1k¤Î½é´ü²½(=1) goto rev1k_2_up2 ;--------------------------------------------------------------------------------------- ; 100²óž¿ôÀßÄê­¢½èÍý rev100_2_up inc rev100_2 ; rev100 = rev100 + 1 call tim40ms_4MHz ; 40msÂÔµ¡(¥Á¥ã¥¿¥ê¥ó¥°Âкö) cje_fl rev100_2,10,rev100_2_clr ; if rev100 > 9 then rev100_2_up2 call rev2_on ; else LCDɽ¼¨½èÍý¤Ø goto setting_mode rev100_2_clr clrf rev100_2 ; rev100¤Î½é´ü²½(=0) goto rev100_2_up2 ;--------------------------------------------------------------------------------------- ; 1000²óž¿ôÀßÄê­£½èÍý rev1k_3_up inc rev1k_3 ; rev1k = rev1k + 1 call tim40ms_4MHz ; 40msÂÔµ¡(¥Á¥ã¥¿¥ê¥ó¥°Âкö) cje_fl rev1k_3,10,rev1k_3_clr ; if rev1k > 9 then rev1k_3_up2 call rev3_on ; else LCDɽ¼¨½èÍý¤Ø goto setting_mode rev1k_3_clr mov_fl rev1k_3,2 ; rev1k¤Î½é´ü²½(=2) goto rev1k_3_up2 ;--------------------------------------------------------------------------------------- ; 100²óž¿ôÀßÄê­£½èÍý rev100_3_up inc rev100_3 ; rev100 = rev100 + 1 call tim40ms_4MHz ; 40msÂÔµ¡(¥Á¥ã¥¿¥ê¥ó¥°Âкö) cje_fl rev100_3,10,rev100_3_clr ; if rev100 > 9 then rev100_3_up2 call rev3_on ; else LCDɽ¼¨½èÍý¤Ø goto setting_mode rev100_3_clr clrf rev100_3 ; rev100¤Î½é´ü²½(=0) goto rev100_3_up2 ;--------------------------------------------------------------------------------------- ; ɽ¼¨µ¡Ç½ÀßÄê½èÍý KINOU_up inc KINOU ; KINOU = KINOU + 1 call tim40ms_4MHz ; 40msÂÔµ¡(¥Á¥ã¥¿¥ê¥ó¥°Âкö) cje_fl KINOU,4,KINOU_clr ; if KINOU = 4 then KINOU_up2 call KINOU_on ; else LCDɽ¼¨½èÍý¤Ø goto setting_mode KINOU_clr mov_fl KINOU,1 ; KINOU¤Î½é´ü²½(=1) goto KINOU_up2 ;--------------------------------------------------------------------------------------- ; LEDɽ¼¨»þ´ÖmsecÀßÄê½èÍý LEDmsec_up inc LEDmsec ; LEDmsec = LEDmsec + 1 call tim40ms_4MHz ; 40msÂÔµ¡(¥Á¥ã¥¿¥ê¥ó¥°Âкö) cje_fl LEDmsec,10,LEDmsec_clr ; if LEDmsec = 10 then LEDmsec_up2 call LEDmsec_on ; else LCDɽ¼¨½èÍý¤Ø goto setting_mode LEDmsec_clr mov_fl LEDmsec,1 ; LEDmsec¤Î½é´ü²½(=1) goto LEDmsec_up2 ;*************************************************************************************** ; ²óž¿ô¿®¹æ­¡É½¼¨ rev1_on mov_fl segCnt,65 rev1_on2 bsf SEGtr_10 bcf SEGtr_1 mov_ff segNo,rev1k_1 call seg_on mov_fl tim0,2 call wait1ms_4MHz bcf SEGtr_10 bsf SEGtr_1 mov_ff segNo,rev100_1 call seg_on mov_fl tim0,2 call wait1ms_4MHz djnz segCnt,rev1_on2 cje_fl SetCnt,1,rev1_on3 goto setting_mode rev1_on3 nop return ;--------------------------------------------------------------------------------------- ; ²óž¿ô¿®¹æ­¢É½¼¨ rev2_on mov_fl segCnt,65 rev2_on2 bsf SEGtr_10 bcf SEGtr_1 mov_ff segNo,rev1k_2 call seg_on mov_fl tim0,2 call wait1ms_4MHz bcf SEGtr_10 bsf SEGtr_1 mov_ff segNo,rev100_2 call seg_on mov_fl tim0,2 call wait1ms_4MHz djnz segCnt,rev2_on2 cje_fl SetCnt,1,rev2_on3 goto setting_mode rev2_on3 nop return ;--------------------------------------------------------------------------------------- ; ²óž¿ô¿®¹æ­£É½¼¨ rev3_on mov_fl segCnt,65 rev3_on2 bsf SEGtr_10 bcf SEGtr_1 mov_ff segNo,rev1k_3 call seg_on mov_fl tim0,2 call wait1ms_4MHz bcf SEGtr_10 bsf SEGtr_1 mov_ff segNo,rev100_3 call seg_on mov_fl tim0,2 call wait1ms_4MHz djnz segCnt,rev3_on2 cje_fl SetCnt,1,rev3_on3 goto setting_mode rev3_on3 nop return ;--------------------------------------------------------------------------------------- ; µ¡Ç½É½¼¨ KINOU_on bsf SEGtr_10 bcf SEGtr_1 mov_ff segNo,KINOU call seg_on call tim100ms_4MHz call tim100ms_4MHz cje_fl SetCnt,1,KINOU_on3 goto setting_mode KINOU_on3 nop return ;--------------------------------------------------------------------------------------- ; LEDɽ¼¨»þ´Ömsec LEDmsec_on bcf SEGtr_10 bsf SEGtr_1 mov_ff segNo,LEDmsec call seg_on call tim100ms_4MHz call tim100ms_4MHz cje_fl SetCnt,1,LEDmsec_on3 goto setting_mode LEDmsec_on3 nop return ;-------------------------------------------------------------------------------- ;¡Ú 4MHzÍÑ¡Û10ms¬Äꥵ¥Ö¥ë¡¼¥Á¥ó(¬Äê»þ´Ö=10ms¡ßtim0) 4MHz : 1¥µ¥¤¥¯¥ë=1.0us ;-------------------------------------------------------------------------------- wait10ms_4MHz wa20_4MHz mov_fl tim1,23 ;23 9.966ms wa21_4MHz mov_fl tim2,143 ;143 wa22_4MHz djnz tim2,wa22_4MHz djnz tim1,wa21_4MHz djnz tim0,wa20_4MHz return ;-------------------------------------------------------------------------------- ;¡Ú 4MHzÍÑ¡Û100ms¬Äꥵ¥Ö¥ë¡¼¥Á¥ó(¬Äê»þ´Ö=100ms¡ßtim0) 4MHz : 1¥µ¥¤¥¯¥ë=1.0us ;-------------------------------------------------------------------------------- LEDwait100ms_4MHz LED20_4MHz mov_fl tim1,230 ;230 99.66ms LED21_4MHz mov_fl tim2,143 ;143 LED22_4MHz djnz tim2,LED22_4MHz djnz tim1,LED21_4MHz djnz tim0,LED20_4MHz return ;--------------------------------------------------------------------------------- ;¡Ú 4MHzÍÑ¡ÛÃٱ䥿¥¤¥Þ¡¼(40msec¤ÎOFF»þ´Ö¡Ë ;--------------------------------------------------------------------------------- tim40ms_4MHz mov_fl tim0,4 call wait10ms_4MHz return ;--------------------------------------------------------------------------------- ;¡Ú 4MHzÍÑ¡ÛÃٱ䥿¥¤¥Þ¡¼(100msec¤ÎOFF»þ´Ö¡Ë ;--------------------------------------------------------------------------------- tim100ms_4MHz mov_fl tim0,10 call wait10ms_4MHz return ;--------------------------------------------------------------------------------- ;¡Ú 4MHzÍÑ¡ÛÃٱ䥿¥¤¥Þ¡¼(1sec¤ÎOFF»þ´Ö¡Ë ;--------------------------------------------------------------------------------- tim1sec_4MHz mov_fl tim0,100 call wait10ms_4MHz return ;-------------------------------------------------------------------------------- ;¡Ú 4MHzÍѡۥѥ륹¬Ä꥿¥¤¥Þ¡¼(´ð½à40usec¤ÎOFF»þ´Ö) : ´°À®ÈÇ(Call¡Áret=27.0us) ;-------------------------------------------------------------------------------- wait40us_4MHz nop nop mov_fl tim0,2 wa30_4MHz mov_fl tim1,2 wa31_4MHz djnz tim1,wa31_4MHz djnz tim0,wa30_4MHz return ;-------------------------------------------------------------------------------- ; ¡Ú 4MHz¡Û1ms¬Äꥵ¥Ö¥ë¡¼¥Á¥ó(¬Äê»þ´Ö=1ms¡ßtim0) 4MHz : 1¥µ¥¤¥¯¥ë=1us ;-------------------------------------------------------------------------------- wait1ms_4MHz wa01ms_4M mov_fl tim1,6 ;6 1ms wa11ms_4M mov_fl tim2,33 ;33 wa12ms_4M djnz tim2,wa12ms_4M djnz tim1,wa11ms_4M djnz tim0,wa01ms_4M return ;--------------------------------------------------------------------------------- ;¡¡EEPROM¤«¤é³ÆÀßÄê¥Ç¡¼¥¿¤Î¼èÆÀ½èÍý ;--------------------------------------------------------------------------------- read_EEPROM clrf E_ADRS call EEPROM_read ; ¥Ç¡¼¥¿¼èÆÀ½èÍý mov_ff rev1k_1,E_DATA ; rev1k¤Ë¥»¥Ã¥È inc E_ADRS ; ÆÉ¹þ¥¢¥É¥ì¥¹+1 call EEPROM_read ; ¥Ç¡¼¥¿¼èÆÀ½èÍý mov_ff rev100_1,E_DATA ; rev100¤Ë¥»¥Ã¥È inc E_ADRS ; ÆÉ¹þ¥¢¥É¥ì¥¹+1 call EEPROM_read ; ¥Ç¡¼¥¿¼èÆÀ½èÍý mov_ff rev1k_2,E_DATA ; rev1k¤Ë¥»¥Ã¥È inc E_ADRS ; ÆÉ¹þ¥¢¥É¥ì¥¹+1 call EEPROM_read ; ¥Ç¡¼¥¿¼èÆÀ½èÍý mov_ff rev100_2,E_DATA ; rev100¤Ë¥»¥Ã¥È inc E_ADRS ; ÆÉ¹þ¥¢¥É¥ì¥¹+1 call EEPROM_read ; ¥Ç¡¼¥¿¼èÆÀ½èÍý mov_ff rev1k_3,E_DATA ; rev1k¤Ë¥»¥Ã¥È inc E_ADRS ; ÆÉ¹þ¥¢¥É¥ì¥¹+1 call EEPROM_read ; ¥Ç¡¼¥¿¼èÆÀ½èÍý mov_ff rev100_3,E_DATA ; rev100¤Ë¥»¥Ã¥È inc E_ADRS ; ÆÉ¹þ¥¢¥É¥ì¥¹+1 call EEPROM_read ; ¥Ç¡¼¥¿¼èÆÀ½èÍý mov_ff KINOU,E_DATA ; KINOU¤Ë¥»¥Ã¥È inc E_ADRS ; ÆÉ¹þ¥¢¥É¥ì¥¹+1 call EEPROM_read ; ¥Ç¡¼¥¿¼èÆÀ½èÍý mov_ff LEDmsec,E_DATA ; LEDmsec¤Ë¥»¥Ã¥È mov_fl SetCnt,1 call rev1_on call rev2_on call rev3_on call KINOU_on call LEDmsec_on clrf SetCnt cje_fl KINOU,1,ShiftPoint cje_fl KINOU,2,Tacho1 goto start2 return ;--------------------------------------------------------------------------------- ;¡¡EEPROM¥Ç¡¼¥¿ÆÉ½Ð(Äê·¿½èÍý:PIC16F62x,62xAÍÑ) ;--------------------------------------------------------------------------------- EEPROM_read movf E_ADRS,0 ; w = E_ADRS bsf STATUS,RP0 ; page1ÀÚÂØ movwf EEADR ;¡¡EEADR = w bsf EECON1,RD ; ÆÉ¹þµö²Ä movf EEDATA,0 ;¡¡w = EEDATA bcf STATUS,RP0 ; page0ÀÚÂØ movwf E_DATA ; E_DATA = w return ;--------------------------------------------------------------------------------- ;¡¡³ÆÀßÄê¥Ç¡¼¥¿¤ÎEEPROM¤Ø¤Î½ñ¹þ½èÍý ;--------------------------------------------------------------------------------- write_EEPROM clrf E_ADRS ; ½ñ¹þ¥¢¥É¥ì¥¹¥ê¥»¥Ã¥È mov_ff E_DATA,rev1k_1 ; E_DATA = rev1k call EEPROM_write ; EEPROM¤Ørev100½ñ¹þ¤ß inc E_ADRS ; ½ñ¹þ¥¢¥É¥ì¥¹+1 mov_ff E_DATA,rev100_1 ; E_DATA = rev100 call EEPROM_write ; EEPROM¤Ørev100½ñ¹þ¤ß inc E_ADRS ; ½ñ¹þ¥¢¥É¥ì¥¹+1 mov_ff E_DATA,rev1k_2 ; E_DATA = rev1k call EEPROM_write ; EEPROM¤Ørev100½ñ¹þ¤ß inc E_ADRS ; ½ñ¹þ¥¢¥É¥ì¥¹+1 mov_ff E_DATA,rev100_2 ; E_DATA = rev100 call EEPROM_write ; EEPROM¤Ørev100½ñ¹þ¤ß inc E_ADRS ; ½ñ¹þ¥¢¥É¥ì¥¹+1 mov_ff E_DATA,rev1k_3 ; E_DATA = rev1k call EEPROM_write ; EEPROM¤Ørev100½ñ¹þ¤ß inc E_ADRS ; ½ñ¹þ¥¢¥É¥ì¥¹+1 mov_ff E_DATA,rev100_3 ; E_DATA = rev100 call EEPROM_write ; EEPROM¤Ørev100½ñ¹þ¤ß inc E_ADRS ; ½ñ¹þ¥¢¥É¥ì¥¹+1 mov_ff E_DATA,KINOU ; E_DATA = KINOU call EEPROM_write ; EEPROM¤Øgain_p½ñ¹þ¤ß inc E_ADRS ; ½ñ¹þ¥¢¥É¥ì¥¹+1 mov_ff E_DATA,LEDmsec ; E_DATA = LEDmsec call EEPROM_write ; EEPROM¤Øgain_p½ñ¹þ¤ß clrf PBcnt ; PBcnt = 0 mov_fl SetCnt,1 call rev1_on call rev2_on call rev3_on call KINOU_on call LEDmsec_on clrf SetCnt call LED_Allreset cje_fl KINOU,1,ShiftPoint cje_fl KINOU,2,Tacho1 goto start2 return ;--------------------------------------------------------------------------------- ;¡¡EEPROM¥Ç¡¼¥¿½ñ¹þ(Äê·¿½èÍý:PIC16F62x,62xAÍÑ) ;--------------------------------------------------------------------------------- EEPROM_write movf E_DATA,0 ;¡¡w = ½ñ¹þ¥Ç¡¼¥¿ bsf STATUS,RP0 ;¡¡page1ÀÚÂØ movwf EEDATA ;¡¡EEDATA = w bcf STATUS,RP0 ; page0ÀÚÂØ movf E_ADRS,0 ;¡¡w = E_ADRS bsf STATUS,RP0 ; page1ÀÚÂØ movwf EEADR ; EEADR = w bsf EECON1,WREN ; ½ñ¹þµö²Ä movlw 55h ;¡¡(Äê·¿½èÍý) movwf EECON2 ;¡¡¡¡¡¡¡· movlw 0aah ;¡¡¡¡¡¡¡· movwf EECON2 ;¡¡¡¡¡¡¡· bsf EECON1,WR ;¡¡½ñ¹þ½ªÎ»³Îǧ¥Õ¥é¥° eewait btfsc EECON1,WR ;¡¡½ñ¹þ¤ß½ªÎ»ÂÔ¤Áloop goto eewait ;¡¡½ñ¹þ̤½ªÎ»¢ª½ñ¹þ½ªÎ»ÂÔ¤Á bcf EECON1,WREN ;¡¡½ñ¹þÉÔµö²Ä bcf STATUS,RP0 ;¡¡page0ÀÚÂØ return ;--------------------------------------------------------------------------------- ;EEPROM½é´üÃͤÎÀë¸À¤Î¥Æ¥¹¥È ; ¥·¥Õ¥È²óž¿ô­¡ = 1500rpm ; ¥·¥Õ¥È²óž¿ô­¢ = 3200rpm ; ¥·¥Õ¥È²óž¿ô­£ = 3600rpm ; ɽ¼¨µ¡Ç½¡¡ = 1(1:¥·¥Õ¥È¥Ý¥¤¥ó¥È¥¤¥ó¥¸¥±¡¼¥¿¡¢2,3:²óž¿ô7¥»¥°É½¼¨) ; LEDɽ¼¨»þ´Ö¡¡¡¡= 7¡Ê¡ß100ms¡Ë org 2100h de 1,5,3,2,3,6,1,7 end