STC15F2K60程序问题
本帖最后由 sanmaodeai 于 2018-5-25 10:04 编辑各位大侠,小弟写了个程序,到现在都没有运行正常,望指点迷津
外部主要是一个20ms的PWM波形,默认状态占空比为5%,也就是1ms高电平,当有信号的时候输出占空比变成10%,在2ms左右,使用外部中断做检测,如果上升沿,开启定时器0(1us)计数,下降沿时关闭定时器0,检测计数值,如果超过1500则认为有信号,触发LED动作,但是下面程序不管怎么样LED都无法亮起,有高手指点吗?
#include"STC15Fxxxx.h"
#include"intrins.h"
void timer0_init();
void int0_init();
unsigned char flag;
unsigned int counter;
sbit led = P1^0; //debug led
sbit led_int = P1^1; //debug ext inturrupt
sbit led_timer= P1^2; //debug timer0
void main()
{
int0_init();
timer0_init();
while(1)
{
;
}
}
void timer0_init(void) //1us@12MHz
{
AUXR |= 0x80; //timer clock 1T mode
TMOD &= 0xF0; //set timer mode
TL0 = 0xF4; //default number
TH0 = 0xFF; //default number
TF0 = 0; //clear TF0 flag
TR0 = 1; //start timer0
}
void int0_init()
{
EX0 = 1;
IT0 = 0;
ET0 = 1;
EA = 1;
}
void exint0() interrupt 0
{
if(INT0 == 1) //ÉÏÉýÑØ´¥·¢
{
flag = 1; //±ê־λÖÃ1
led_int =0;
}
else //ϽµÑØ´¥·¢
{
flag = 0; //±ê־λÇå0
led_int = 1;
}
}
void timer0() interrupt 1
{
TL0 = 0xF4; //default number
TH0 = 0xFF; //default number
if(flag == 1)
{
counter++;
if(counter>=1200) //¼ÆÊýÖµ³¬¹ý1200£¬µãÁÁLED
{
led_timer = 0;
}
}
else
{
counter = 0;
led_timer= 1;
}
}
是不是定时器0应该改成计数器?
页:
[1]