« 7-7 課題7 割り込み処理 ~その1~ | メイン | 7-9 課題9 赤外線信号受信テスト »

はてなブックマークに追加   7-8 課題8 割り込み処理 ~その2~

課題7ののCソース・ファイルとHEXファイルはこちらです【LZH】

■ 課題8

 課題7の割り込み処理について理解を深めるために、応用問題を考えましょう。課題7では、一つのLEDに対して、割り込みを使って点滅パターンを変えていました。この課題では、二つのLEDに対してパターンを変えています。また、点滅間隔も0.1sec→0.25secと変更しています。

 RIGHT_LEDとLEFT_LEDで1秒間隔で、

●○●○と○○○○

の点滅させましょう。
一方では、割り込み処理を使って、DOWN_LEDとUP_LEDで0.25秒間隔で、

○●○●と○○○○

の点滅をさせましょう。

// ex8_warikomi.c
// PIC16F84A用

#include<16f84a.h>
#fuses HS,NOWDT,NOPROTECT
#use delay(clock=20000000)

#byte  RA=5
#byte  RB=6
 #bit IRSIG=RA.2
 #bit TACTSW=RA.3
 #bit DOWN_LED=RB.0
 #bit UP_LED=RB.2
 #bit RIGHT_LED=RB.1
 #bit LEFT_LED=RB.3

int led_data,wcount;

// 1/20(MHz)*4*256*195=9.8304ms
//  9.8304ms*25=0.24576s=0.25s
#INT_RTCC
timer0_led_flash(){
  set_timer0(61); //255-61+1=195
  wcount--;
  if(wcount==0){
    led_data=0x01-led_data;
    DOWN_LED=UP_LED=led_data;
    wcount=★★;
  }
}

main()
{
  set_tris_a(0x1f);
  set_tris_b(0x00);
  setup_timer_0(★★★★);//timer0初期化

  set_timer0(61);
  wcount=★;
  led_data=0;
  enable_interrupts(INT_RTCC);//割り込み許可
  enable_interrupts(GLOBAL);

  while(1){
    ★★★★=1;
      delay_ms(1000);
    ★★★★=0;
      delay_ms(1000);
  }
}

■ヒント

wcount=★★;

 点滅間隔を0.1sec→0.25secに変更するためにここの数値を変更します。

setup_timer_0(★★★★);//timer0初期化

 割り込み用timer0の初期化です。課題7と同じにします。

★★★★=1;

 LEFT_LEDとRIGHT_LEDのみ点滅させるにはここの記述を変更します。

 割り込みの基本部分は変えていません。課題8が完成したら、割り込み時間を変更して、オリジナル点滅パターンお試しください。

■ 訂正

割り込み処理の注釈文の中に、

//  9.8304ms*25=0.09830s=0.25sとありますが、

//  9.8304ms*25=0.24576s=0.25sの間違いです。訂正させていただきます。


長野県飯田工業高校 竹内浩一

トラックバック

このエントリーのトラックバックURL:
http://www.eleki-jack.com/mt/mt-tb.cgi/460

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

カレンダ

2008年11月
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30

おすすめ書籍

会社案内
情報セキュリティおよび個人情報の取り扱いについて

コメントとトラックバックは、spamを予防するために、編集担当が公開の作業をするまで非公開になっています。
コメントはそれぞれ投稿した人のものです。

About

2007年10月25日 10:14に投稿されたエントリーのページです。

ひとつ前の投稿は「7-7 課題7 割り込み処理 ~その1~」です。

次の投稿は「7-9 課題9 赤外線信号受信テスト」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type 4.1