/************************************* piotest1.c 2002.04.26 RIKIYA SH2_7045F PD24〜31 DIP-SW INPUT PD16〜23 LED OUTPUT PD8〜15 OUTPUT PD0〜7 OUTPUT PC8〜15 OUTPUT PC0〜7 OUTPUT /*************************************/ #include "sh7040s.h" void boot(void); void __main(void); void main(void); void sectionInit(void); /************************************/ /* __main(ダミー) */ /************************************/ void __main(void){ } /************************************/ /* CPU初期化 */ /************************************/ void boot(void){ /* IOポート設定 */ PFC.PACRH.WORD = 0x0000; /* PA23〜16 */ PFC.PACRL1.WORD = 0x0000; /* PA15〜8 */ PFC.PACRL2.WORD = 0x0145; /* PA7,6,5,2 TXD0,RXD0 */ PFC.PBCR1.WORD = 0x0000; /* PB9,PB8 */ PFC.PBCR2.WORD = 0x0000; /* PB7〜PB0 */ PFC.PCCR.WORD = 0x0000; /* PC15〜PC0 */ PFC.PDCRH1.WORD = 0x0000; /* PD31〜PD24 */ PFC.PDCRH2.WORD = 0x0000; /* PD23〜PD16 */ PFC.PDCRL.WORD = 0x0000; /* PD15〜PD0 */ PFC.PECR1.WORD = 0x0000; /* PE15〜PE8 */ PFC.PECR2.WORD = 0x0000; /* PE7 〜PE0 */ PFC.PAIORH.WORD = 0x00ff; /* [OUT]PA23〜16 [IN]-- */ PFC.PAIORL.WORD = 0xffff; /* [OUT]PA15〜0 [IN]-- */ PFC.PBIOR.WORD = 0x03ff; /* [OUT]PB7 〜0 [IN]-- */ PFC.PCIOR.WORD = 0xffff; /* [OUT]PC15〜0 [IN]-- */ PFC.PDIORH.WORD = 0x00ff; /* [OUT]PD23〜16 [IN]PD31〜24 */ PFC.PDIORL.WORD = 0xffff; /* [OUT]PD15〜0 [IN]-- */ PFC.PEIOR.WORD = 0xffff; /* [OUT]PE15〜0 [IN]-- */ sectionInit(); /* メモリ初期化 */ main(); /* メイン関数呼び出し */ } /************************************/ /* MAIN関数 */ /************************************/ void main(void){ /* PD.DR.BYTE.HH は PD24〜PD31 */ while(1){ PD.DR.BYTE.HL = PD.DR.BYTE.HH; /* PD16 〜 PD23 */ PD.DR.BYTE.LL = PD.DR.BYTE.HH; /* PD0 〜 PD7 */ PD.DR.BYTE.LH = PD.DR.BYTE.HH; /* PD8 〜 PD15 */ PC.DR.BYTE.L = PD.DR.BYTE.HH; /* PC0 〜 PC7 */ PC.DR.BYTE.H = PD.DR.BYTE.HH; /* PC8 〜 PC15 */ } return; } /************************************/ /* セクション初期化 */ /************************************/ extern char etext, sdata, edata, bss_start, end; void sectionInit(void){ char *src; char *dst; /* 初期化データ領域 */ src = &etext; dst = &sdata; while (dst < &edata) { *dst++ = *src++; } /* 未初期化データ領域 */ for ( dst = &bss_start; dst < &end; dst++ ) { *dst = 0; } }