初學 8051 timer 問題

1.

#define TIMER0_COUNT 0xFC18 /* 10000h-((12,000,000/(12*FREQ)) */

2.

TL0=(TIMER0_COUNT & 0x00FF);

TH0=(TIMER0_COUNT >> 8);

3.

TMOD &= 0XF0;

TMOD |=0x01;

想問一下:interrupt 1

1.裡面的0xFC18是如何得出的?

2.

一般常見的都是(65536-X)/256

TL0 &0x00FF, TH0 >>8的方式原理?

3.等號面前的&, | 作用是?

麻煩各位前輩們指導 越詳細越好 謝謝

3 個解答

評分
  • 7 年前
    最佳解答

    1.

    應該是1ms

    64536 十進制

    FC18 十六進制

    2.

    0xfc=1111110000011000

    0xff =0000000011111111

    TL0 = 0xFC18 & 0x00FF => 0x0018 (去前8位等於24 跟(65536-1000)%256一樣結果

    TH0 = 右移8位 =>0000000011111100 (等於252跟(65536-1000)/256一樣結果

    3.

    一樣就and,or運算而已

    參考資料: 簡單的大腦
  • 自學的盲點真多

    順便補足基礎上的不足

    大概瞭解了

    thx

  • 1. 後面不是給了計算式了? 回去翻一下書吧(振盪週期的部份)

    2. 結果相同, 但用and/shift的方式機械碼會少執行一些

    3. and/or 運算, 計算機概論應該是在第3章還是第4章有教

還有問題?馬上發問,尋求解答。