MPLAB X IDE v3.05 XC8 16F88 7seg アノードコモン ダイナミック点灯

// *****************************************************************************
// < コンパイラ MPLAB X XC8 > 怪答PIC 2015/07/29
// 16F88
// 7seg LED  4桁 ダイナミック点灯 ( 7seg アノードコモン )
// *****************************************************************************
// 1 RA2 AN2
// 2 RA3 AN3
// 3 RA4 AN4
// 4 RA5
// 5 Vss E
// 6 RB0 LED 7seg a
// 7 RB1 LED 7seg b
// 8 RB2 LED 7seg c
// 9 RB3 LED 7seg d
// 10 RB4 LED 7seg e
// 11 RB5 LED 7seg f
// 12 RB6 AN5 LED 7seg g
// 13 RB7 AN6 LED 7seg dp
// 14 Vdd + 5V
// 15 RA6
// 16 RA7
// 17 RA0 AN0
// 18 RA1 AN1
// *****************************************************************************

#include <xc.h>

#define _XTAL_FREQ 4000000 // 4MHz

// 16F88

// CONFIG1
#pragma config FOSC = INTOSCIO // Oscillator Selection bits (INTRC oscillator; port I/O function on both RA6/OSC2/CLKO pin and RA7/OSC1/CLKI pin)
#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = ON // Power-up Timer Enable bit (PWRT enabled)
#pragma config MCLRE = OFF // RA5/MCLR/VPP Pin Function Select bit (RA5/MCLR/VPP pin function is MCLR)
#pragma config BOREN = ON // Brown-out Reset Enable bit (BOR enabled)
#pragma config LVP = OFF // Low-Voltage Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming)
#pragma config CPD = OFF // Data EE Memory Code Protection bit (Code protection off)
#pragma config WRT = OFF // Flash Program Memory Write Enable bits (Write protection off)
#pragma config CCPMX = RB3 // CCP1 Pin Selection bit (CCP1 function on RB3)
#pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off)

// CONFIG2
#pragma config FCMEN = OFF // Fail-Safe Clock Monitor Enable bit (Fail-Safe Clock Monitor disabled)
#pragma config IESO = OFF // Internal External Switchover bit (Internal External Switchover mode disabled)

// *****************************************************************************


// *****************************************************************************

void main()
{

OSCCON = 0b01100000; // 内蔵クロックの周波数を4MHzに設定

unsigned char i; // 制御変数
unsigned char ptn[10] = {
// gfedcba // 7セグメントLED用点灯パターン (アノードコモン)
0b11000000, // 0
0b11111001, // 1
0b10100100, // 2
0b10110000, // 3
0b10011001, // 4
0b10010010, // 5
0b10000011, // 6
0b11111000, // 7
0b10000000, // 8
0b10011000 // 9
};

TRISA = 0x00; // PORTA入出力設定
TRISB = 0x00; // PORTB入出力設定
PORTA = 0x00; // PORTA初期化
PORTB = 0xFF; // PORTB初期化

while(1){ // 無限ループ

for(i = 0; i <= 50; i++)
{ // 1秒表示
PORTB = ptn[4]; // カウント値 i に対応する点灯パターンをPORTBに設定
PORTA = 0b00000001;
__delay_us(5000);
PORTB = ptn[3]; // カウント値 i に対応する点灯パターンをPORTBに設定
PORTA = 0b00000010;
__delay_us(5000);
PORTB = ptn[2]; // カウント値 i に対応する点灯パターンをPORTBに設定
PORTA = 0b01000000;
__delay_us(5000);
PORTB = ptn[1]; // カウント値 i に対応する点灯パターンをPORTBに設定
PORTA = 0b10000000;
__delay_us(5000);

}

for(i = 0; i <= 50; i++)
{ // 1秒表示
PORTB = ptn[9]; // カウント値 i に対応する点灯パターンをPORTBに設定
PORTA = 0b00000001;
__delay_us(5000);
PORTB = ptn[8]; // カウント値 i に対応する点灯パターンをPORTBに設定
PORTA = 0b00000010;
__delay_us(5000);
PORTB = ptn[7]; // カウント値 i に対応する点灯パターンをPORTBに設定
PORTA = 0b01000000;
__delay_us(5000);
PORTB = ptn[6]; // カウント値 i に対応する点灯パターンをPORTBに設定
PORTA = 0b10000000;
__delay_us(5000);

}
}
}


 16F88_012.c