51单片机问题
51单片机问题我想知道,如何看懂这个图然后进行打开定时器中断功能,还有中断又分外部中断和内部中断,外部中断又是怎么实现中断的,最关键的问题是,这个图我怎么看,,我怎么才知...
51单片机问题我想知道,如何看懂这个图然后进行打开定时器中断功能,还有中断又分外部中断和内部中断,外部中断又是怎么实现中断的,最关键的问题是,这个图我怎么看,,我怎么才知道要打开那些寄存器才能实现中断..
请高手详细说明..简单易懂..谢谢了 展开
请高手详细说明..简单易懂..谢谢了 展开
3个回答
展开全部
51单片机只有5个中断源,外部中断0 外部中断1 定时器0 定时器1 串口 ,除两个外部中断外,其余3个是内部中断
一般来说,各个中断互不影响 虽然定时器启动和外部中断有关,但我们不常用,即将 GATE设为0, 这时定时器启动和外部中断无关,我们直接用TR0即可控制定时器启动
这样,对于定时器的应用步骤是:设置工作模式 装定时器初值 开定时器中断 开总中断 启动定时器 等中断到 来 执行中断程序
例如 定时器0工作在16位定时器模式,定时50ms,C 语言初始化程序如下:
TMOD=0X01;//设置工作模式 如果对外部脉冲计数(来自P3.4)则 TMOD=0X05,GATE位还是0
TH0=(65536-50000)/256;//装定时器初值
TL0=(65536-50000)%256;
ET0=1;//开定时器0中断
EA=1;//开总中断
TR0=1;//启动定时器0
外部中断0 C 语言初始化程序如下:
EX0=1;//开外 中断0
IT0=1;//下降沿触发 为0是低电平触发
EA=1;//开总中断
一般来说,各个中断互不影响 虽然定时器启动和外部中断有关,但我们不常用,即将 GATE设为0, 这时定时器启动和外部中断无关,我们直接用TR0即可控制定时器启动
这样,对于定时器的应用步骤是:设置工作模式 装定时器初值 开定时器中断 开总中断 启动定时器 等中断到 来 执行中断程序
例如 定时器0工作在16位定时器模式,定时50ms,C 语言初始化程序如下:
TMOD=0X01;//设置工作模式 如果对外部脉冲计数(来自P3.4)则 TMOD=0X05,GATE位还是0
TH0=(65536-50000)/256;//装定时器初值
TL0=(65536-50000)%256;
ET0=1;//开定时器0中断
EA=1;//开总中断
TR0=1;//启动定时器0
外部中断0 C 语言初始化程序如下:
EX0=1;//开外 中断0
IT0=1;//下降沿触发 为0是低电平触发
EA=1;//开总中断
更多追问追答
追问
可以通过看示意图的方式打开定时器吗?我当心的是,,换其它芯片我就不清楚方案了,能有什么统一的方法吗?或者是看示意图
追答
我见过的所有程序中都没用外部中断来启动定时器,其它51芯片也一样
记住TMOD高4位和低4位分别控制定时器1和定时器0
定时器工作方式有四种:
方式0 13位定时器或计数器模式 不常用
方式1 16位定时器或计数器模式 常用
方式2 8位自动重装模式定时器或计数器 常用
方式3 双8位定时器或计数器模式 完全多此一举,一个定时器分2 个用,但占用了另外一个定时器的资源
所以对于定时器0,设定为定时器模式时,通常是 TMOD=0x01或TMOD=0x02
设定为计数器模式时,通常是 TMOD=0x05或TMOD=0x06
因TCON是可以位寻址的,TR0是TCON中的一位,因此启动定时器0就 用TR0=1 关闭就用TR0=0。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询