鄙人写作能力有限,本文有大大小小知识点还待后续补充
非教学意图,有错本人不负责, 还请大佬斧正
一,为什么使用定时器,使用delay函数不好吗
使用delay函数进行大量空循环会占用cpu资源,而定时器是单片机的内部资源。
二,定时器与计数器的区别
计数器和定时器的本质是相同的,他们都是对单片机中产生的脉冲进行计数,只不过计数器是单片机外部触发的脉冲,定时器是单片机内部在晶振的触发下产生的脉冲。当他们的脉冲间隔相同的时候,计数器和定时器就是一个概念。
三,中断的作用 定时器相当于一个闹钟,而中断相当于钟表的响铃,可以自己设定这个响铃后让你干什么,只配置定时器不配置中断的后果是闹钟知道时间到了但是却不去提醒你。
四,如何配置定时器\计数器\中断
四(1),定时器和中断系统原理图
上半部分定时器,下半部分中断。
我们需要从图中左上角的system走一条线至中断入口。
四(2),寄存器是什么
1,寄存器是连接软硬件的媒介
2,在单片机中寄存器就是段特殊的RAM存 储器,一方面,寄存器可以存储和读取数据,另一方面,每一个寄存器背后都连接了一根导线,控制着电路的连接方式。
3,寄存器相当于一个复杂机器的“操作按钮”
我们需要通过配置寄存器来配置定时器、计数器、中断
四(3),定时器0,低优先级中断设置
定时器设置
我们这使用定时器0,具体可以参考STC89C52文档
TCON寄存器(可位寻址,后缀为1的是定时器1的配置,不用管)
TF0 = 0; //清除TF0溢出中断标志,加到65536后TF0会被置为1
TR0 = 1; //允许定时器0计时
IE0和IT0不用管,需要的话自己去看文档
TMOD寄存器(不可位寻址)
不可位寻址与可位寻址的区别在于前者不可以单独给寄存器配置,只能以 TMOD=十六进制数 配置,十六进制对应的二进制1和0按上图顺序照应
定时器1的不用配置,定时器0配置如下
GATE=0:这个看电路图就知道为啥给0(不需要管INT0是啥)
C/T=0:0代表用作定时器,1代表用作计数器
M1=0,M0=1。M1和M0这样设置代表使用模式1,即TH0和TL0两个寄存器都使用
TMOD=0x01
TH0和TL0
TL0=64535%256+1;
TH0=64535/256;
//距离65535差1000,一次1us,1000次就是1ms
中断配置
定时器的配置就配置好了,现在还要配置中断处理的配置
//中断配置
ET0=1;
EA=1;
PT0=0;//低优先级
中断处理程序
五,STC89C51RC手册
STC-STC89C51RC.pdf
(1.74 MB, 下载次数: 42)
|