picマイコンの使い方

PICマイコンの8bitマイコンから32bitマイコンまで使いこなすぞ! 周辺機能やアセンブラ、C言語を使いこなすぞ。ARMには負けないぞ! 頼みの綱はPIC32MZだ!たのしみだなー

アセンブラ

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


◆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)回路図はこちら

【PIC-BCD変換-AN526】を使ってみる。(「Binary To BCD Conversion Routine」)




マイクロチップ社アプリケーションノートAN526のBCD変換を使ってみます。
動き方を理解しないまま使うなんてできない!
なのでAN526「Binary To BCD Conversion Routine」を元に実数を入れ込んで結果を見てみます!
理論はこちらを参照ください。シフトを繰り返してキャリーを数珠繋ぎに入れ込んでいけばいいみたいですね。 
AN526のダウンロードはこちらから


■Ⅰ:準備用意するレジスターは、






各ニブルR0左ニブルR0右ニブルR1左ニブルR1右ニブルR2左ニブルR2右ニブルH_byteL_byte
結果---万の位千の位百の位十の位一の位破損破損


 ・BCD変換データ:R0、R1、R2
 ・Binaryデータ:H_byte、L_byte
 ・添付(計算時に利用):temp
 ・カウンター:count
 計7byte用意する必要がありますね
■Ⅱ:流れの簡易説明
 ・ビットシフト
  最初にL_byteを左シフトして結果をH_byteに入れ込む・・・つまり
  L_byte→H_byte→R2→R1→R0
  のような感じでこれを16回繰り返します。
 ・10進補正
  R0~R2に入ってきた数字が5(B'0101')を超えたら3を足します。
■Ⅲ:実際にH'63'(=D'99')を入れてやってみる。






各バイトR1R2L_byte
入れる値'00''00''63'


16bitは面倒くさいので8bit8ステップでやってみます。MAX255なのでH_byteは要りませんし3ケタなので、R0そのものとR1の左ニブルには必要ありません。






  
  
  
  
  
  
  
  
  
  
各バイトR1右R2左R2右L_byte左L_byte右memo
ステップ0------------01100011代入後
ステップ1-----------01100011xnone
ステップ2----------01100011xxnone
ステップ3---------01100011xxxnone
ステップ4--------01100011xxxx+3
ステップ4'--------10010011xxxx補正後
ステップ5-------10010011xxxxxnone
ステップ6-----010010011xxxxxxnone
ステップ7----010010011xxxxxxxx+3
ステップ7'----010011001xxxxxxxx補正後
ステップ8---010011001xxxxxxxx補正しない


 ・結果は、R1=0、R2=10011001となりました。99っぽいです!
  あとはキャラ変換すればシリアル通信でも使えそうですね!
  例)百の位=H'30'+R1右、十の位=H'30'+R2左、一の位=H'30'+R2右
  ニブルとは・・・4ビット。

PICマスターへの道<ブログ再開>

PICマイコンの開発を始めた頃の私は
「すまない、アセンブラ以外は帰ってくれないか!」が
口癖でしたが今では・・・
 ,.. _ 、__ 、、

 }ミ ェェ〉 ェェ`jj;t、 PICにはアセンブラしかない・・・

 ゞ} <..,. , ,リ;;< そんなふうに考えていた時期が

  '心 ゙三'' ,ィ:`{´   俺にもありました


こだわりを捨てて禁断のC言語に手をつけてしまいました。
べっ便利すぎる・・・これが今の素直な気持ちです。


ギャラリー
  • 【PIC32MZ2048ECH144-I/PH】PIC32MZ2048ECH144を買いました!
  • 【PIC32MX370F512H】タイマーを使ってみる。
  • 【dsPIC33FJ128MC802】PMP接続のDMA転送でaitendoの1.44インチ液晶TFT(ZY-FGD)を使ってみる。その3
  • 【dsPIC33FJ128MC802】PMP接続のDMA転送(連続転送)でaitendoの液晶を使ってみる。
  • 【dsPIC33FJ128MC802】PMP接続のDMA転送(連続転送)でaitendoの液晶を使ってみる。
  • 【dsPIC33FJ128MC802】PMP接続のDMA転送(連続転送)でaitendoの液晶を使ってみる。
  • 【dsPIC33FJ128MC802】PMP接続のDMA転送(連続転送)でaitendoの液晶を使ってみる。
  • 【dsPIC33FJ128MC802】aitendoの1.44インチ液晶TFT(ZY-FGD)をPMP接続で使ってみる!
  • 【dsPIC33FJ128MC802】aitendoの1.44インチ液晶TFT(ZY-FGD)をPMP接続で使ってみる!
メッセージはこちちらからお願いします。

名前
メール
本文
アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

ブログパーツ
  • SEOブログパーツ
にほんブログ村 その他趣味ブログ 電子工作へ
にほんブログ村
アクセスカウンタ
アクセスランキング