51 中断

中断产生时 中断标志位置1, 向cpu申请中断。

cpu响应中断时, TCON中的中断标志位由cpu清零

                 SCON中的中断标志位须软件清零。

-----

INT0  IE0  0003H  high

T0   TF0  000BH  

-----

INT1  IE1  0013H

T1   IF1  001BH

serial RI/TI   0023H  LOW

IE 特殊功能寄存器 interrup enable

  EA位控制所有的中断

  EX0 控制外部中断0 EX1 控制外部中断1

  ET0 控制T0  ET1 控制T1

IE   = EA | - | - | ES | ET1 | EX1 | ET0 | EX0 |

      = AF              AC   AB     AA      A9     A8H      <---- A8H

IP = interrrupt priority

IP  = - | - | - | PS | PT1 | PX1 | PT0 | PX0 |

                       BC   BB     BA     B9      B8        <----- B8H

加1计数器的脉冲来源:

1 系统时钟/12

2 T0(P3.4) T1(P3.5)

TCON 控制寄存器

TCON的高4位

| TF1 | TR1 | TF0 | TR0 |

TF = timer full(overflow) ?

TF1 T/C1溢出中断请求标志位  ------------ 硬软都可清零

TR1 T/C1运行控制位 1 开始工作 0停止工作 ---- 软件置位

TF0

TR0

TMOD TIME_MODE

控制Counter/Timer 0 1

GATE

C/t^

M1

M0

----------------

GATE (可以测试脉冲的宽度)

C/t^

M1

M0

---------------------------------------------------------------

if GATE == 0 ;

  只要TCON中的TR0或TR1为1时, 就可以启动计数器/计时器工作

if GATE == 1:

  TR0/TR1=1

  INT0/INT1 为高电平, 才能启动计数器/计时器工作

-----------------------------------------------------------------

C/t^ = counter or timer

----------------------------------------------------------------

M1M0

00 ---- 13位定时/计数器

01 ---- 16位定时/计数器

10 ----  8位定时/计数器 (自动重装)

11 ----

 -----------------------------------------------------------------

1 震荡周期 fosc=12M  一次 1/12M =1/12up

2 机器周期 = 1us;

计数器 每一个机器周期加1

16bit --计数-- 65536次

65536-50000=15536

15536 --> 65536 = 50000

so

TH0 = 15536/256

TL0 = 15536%256

原文地址:https://www.cnblogs.com/kwingmei/p/3280243.html