中断产生时 中断标志位置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