头像-349498

7d98f69965181add

个人成就

获得 0 次赞

帮助过0人

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

单片机定时器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;        //给定时器赋初值,定时1msTL0=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;        //给定时器赋初值,定时1msTL0=0X18;i++;if(i==1000){i=0;led=~led;        }        }​