sanmaodeai 发表于 2018-5-24 22:28:35

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;
        }
}

sanmaodeai 发表于 2018-5-24 22:28:51

是不是定时器0应该改成计数器?
页: [1]
查看完整版本: STC15F2K60程序问题