#include #include "composite32-high4.h" #include "lib_composite32-high.h" //外付けクリスタル with PLL (15倍) #pragma config PMDL1WAY = OFF, IOL1WAY = OFF #pragma config FPLLIDIV = DIV_1, FPLLMUL = MUL_15, FPLLODIV = DIV_1 #pragma config FNOSC = PRIPLL, FSOSCEN = OFF, POSCMOD = XT, OSCIOFNC = OFF #pragma config FPBDIV = DIV_1, FWDTEN = OFF, JTAGEN = OFF, ICESEL = ICS_PGx1 //sounddata配列 低いド〜3オクターブ分の周期カウンタ値、PR3に書き込むと音程設定される const unsigned short sounddata[]={ 25653,24213,22854,21572,20361,19218,18139,17121,16160,15253,14397,13589, 12826,12106,11427,10786,10180, 9609, 9069, 8560, 8080, 7626, 7198, 6794, 6413, 6053, 5713, 5393, 5090, 4804, 4534, 4280, 4040, 3813, 3599, 3397, 3206 }; void main(void){ int i; //ポートの初期設定 TRISA = 0x0010; // RA4は入力 CNPUA = 0x0010; // RA4をプルアップ ANSELA = 0x0000; // 全てデジタル TRISB = KEYSTART | KEYFIRE | KEYUP | KEYDOWN | KEYLEFT | KEYRIGHT;// ボタン接続ポート入力設定 CNPUBSET=KEYSTART | KEYFIRE | KEYUP | KEYDOWN | KEYLEFT | KEYRIGHT;// プルアップ設定 ANSELB = 0x0000; // 全てデジタル LATACLR=2;// RA1=0(ボタンモード) RPB13R=5;//RPB13ピンにOC4を割り当て OC4R=0; OC4CON=0x000b;// Timer3ベース、Toggleモード OC4CONSET=0x8000;//OC4スタート T3CON=0x0030;// プリスケーラ1:8 PR3=0; T3CONSET=0x8000;// タイマ3スタート init_composite(); // ビデオ出力システムの初期化 while(1){ for(i=0;i<=36;i++){ //60分のn秒ウェイト drawcount=0; while(drawcount<60) asm("wait"); PR3=sounddata[i];//音程セット } } }