有没有人帮我解释下这段代码的意思?
大神帮我分析下这段代码的意思,有的不是非常清楚//单片机时钟是12MHz
#include"STC15Fxxxx.h"
#include"intrins.h"
unsigned int a = 0;
sbit led = P1^0;
void init0(void)
{
AUXR = 0x0E;
TMOD &= 0xF0;
TL0 = 0x00;
TH0 = 0x00;
TF0 = 0; //clear TF0 flag
TR0 = 0; //start timer0
}
void main()
{
EA=1;
INT0 = 1;
EX0 =1;
IT0 =0;
init0();
while(1)
{
if(a>1480&&a<2020)
{
led = 0;
}
else
{
led =1;
}
}
}
void ext0(void) interrupt 0
{
if(INT0==1) //上升沿触发
{
TR0=1; //开定时器0
}
if(INT0==0) //下降沿触发
{
TR0 = 0; //关定时器0
a= TH0; //TH0和TL0的值不是都是0吗?为什么要赋值给a?
a=a*256+TL0;
TL0=0x00; //初值
TH0=0x00; //初值
}
上面这段代码有几个问题不知道,有人帮忙解答吗?
1. 在外部中断为下降沿触发时,定时器初值都是0,并且赋值给了a,那在主函数中a为什么会有值?不是应该是0吗? 电工版刻舟求剑 定时器会跑啊 初始化时不是软件设置了INT0 = 1;吗,然后定时中断,中断中检测上升沿开定时中断,同样还是中断如果检测下降沿,就会把定时器的寄存器的值给a赋值,a是全局变量,可以保存值得啊。
我觉得先弄清楚 中断的含义非常的有必要。 这个非常的简单的啊,上升沿开始计数,下降沿停止计数,读出16位计数值,清除计数值。就这么简单。
这是测量外部脉冲的高电平时间,比如模型的舵机信号。 定时器点灯啊,a是全局变量,好去看是否需要点灯。 哈哈,有时候脑袋抽了就是会想不清楚....
我有过几次非常简单的问题都想不通 楼主可能初次接触单片机,不知道定时器为何物? 这个应该是个神仙题! 看不懂,这代码能跑吗》??????????? 检测波形高电平保持时间 变量a加个volatile比较好 哪不理解看书,查资料,还不懂再来问 变量a从硬件寄存器Th,TL读数值,这个寄存器的值会根据你的设置,自动累加计数的,所以每次读到的结果不一样 当随机数用? 初始化时不是软件设置了INT0 = 1;吗,然后定时中断,中断中检测上升沿开定时中断,同样还是中断如果检测下降沿,就会把定时器的寄存器的值给a赋值,a是全局变量,可以保存值得啊。
页:
[1]