#include //#include #pragma config PLLDIV = 5 // (20 MHz crystal on PICDEM FS USB board) #pragma config CPUDIV = OSC1_PLL2 #pragma config USBDIV = 2 // Clock source from 96MHz PLL/2 #pragma config FOSC = HSPLL_HS #pragma config FCMEN = OFF #pragma config IESO = OFF #pragma config PWRT = OFF #pragma config BOR = ON #pragma config BORV = 3 #pragma config VREGEN = ON //USB Voltage Regulator #pragma config WDT = OFF #pragma config WDTPS = 32768 #pragma config MCLRE = ON #pragma config LPT1OSC = OFF #pragma config PBADEN = OFF //#pragma config CCP2MX = ON #pragma config STVREN = ON #pragma config LVP = OFF //#pragma config ICPRT = OFF // Dedicated In-Circuit Debug/Programming #pragma config XINST = OFF // Extended Instruction Set #pragma config CP0 = OFF #pragma config CP1 = OFF //#pragma config CP2 = OFF //#pragma config CP3 = OFF #pragma config CPB = OFF //#pragma config CPD = OFF #pragma config WRT0 = OFF #pragma config WRT1 = OFF //#pragma config WRT2 = OFF //#pragma config WRT3 = OFF #pragma config WRTB = OFF // Boot Block Write Protection #pragma config WRTC = OFF //#pragma config WRTD = OFF #pragma config EBTR0 = OFF #pragma config EBTR1 = OFF //#pragma config EBTR2 = OFF //#pragma config EBTR3 = OFF #pragma config EBTRB = OFF void InitInterTimer0 (void); void init(void); #define _XTAL_FREQ 48000000 //__delay_ms unsigned char CH[10] = { 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; unsigned char gCT=0; unsigned short gNo=0,gNo3,gNo2,gNo1,gNo0; void init(void) { ADCON1 = 0b00001111; TRISA = 0b00000000; TRISB = 0b00000000; TRISC = 0b00110000; //D-,D+ TRISD = 0b00000000; TRISE = 0b00000011; //SW1,2=INPUT LED=OUTPUT LATA = 0b00000000; LATB = 0b00000000; LATC = 0b00000000; LATD = 0b00000000; LATE = 0b00000000; } // 割込みサービスルーチン static void interrupt isr() { switch (gCT) { case 0: gCT++; PORTD=CH[gNo3]; PORTB=~0X01; break; case 1: gCT++; PORTD=CH[gNo2]; PORTB=~0X02; break; case 2: gCT++; PORTD=CH[gNo1]; PORTB=~0X04; break; case 3: gCT++; PORTD=CH[gNo0]; PORTB=~0X08; break; default: gCT=0; break; } // タイマ0割込みフラグをクリア T0IF = 0; } // タイマ0割込み設定関数 void InitInterTimer0 (void) { // クロック源を内部クロックに設定 T0CS = 0; // プリスケーラをタイマ0に割り当て PSA = 0; // プリスケーラ値を128に設定 T0CONbits.T0PS0 = 1;//PIC18F4553 T0CONbits.T0PS1 = 1;//PIC18F4553 T0CONbits.T0PS2 = 0;//PIC18F4553 // TMR0レジスタをクリア TMR0 = 0x0000; // タイマ0割込みフラグをクリア T0IF = 0; // タイマ0割込みの許可 T0IE = 1; } void main(void) { int i,j; init(); InitInterTimer0(); // 割込み全体の許可 GIE = 1; unsigned short L1,L2,L3,L4; while(1) { for(i=0;i<10;i++) { for(j=0;j<100;j++){__delay_ms( 10 );} gNo++; L1=gNo/10; L2=L1/10; L3=L2/10; L4=L3/10; gNo3=(L3-L4*10); gNo2=(L2-L3*10); gNo1=(L1-L2*10); gNo0=(gNo-L1*10); } } }