¡°Microchip¹«Ë¾µÄµ¥Æ¬»úÂÊÏȲÉÓÃRISC(¾«¼òÖ¸Á¼ÆËã»ú)½á¹¹µÄ¸ßÐÔÄܼ۸ñ±ÈµÄǶÈëʽ¿ØÖÆÆ÷¡£
¡±1 PIC12XXµÄ½á¹¹
Microchip¹«Ë¾µÄµ¥Æ¬»úÂÊÏȲÉÓÃRISC(¾«¼òÖ¸Á¼ÆËã»ú)½á¹¹µÄ¸ßÐÔÄܼ۸ñ±ÈµÄǶÈëʽ¿ØÖÆÆ÷¡£
¸ÃPICµ¥Æ¬»ú¾ßÓиßËÙ¶È¡¢µÍ¹¤×÷µçѹ¡¢µÍ¹¦ºÄ¡¢½Ï´óµÄÊäÈëÊä³öÖ±½ÓÇý¶¯ÄÜÁ¦¡¢ÔÚÏß´®Ðбà³Ì¡¢Ð¾Æ¬µÄµÍ¼ÛλºÍСÌå»ýµÈÌØµã¡£Îª´Ë,Microchip¿ª·¢Á˸ߵµ¡¢Öеµ¡¢µÍµµ²»Í¬²ã´ÎϵÁжàÖÖÐͺŵIJúÆ·,PIC12XXÊÇÒ»¿î»ùÓÚEEPROMµÄ8λ΢¿ØÖÆÆ÷µÄÖеµPICµ¥Æ¬»ú,¾ßÓиßÐÔÄܵÄRISC CPU¡¢ÌØÊⵥƬ»ú¹¦ÄÜ¡¢µÍ¹¦ºÄ¹¦ÄÜ¡¢ÔöÇ¿ÐÍTimer 1ÍâÉ蹦ÄÜ,Ϊµ¥Æ¬»úµÄ¾«È·ÑÓʱ¼¼ÊõÌṩ¿É¿¿±£ÕÏ¡£ÆäÄÚ²¿½á¹¹Èçͼ1Ëùʾ¡£
1.1 Íⲿ½á¹¹Ìصã
¸Ãµ¥Æ¬»ú¹²8¸öÒý½Å,ÆäÖÐ6¸öÒý½Å¾ßÓжÀÁ¢·½Ïò¿ØÖƹ¦ÄܵÄI/OÒý½Å,ÆäÒý½Å½á¹¹Èçͼ2Ëùʾ¡£
ÆäÒý½Å¾ßÓи߹à/ÀµçÁ÷ÄÜÁ¦,¿ÉÖ±½ÓÇý¶¯LED¡£Ä£Äâ±È½ÏÆ÷Ä£¿é´øÓÐÒ»¸öÄ£Äâ±È½ÏÆ÷¡¢Æ¬ÉϿɱà³Ì±È½ÏÆ÷²Î¿¼µçѹ(CVREF)Ä£¿é¡¢À´×ÔÆ÷¼þÊäÈëÒý½ÅµÄ¿É±à³ÌÊäÈ븴ÓᢿÉÍⲿ·ÃÎÊ±È½ÏÆ÷Êä³ö¡£Timer 0´øÓÐ8λ¿É±à³ÌÔ¤·ÖƵÆ÷µÄ8λ¶¨Ê±Æ÷/¼ÆÊýÆ÷;ÔöÇ¿µÄTimer 1´øÓÐÔ¤·ÖƵÆ÷µÄ16λ¶¨Ê±Æ÷/¼ÆÊýÆ÷,ÍⲿѡͨÊäÈëģʽ,ͨ¹ýÁ½¸öÒý½Å¿ÉʵÏÖÔÚÏß´®Ðбà³Ì¡£
1.2 ÄÚ²¿½á¹¹Ìصã
¸ßÐÔÄܵÄRISC-CPU½ö35ÌõÖ¸Áî,³ýÌø×ªÖ¸ÁîÍâ,ËùÓÐÖ¸Áî¶¼Êǵ¥ÖÜÆÚ,ÆäʱÖÓÆµÂÊΪDC-20 MHz,Ö¸ÁîÖÜÆÚΪ0-200 ns;ÓнÏÇ¿µÄÖжϹ¦ÄÜ,8¼¶Éî¶ÈÓ²¼þ¶ÑÕ»,²ÉÓÃÖ±½Ó¡¢¼ä½ÓºÍÏà¶ÔѰַ·½Ê½;¿ÉÑ¡ÔñÄÚ²¿ºÍÍⲿÕñµ´Æ÷,ÄÚ²¿Îª4 MHz¸ß¾«¶ÈÕñµ´Æ÷,Æä³ö³§Ê±¾«¶ÈÒÑУ׼Ϊ¡À1% ;Äܽ«CPU´ÓÐÝÃßģʽ»½ÐѺͽøÈëÊ¡µçÐÝÃßģʽ,´øµÍ¹¦ºÄÉϵ縴λ(POR)¡¢ÉϵçÑÓʱ¶¨Ê±Æ÷(PWRT)ºÍÕñµ´Æ÷ÆðÕñ¶¨Ê±Æ÷(OST)¡¢Ç·Ñ¹¼ì²â(BOD)ºÍ¶ÀÁ¢Õñµ´Æ÷µÄ¿´ÃŹ·¶¨Ê±Æ÷;¿É¸´ÓÃMCLRÊäÈëÒý½Å,Òý½Åµçƽ±ä»¯¿É´¥·¢ÖжÏ,¾ßÓжÀÁ¢µÄ¿É±à³ÌÈõÉÏÀ¹¦ÄÜ¡¢¿É±à³Ì´úÂë±£»¤¡¢¸ßÄ;ÃÐÔµÄÉÁ´æ/EEPROM´æ´¢µ¥Ôª,ÉÁ´æÄÍд´ÎÊý´ï10 ´Î,EEPROMÄÍд´ÎÊý´ï10 ´Î,ÉÁ´æ/Êý¾ÝEEPROMµÄÊý¾Ý±£³ÖÆÚ>40Äê¡£
1.3 Timer 1¹¤×÷ÌØµã
Timer 1Ä£¿éÊÇÓÉÁ½¸ö¿É¶ÁдµÄ8λ¼Ä´æÆ÷(TMR1HºÍTMR1L)×é³ÉµÄ16λ¶¨Ê±Æ÷/¼ÆÊýÆ÷¡£TMR1¼Ä´æÆ÷¶Ô(TMR1H¡¢TMR1L)´Ó0000hµÝÔöµ½FFFFhºó,¼ÆÂú»ØÁãµ½0000h¡£Èç¹ûÔÊÐíTimer 1ÖжÏ,ÔòÒç³öʱ»á²úÉúTimer 1Öжϡ£¸ÃÖжϿÉͨ¹ýÖÃλ/ÇåÁãTMR1IEλÀ´ÔÊÐí/½ûÖ¹¡£Timer 1ÓÐ3ÖÖ¹¤×÷ģʽ:ͬ²½¶¨Ê±Æ÷ģʽ¡¢Í¬²½¼ÆÊýÆ÷ģʽ¡¢Òì²½¼ÆÊýÆ÷ģʽ¡£ÆäģʽÓÉʱÖÓÑ¡ÔñλTMR1CS(T1CON)ºÍͬ²½¿ØÖÆÎ»T1SYNC¾ö¶¨,Èçͼ3Ëùʾ¡£
ÔÚ¶¨Ê±Æ÷ģʽÏÂ,Timer 1ÔÚÿ¸öÖ¸ÁîÖÜÆÚµÝÔö¡£¶øÔÚ¼ÆÊýÆ÷ģʽÏÂ,Timer 1ÔÚT1CKIÒý½ÅÉÏÍⲿʱÖÓµÄÿ¸öÉÏÉýÑØµÝÔö¡£Timer 1¿ÉÒÔͨ¹ýTMR1ON(T1CON<0>)¿ØÖÆÎ»À´´ò¿ªºÍ¹Ø±Õ¡£Timer 1»¹ÓÐÒ»¸öÄÚ²¿¡°¸´Î»ÊäÈ롱,¿ÉÓÉÒ»¸öCCPÄ£¿é²úÉú¡£Timer 1¿ÉÒÔÍâ½Ó¾§ÌåÕñµ´Æ÷,µ±Timer 1µÄÕñµ´Æ÷±»Ê¹ÄÜ(T1OSCENλÖÃ1)ʱ,T1OSIºÍT1OSOÒý½ÅÉ趨ΪÊäÈëÒý½Å¡£Ò²¾ÍÊÇ˵,ÆäÏàÓ¦µÄTRISÖµ±»ºöÂÔ¡£
2 ¾«È·ÑÓʱ¼¼Êõ
2.1 ÀíÂÛ·ÖÎö
PIC12XXµ¥Æ¬»úÄÚÖþ§ÕñµÄƵÂÊΪ4 MHz,Æä¾«¶ÈΪ¡À1% ,ÔòʱÖÓÖÜÆÚΪ0.25 us,µ¥Ö¸ÁîÔËÐÐʱ¼äΪ1 us,ÆäÎó²î¾ùΪ1%us,µ¼Ö½ϴóµÄÀÛ»ýÎó²î,¹Ê²»ÄÜÖ±½ÓÀûÓÃÆäÄÚ²¿¾§Õñ½øÐо«È·ÑÓʱ¡£Îª´ËÐèÒª²ÉÓø߾«¶ÈµÄÍⲿʱÖÓÐźÅ,ÓÖÓÉÓÚTimer 1Ϊ16λ,¼ÆÂú´ÎÊýΪ2 ´Î,Ϊ±ãÓÚ¼ÆËã²ÉÓÃÆµÂÊΪ32768Hz,¼´215Hz,¾«¶ÈΪ5¡Á10-6,ÒÔ´Ë×÷ΪʱÖÓ,¼ÆÂúTimer 1Ϊ2 s,Èç¹ûÓøþ§Õñ×÷ΪʱÖÓ,°ëÄêµÄ×î´óÎó²î²»»á³¬¹ý1 min¡£Í¼4ΪÍâ½Ó¾§ÕñÐźŷ¢Éúµç·ÔÀíͼ¡£
ÓÉÓÚPIC12XXÖ¸ÁîÔËÐÐÊǰ´ÄÚ²¿¾§Õñ½øÐеÄ,ΪÌá¸ßµ¥Æ¬µÄÑÓʱ¾«¶È,²ÉÓÃÍâ½Ó¾§ÕñÐźÅ×÷ΪʱÖÓÐźÅ,ÀûÓõ¥Æ¬»úµÄTimer 1½øÐÐÖжÏÑÓʱ,¼´¿ÉʵÏָ߾«¶ÈµÄÈÎÒâʱ¼äÑÓʱ¡£
2.2 ÑÓʱ·½·¨
¾¹ýÀíÂÛ·ÖÎö,²ÉÓÃͼ5ËùʾµÄ»ù±¾µç·½øÐо«È·ÑÓʱ¡£ÓÉÓÚ²ÉÓõÄÊÇ32786 HzʱÖÓ,Timer 1Ϊ16λ,Òò´Ë²ÉÓÃÖжÏÑÓʱ,µ±Timer 1³õÖµÖÃΪ0000Hʱ,ÖжÏÒ»´ÎÑÓʱʱ¼äΪ2 s;µ±Timer 1³õÖµÖÃΪ8000Hʱ,ÖжÏÒ»´ÎÑÓʱʱ¼äΪ1 s¡£¶ÔÓÚ´óÓÚ»òµÈÓÚ2 sµÄ³¤ÑÓʱ,²ÉÓÃTimer1ÖÃ0000H³õÖµ;¶ÔÓÚ´óÓÚ1 sµÄ³¤ÑÓʱ,²ÉÓÃTimer1ÖÃ8000H³õÖµ;¶ÔÓÚСÓÚ1 sµÄ¶ÌÑÓʱ,²ÉÓÃTimer 1ÖÃÔ¤Ëã³õÖµ,ÖжÏÒ»´ÎÍê³ÉËùÓжÌÑÓʱ,ÕâÑù¿É´ó´óÌá¸ßÑÓʱµÄ¾«¶È¡£
2.3 ÑÓʱ¹Ø¼ü×Ó³ÌÐò
ÓÉÓÚ¾«È·ÑÓʱ²ÉÓõÄÊÇÍⲿ¾§Õñ,ÔòTimer 1½ÓÍⲿ¾§ÕñµÄ³õʼ»¯³ÌÐò²ÉÓÃÈçϾ«¼ò³ÌÐò:
CLRF T1 CON ;Stop Timer1,Internal Clock Source
;T1 oscillator disabled,prescaler = 1:1
CLRF TMR1H ;Clear Timer1 High byte register
CLRF TMR1L ;Clear Timer1 Low byte register
CLRF INTCON ;Disable interrupts
BSF STATUS,RP0 ;Bank1
CLRF PIE1;Disable peripheral interrupts
BCF STATUS,RP0 ;BankO
CLRF PIR1;Clear pe ripheral interrupts Flags
MOVLW 0x32 ;External Clock source with 1:8 prescaler
MOVWF T1CON ;Clock source is synchronized to device
;Timerl is stopped and T1 OSC is disabled
BSF T1CON,TMR1ON ;Timerl starts to increment
;The Timerl interrupt is disabled,do poling on the overflow bit
T1_OVFL_WAIT
BTFSS PIR1,TMR1IF
GOTO T1_OVFL_WAIT
;Timer has overflowed
BCF PIR1,TMR1IF
¸ù¾ÝÑÓʱ·½·¨·ÖÎö,ÖжÏÖóõÖµ²ÉÓÃÈçϳÌÐò:
load_initial_s
bcf T1CON,TMR1ON
CLRF TMR1H; Clear Low byte,Ensures no rolover into
TMR1H,Value to load into TMR1H
MOVLW 0X80 ;Value to load into TMR1H,Write High byte
MOVWF TMR1H ;
MOVLW 0X00 ;Value to load into TMR1L,Write Low byte
ADDWF TMR1L;one second intrupt one time run 262162 Tcy,i.e.0.262162s¡£soset tmr1
BSF T1CON,TMR1ON
load_initial_ms
bcf T1CON,TMR1ON
CLRF TMR1L;Clear Low byte,Ensures no rolover into
TMR1H,Value to load into TMR1H
MOVLW 0Xxx;the value is preparative worked out
MOVWF TMR1H;
MOVLW 0Xxx ;the value is preparative worked out
MOVWF TMR1L;
BSF T1CON,TMR1ON
³ÌÐò³õʼ»¯ºó,ͨ¹ýÔ¤ÖóõÖµ,¼ÓÉϳÌÐòµÄÆäËû½á¹¹¡£¾Í¿ÉÒÔʵÏÖPICµÄ¾«È·ÑÓʱ¡£
3 ½áÊøÓï
¼øÓÚPIC12XXµ¥Æ¬»úµÄ¹¦ÄÜÌØµãºÍÓŵã,²ÉÓÃÍâ½Ó¾§ÕñºÍTimer 1Öжϼ¼Êõ,¿ÉʵÏֽϾ«È·µÄÈÎÒâÑÓʱ¡£ÁíÍâ¡£Microchip¹«Ë¾µÄPICϵÁе¥Æ¬»ú¾ßÓÐʵÓᢵͼۡ¢Ò×ѧ¡¢Ê¡µç¡¢¸ßËÙºÍÌå»ýСµÈÌØµã,»¹¾ßÓе͹¦ºÄ˯Ãß¡¢µôµç¸´Î»Ëø¶¨¡¢Éϵ縴λµç·¡¢¿´ÃŹ·µç·µÈ¹¦ÄÜ,¶øÇÒÍâΧÆ÷¼þÉÙ¡¢Õ¼ÓÿռäС¡¢³É±¾µÍ,±£Ãܼ¼ÊõҲʮ·Ö¿É¿¿,¿É×î´óÏ޶ȵر£»¤¿ª·¢ÕßµÄÀûÒæ¡£Òò´Ë,ÔÚ¹¤Òµ¿ØÖÆ¡¢ÒÇÆ÷ÒÇ±í¡¢¼ÆËã»ú¡¢¼ÒµçµÈÖî¶àÁìÓò¾ßÓм«Æä¹ã·ºµÄÓ¦ÓÃǰ¾°¡£
·ÖÏíµ½£º
²ÂÄãϲ»¶