2016年9月22日木曜日

日常雑記2016年9月22_AVR-Attiny13Aでタイマーを使用して『Lチカ』してみる_その1

固定電話機の完全逆アセンブルを目指してassembler の習得に務めています。

以下、独学の過程で得たものを備忘録として記録。

/*
Attiny13A 
ヒューズビットは標準の通り
6A FF
9.6Mhz(内蔵)を八分の一周波数で駆動するので1.2Mhz
*/

#include <avr/io.h>

int main(void){

unsigned char now;

DDRB = 0x00000001;//PB0 出力
//タイマー用の2レジスタを設定
TCCR0A = 0b00000000;//タイマー設定その1 標準
TCCR0B = 0b00000101;//タイマー設定その2 CLK/1024

while(1){
now = TCNT0;//8ビットタイマーカウンタの値を取得

//1.2Mhzを1024分周し、256カウントに1回の割合で出力します。
//つまり、おおよそ0.22秒に一度点灯します。
//タイマーの最大値FF(十進数で255)
if(now == 0xFF){
PORTB = 0x00000001;//PB0 の出力をHIGHに
} else {
PORTB = 0x00000000;//PB0 の出力をLOWに
}
}
}


『WinAVR-20100110』にてコンパイルしてます。コンパイル時にMCUタイプ指定で

Attiny13A 指定を忘れない事。

参考資料:『試しながら学ぶAVR入門』(CQ出版社)

以下は個人の意見です。

Atmel社 が Microchip社に買収されるというニュースが今年はありましたが………、

自分はどちらかというとAVR派です。なぜなら、若干ではありますがAVRの方がPC

系統のプログラミングを応用しやすい感じがある為です。一応、上記コードはコンパイル

が通ります。AVRに自作マイコンライターで書き込みの上で動作を確認しております。

毎度の事ですが…、C言語からコンパイルしたマシン語とassemblerの対応を見ていると

『面倒くさい』限りです。

0 件のコメント:

コメントを投稿