|
1、你是定时1ms,在定时中断中每次都把P1.0口翻转一次,这不就产生了一个2ms的方波了嘛
你用的6M的晶振,这样你的时钟频率f = 6M/12 = 0.5M,就是1个NOP是2us;
你用的定时器初始值是0xFE0C,所以你的定时时间就是(0xffff - 0xfe0c + 1)* 2us = 1ms
2、0xFE0C是16位定时器的初始值,你在TMOD中设定的就是16位定时器,定时器是一个增计数器,每一个时钟周期从你设定的初始值加1,一直到0xffff,然后再加1溢出位置,定时器产生中断,进入中断服务子程序,也就是说你定时的时间是:(0xffff - 0xfe0c + 1)* 2us = 1ms
3、while(1);就是一个死循环,在单片机c语言中,死循环是经常用的一个方法,就是说让单片机一直等待在这里,知道发生中断,计入中断服务子程序,中断服务子程序处理完成后,继续进入死循环等待中断的状态;
4、interrupt是中断关键字,后面的1表示中断优先级,因为定时器1的中断优先级是1,这就相当于告诉编译器中断优先级1的中断发生时,就进入这个函数INT0来处理。后面应该还有一个关键字using,他用来表示你进入中断时需要保存哪些寄存器,这个一般很少用,不过你写要求比较高的程序时,肯定会要用到这个关键字的
建议你多看看书,最好是那些有很多程序注释的书 |
|