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 |