• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

单片机定时器0中断 控制LED亮灭 有几个问题想不清楚!求解

7d98f69965181add 2020-07-28 浏览量:716
单片机定时器0中断 控制LED亮灭 有几个问题想不清楚!求解答​​
1.模块一不是给定时器设定了初值了嘛?模块三的重新设定是在中断之后将溢出的数值重新设定????
2.去除模块三的定时器赋初值为什么下载程序后不能达到LED亮灭??
3.主函数中的while(1)是让程序停在那里一直扫描???


#include"reg52.h"                        //此文件中定义了单片机的一些特殊功能寄存器

typedefunsigned int u16;          //对数据类型进行声明定义
typedef unsignedchar u8;

sbitled=P2^0;         //定义P20口是led



/@@*******************************************************************************
模块一
* 函 数 名         : Timer0Init
* 函数功能        :定时器0初始化
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/


voidTimer0Init()  //外部中断0的函数
{
TMOD|=0X01;  //选择为定时器0模式,工作方式1,仅用TR0打开启动。
TH0=0XFC;        //给定时器赋初值,定时1ms
TL0=0X18;     
ET0=1;//打开定时器0中断允许
EA=1; //打开总中断
        TR0=1;//打开定时器        //定时器0的运行开关               
}


/@@*******************************************************************************
模块二:主函数
* 函 数 名       : main
* 函数功能                : 主函数
* 输    入       : 无
* 输    出            : 无
*******************************************************************************/

void main()
{        
Timer0Init(); //定时器0初始化
while(1);        //  等待中断发生????     
}

  
/@@*******************************************************************************
模块三:中断服务函数
* 函 数 名         : void Timer0()interrupt 1
* 函数功能                   : 定时器0中断函数
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/


void Timer0()interrupt 1
{
staticu16 i;
TH0=0XFC;        //给定时器赋初值,定时1ms
TL0=0X18;
i++;
if(i==1000)
{
i=0;
led=~led;        
}        
}

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
所有亮答 数量:4
  • 1,是的,你用的t0定时器16位模式,所以每次都要手动重新赋值,只有8位模式可以自动重新赋值

    2不重新赋值,那么定时器没法工作,所以不亮

    3因为用定时器中断控制led所以主循环是空闲的,不要执行任何操作

  • 1.对的,进入终端之后需要设定下一次进入定时器中断的时间,所以需要重新赋值

    2.没有没有设定下一次进入中断的时间,相当于定时器功能失效了

    3.对,因为所有的操作都在定时器函数中完成了,主函数里面没有其他的工作,就可以设定为死循环

  • 定时器T0在16位模式的时候没有自动重装功能的,必须手动重装

  • 是的,不支持自动操作,你要手动赋值
    不重新设置,定时器的计数值一直不会变,就不工作了

相关问题

问题达人换一批

单片机定时器0中断 控制LED亮灭 有几个问题想不清楚!求解