/***********************************************************************/ /* */ /* FILE :TEST0019_R8CM11A.c */ /* DATE :Fri, Feb 25, 2011 */ /* DESCRIPTION :Main Program */ /* CPU GROUP :Other */ /* */ /* This file is generated by Renesas Project Generator (Ver.4.18). */ /* NOTE:THIS IS A TYPICAL EXAMPLE. */ /***********************************************************************/ //************************************************* // Define Address(R8C/M11Aマイコン用) //************************************************* #pragma ADDRESS p1_addr 00AFH #pragma ADDRESS pd1_addr 00A9H #pragma ADDRESS p3_addr 00B1H #pragma ADDRESS pd3_addr 00ABH #pragma ADDRESS p4_addr 00B2H #pragma ADDRESS pd4_addr 00ACH #pragma ADDRESS PRCR_addr 0013H #pragma ADDRESS OCOCR_addr 0021H #pragma ADDRESS EXCKCR_addr 0020H #pragma ADDRESS CSKCR_addr 0022H #pragma ADDRESS CKSTPR_addr 0024H //************************************************* // Define Structure //************************************************* struct bit_def { char b0:1; char b1:1; char b2:1; char b3:1; char b4:1; char b5:1; char b6:1; char b7:1; }; union byte_def{ struct bit_def bit; char byte; }; //************************************************* // Define Port register and Port direction register //************************************************* union byte_def p1_addr; #define p1 p1_addr.byte #define p1_0 p1_addr.bit.b0 #define p1_1 p1_addr.bit.b1 #define p1_2 p1_addr.bit.b2 #define p1_3 p1_addr.bit.b3 #define p1_4 p1_addr.bit.b4 #define p1_5 p1_addr.bit.b5 #define p1_6 p1_addr.bit.b6 #define p1_7 p1_addr.bit.b7 // union byte_def pd1_addr; #define pd1 pd1_addr.byte #define pd1_0 pd1_addr.bit.b0 #define pd1_1 pd1_addr.bit.b1 #define pd1_2 pd1_addr.bit.b2 #define pd1_3 pd1_addr.bit.b3 #define pd1_4 pd1_addr.bit.b4 #define pd1_5 pd1_addr.bit.b5 #define pd1_6 pd1_addr.bit.b6 #define pd1_7 pd1_addr.bit.b7 // union byte_def p3_addr; #define p3 p3_addr.byte #define p3_0 p3_addr.bit.b0 #define p3_1 p3_addr.bit.b1 #define p3_2 p3_addr.bit.b2 #define p3_3 p3_addr.bit.b3 #define p3_4 p3_addr.bit.b4 #define p3_5 p3_addr.bit.b5 #define p3_6 p3_addr.bit.b6 #define p3_7 p3_addr.bit.b7 // union byte_def pd3_addr; #define pd3 pd3_addr.byte #define pd3_0 pd3_addr.bit.b0 #define pd3_1 pd3_addr.bit.b1 #define pd3_2 pd3_addr.bit.b2 #define pd3_3 pd3_addr.bit.b3 #define pd3_4 pd3_addr.bit.b4 #define pd3_5 pd3_addr.bit.b5 #define pd3_6 pd3_addr.bit.b6 #define pd3_7 pd3_addr.bit.b7 // union byte_def p4_addr; #define p4 p4_addr.byte #define p4_0 p4_addr.bit.b0 #define p4_1 p4_addr.bit.b1 #define p4_2 p4_addr.bit.b2 #define p4_3 p4_addr.bit.b3 #define p4_4 p4_addr.bit.b4 #define p4_5 p4_addr.bit.b5 #define p4_6 p4_addr.bit.b6 #define p4_7 p4_addr.bit.b7 // union byte_def pd4_addr; #define pd4 pd4_addr.byte #define pd4_0 pd4_addr.bit.b0 #define pd4_1 pd4_addr.bit.b1 #define pd4_2 pd4_addr.bit.b2 #define pd4_3 pd4_addr.bit.b3 #define pd4_4 pd4_addr.bit.b4 #define pd4_5 pd4_addr.bit.b5 #define pd4_6 pd4_addr.bit.b6 #define pd4_7 pd4_addr.bit.b7 //************************************************* // Define Protect register //************************************************* union byte_def PRCR_addr; #define PRCR PRCR_addr.byte #define PRC0 PRCR_addr.bit.b0 #define PRC1 PRCR_addr.bit.b1 #define PRC_2 PRCR_addr.bit.b2 #define PRC3 PRCR_addr.bit.b3 #define PRC4 PRCR_addr.bit.b4 #define PRC_5 PRCR_addr.bit.b5 #define PRC_6 PRCR_addr.bit.b6 #define PRC_7 PRCR_addr.bit.b7 //************************************************* // Define OSC register //************************************************* union byte_def OCOCR_addr; #define OCOCR OCOCR_addr.byte #define HOCOE OCOCR_addr.bit.b0 #define LOCODIS OCOCR_addr.bit.b1 #define OCOCR_2 OCOCR_addr.bit.b2 #define OCOCR_3 OCOCR_addr.bit.b3 #define OCOCR_4 OCOCR_addr.bit.b4 #define OCOCR_5 OCOCR_addr.bit.b5 #define OCOCR_6 OCOCR_addr.bit.b6 #define OCOCR_7 OCOCR_addr.bit.b7 union byte_def EXCKCR_addr; #define EXCKCR EXCKCR_addr.byte #define CKPT0 EXCKCR_addr.bit.b0 #define CKPT1 EXCKCR_addr.bit.b1 #define EXCKCR_2 EXCKCR_addr.bit.b2 #define EXCKCR_3 EXCKCR_addr.bit.b3 #define EXCKCR_4 EXCKCR_addr.bit.b4 #define EXCKCR_5 EXCKCR_addr.bit.b5 #define XRCUT EXCKCR_addr.bit.b6 #define EXCKCR_7 EXCKCR_addr.bit.b7 union byte_def CSKCR_addr; #define CSKCR CSKCR_addr.byte #define PHISSEL0 CSKCR_addr.bit.b0 #define PHISSEL1 CSKCR_addr.bit.b1 #define PHISSEL2 CSKCR_addr.bit.b2 #define CSKCR_3 CSKCR_addr.bit.b3 #define CSKCR_4 CSKCR_addr.bit.b4 #define WAITM CSKCR_addr.bit.b5 #define HSCKSEL CSKCR_addr.bit.b6 #define CSKCR_7 CSKCR_addr.bit.b7 union byte_def CKSTPR_addr; #define CKSTPR CKSTPR_addr.byte #define STPM CKSTPR_addr.bit.b0 #define WCKSTP CKSTPR_addr.bit.b1 #define PSCSTP CKSTPR_addr.bit.b2 #define CKSTPR_3 CKSTPR_addr.bit.b3 #define CKSTPR_4 CKSTPR_addr.bit.b4 #define CKSTPR_5 CKSTPR_addr.bit.b5 #define CKSTPR_6 CKSTPR_addr.bit.b6 #define SCKSEL CKSTPR_addr.bit.b7 //************************************************* // Define Function //************************************************* void wat(void); void Int_OSC(void); void main(void) { unsigned int LEDlst = 0; // ******************************* // 1.Initialized segment // ******************************* // (1)Select Osc (Select 20MHz Internal OSC) Int_OSC(); // (2)Define I/O PORT pd1=0b11111110; //Derection p1=0x00; //Port1 Initialize // ******************************* // 2.Program main // ******************************* LEDlst = 1; while(1){ wat(); if(LEDlst == 1){ LEDlst = 2; }else if(LEDlst > 127){ LEDlst = 1; }else{ LEDlst = LEDlst * 2; } p1 = LEDlst; } } //****************************************************************************************** // Function Name : Int_OSC // Title : 高速オンチップオシレータ(20MHz)にする // Input : // Output : // Description : ※実測値 20.15MHz //****************************************************************************************** void Int_OSC(void) { unsigned int lp; // 1.割り込み禁止 asm("FCLR I"); // 2.レジスタの書き込みを許可する PRC0 = 1; //Write enable EXCKCR、OCOCR、SCKCR、PHISEL、CKSTPR、CKRSCR、BAKCR、FRV1、FRV2 // 3.高速オンチップオシレータを発振させる(OCOCR) HOCOE = 1; //高速オンチップオシレータ発振 // 4.テスト用設定(システムクロックをP4_7に出力する)(EXCKCR) // CKPT1 = 1; //(TEST用 システムクロック出力設定) // CKPT0 = 0; //(TEST用 システムクロック出力設定) // 5.CPUクロック分周比選択ビット(分周なし)(SCKCR) PHISSEL0 = 0; PHISSEL1 = 0; PHISSEL2 = 0; // 6.高速オンチップオシレータクロック選択(SCKCR) HSCKSEL = 1; // 7.全クロック停止制御ビット(0:クロック発振)(CKSTPR) STPM = 0; // 8.システム基準クロック選択ビット(高速)(CKSTPR) SCKSEL = 1; // 9.Wait for(lp=0;lp<100;lp++){ asm("NOP"); } // 10.レジスタの書き込みを不許可にする PRC0 = 0; //Write disable EXCKCR、OCOCR、SCKCR、PHISEL、CKSTPR、CKRSCR、BAKCR、FRV1、FRV2 } //****************************************************************************************** // Function Name : wat // Title : wait function // Input : // Output : // Description : 20MHz用 //****************************************************************************************** void wat(void) { unsigned int i,i1,i2; for( i2=0 ; i2<160 ; i2++ ){ for( i1=0 ; i1<10 ; i1++ ){ for( i=0 ; i<100 ; i++ ){ asm("NOP"); } } } }