上田です。 > while(!AD.CSR.BIT.ADF) ; // 変換終了待ち !(論理否定演算子)で使用するデータ型はint型なので、 この表記方法で正しく判定してくれるでしょうか? 普通に、 while(AD.CSR.BIT.ADF==0) ; // 変換終了待ち 書いてみてはどうでしょうか? または、ADST bitは、変換終了すると自動的に0リセットされることを 利用して、 AD.CSR.BIT.ADST = 1; // A/D変換開始 while(AD.CSR.BIT.ADST==1) ; // 変換終了待ち ADdata = AD.DRA >> 6; // 変換されたデータをADdataに格納 return(ADdata); // 変換した値を持って返る と書いても同様の結果が得られます。