【dsPIC33FJ128MC802】ポートをパタパタしてみる。(C言語の中でアセンブラ)

2020年4月4日


◆dsPIC33FJ128MC802でポートをオシロで確認しながらパタパタ切り替えてみます。
「C言語のみ」と「アセンブラ混在のC言語」と比較してみたいと思います。
1)C言語のみ
while文の中でポートBの6bitをパタパタしました。
論理演算子NOTにより毎回ポート出力を変えました。
プログラムは↓

    while(1)
{
LATBbits.LATB6 = !LATBbits.LATB6;
}//while(1)

出力波形は↓の黄色い線
83cb7d16.png
High→Lowに450nsecかかっているようです。
2)アセンブラ混在のC言語
while文の中でポートBの6bitをパタパタしました。
ビットセット命令で3回パタパタしました。
アセンブラはデーターシートDS70291のpage348~352にて勉強できます。
プログラムは↓です。

while(1)
{
asm("BSET LATB, #6");
asm("BCLR LATB, #6");
asm("BSET LATB, #6");
asm("BCLR LATB, #6");
asm("BSET LATB, #6");
asm("BCLR LATB, #6");
}//while(1)

出力波形は↓の黄色い線
ecae8e76.png
High→Lowに25nsecかかっているので≒1/40MHzと理論通りっぽいですね。
アセンブラ早えーー
3)回路図はこちら

よろしければバナーをクリックお願いします!