±ÜÍ÷Áí·×¡§18912¡¡¡¡¡ÊËÜÆü¡§2¡¡¡¡ºòÆü¡§0¡Ë

PIC¤ò¥Ü¥¿¥óÅÅÃÓ¤Ç¶îÆ°¤µ¤»¤ë¾ì¹ç¡¢PIC¤¬Æ°ºî¤·¤Æ¤¤¤Ê¤¤»þ¤ÎÅÅÎϤòºÇ¾®¤Ë¤ª¤µ¤¨¤ë»ö¤Ï
Í­ÍѤǤ¢¤ë¡£
º£²ó¡¢PIC¤ò¥¹¥ê¡¼¥×¾õÂ֤ˤ¹¤ë¼êË¡¤È¥¹¥ê¡¼¥×¾õÂÖ¤«¤éÉüµ¢¤µ¤»¤ë¼êË¡¤òXC8¤Ç³Îǧ
¤·¤¿¤Î¤Çµ­Ï¿¤Ë»Ä¤·¤Æ¤ª¤¯¡£¡¡2013/10/06

¡Ú¥Ý¥¤¥ó¥È¡Û
¡¦PIC¤ò¥¹¥ê¡¼¥×¾õÂ֤ˤ¹¤ë
while(1) {
¡¡¡¡SLEEP(); //PIC¤ò¥¹¥ê¡¼¥×¾õÂ֤ˤ¹¤ë
¡¡¡¡NOP(); //sleep¤«¤éÉüµ¢¸å¡¢É¬¤º1Ì¿Îá¼Â¹Ô¤µ¤ì¤ë¥À¥ß¡¼Ì¿Îá
}

¡¦PIC¤ò¥¹¥ê¡¼¥×¾õÂÖ¤«¤éÉüµ¢¤µ¤»¤ë
RB0/INT³ä¤ê¹þ¤ß¤ÇÉüµ¢¤µ¤»¤ë¡£

TS3V0003.JPG16F628A¥Ô¥ó¥Ç¥¶¥¤¥ó²èÁü.jpg


XC8¤Î¥×¥í¥°¥é¥à

/* 
 * File:   sleep_main.c
 * Author: ´ÉÍý¿Í
 *
 * Created on 2013/10/06, 12:06
 */

#include <stdio.h>
#include <stdlib.h>
#include <xc.h>

#pragma config BOREN = OFF, CPD = OFF, FOSC = INTOSCIO, MCLRE = OFF, WDTE = OFF, CP = OFF,  LVP = OFF, PWRTE = ON

/*PIC¤ò¥¹¥ê¡¼¥×¤Ë¤¹¤ë¼êË¡¤ÈÉüµ¢¤µ¤»¤ë¼êË¡¤Î³Îǧ
 * RB0/INT³ä¹þ¤ß¤Ë¤è¤êPIC¤ò¥¹¥ê¡¼¥×¾õÂÖ¤«¤éÉüµ¢¤µ¤»¤ë¼êË¡
 * 16F628A    XC8 v1.20
 * RA1:LED, RB0:¥¹¥¤¥Ã¥Á
 */
int main(int argc, char** argv) {
    PORTA = 0b00000000; //PORTA¤ÎÃæ¿È¤ò¤­¤ì¤¤¤Ë¤¹¤ë
    PORTB = 0b00000000; //PORTB¤ÎÃæ¿È¤ò¤­¤ì¤¤¤Ë¤¹¤ë
    TRISA = 0b00110000; //PORTA¤ÎRA5,RA4¤Ï1:ÆþÎϤˡ¢Â¾¤Ï0:½ÐÎϤËÀßÄê
    TRISB = 0b00011001; //PORTB¤ÎRB4,RB3,RB0¤Ï1:ÆþÎϤˡ¢Â¾¤Ï0:½ÐÎϤËÀßÄê
    CMCON = 0b00000111; //PORTA¤Î¥³¥ó¥Ñ¥ì¡¼¥¿µ¡Ç½¤Ï»ÈÍѤ·¤Ê¤¤
    OPTION_REGbits.nRBPU = 0; //0:PORTB¤ÎÆâÉô¥¦¥£¡¼¥¯¥×¥ë¥¢¥Ã¥×¤ò»ÈÍÑ
    OPTION_REGbits.INTEDG = 0; //0:RB0/INTΩ²¼¤ê¥¨¥Ã¥¸¤Ç³ä¤ê¹þ¤ß

    INTCONbits.INTF = 0; //RB0/INT³ä¹þ¤ß¥Õ¥é¥°¥¯¥ê¥¢
    INTCONbits.INTE = 1; //RB0/INT³ä¤ê¹þ¤ßµö²Ä
    INTCONbits.GIE = 1; //Á´Âγä¹þ¤ßµö²Ä

    while(1) {
        //RB0/INT³ä¹þ¤ß¤Ë¤è¤êPIC¤ò¥¹¥ê¡¼¥×¾õÂÖ¤«¤éÉüµ¢¤µ¤»¤ë¼êË¡
        SLEEP(); //PIC¤ò¥¹¥ê¡¼¥×¾õÂ֤ˤ¹¤ë
        NOP(); //sleep¤«¤éÉüµ¢¸å¡¢É¬¤º1Ì¿Îá¼Â¹Ô¤µ¤ì¤ë¥À¥ß¡¼Ì¿Îá
    }
    return (EXIT_SUCCESS);
}

static void interrupt isr(void) {
    INTCONbits.INTE = 0; //RB0/INT³ä¤ê¹þ¤ß¶Ø»ß
    INTCONbits.GIE = 0; //Á´Âγä¹þ¤ß¶Ø»ß

    if(INTCONbits.INTF == 1) { //³ä¹þ¤ß¼ï¤¬RB0/INT³ä¹þ¤ß¤Î¾ì¹ç
        if(PORTAbits.RA1 == 1) { //RA1LED¤¬ÅÀÅô¤·¤Æ¤¤¤¿¾ì¹ç
            PORTAbits.RA1 = 0; //RA1¤òLow¤Ë
        }
        else { //RA1LED¤¬¾ÃÅô¤·¤Æ¤¤¤¿¾ì¹ç
            PORTAbits.RA1 = 1; //RA1¤òHigt¤Ë
        }
    }
    INTCONbits.INTF = 0; //RB0/INT³ä¹þ¤ß¥Õ¥é¥°¥¯¥ê¥¢
    INTCONbits.INTE = 1; //RB0/INT³ä¤ê¹þ¤ßµö²Ä
    INTCONbits.GIE = 1; //Á´Âγä¹þ¤ßµö²Ä
}



¡ú¤³¤Î¾ðÊó¤ÏÌò¤ËΩ¤Á¤Þ¤·¤¿¤«¡©

ÁªÂò»è Åêɼ
¤Ï¤¤ 59  
ÉáÄÌ 34  
¤¤¤¤¤¨ 36  

źÉÕ¥Õ¥¡¥¤¥ë: fileTS3V0003.JPG 1616·ï [¾ÜºÙ] file16F628A¥Ô¥ó¥Ç¥¶¥¤¥ó²èÁü.jpg 1643·ï [¾ÜºÙ]