微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 刚接触定时器,打算做一个一秒的延迟函数,但是不知道程序错在哪里。

刚接触定时器,打算做一个一秒的延迟函数,但是不知道程序错在哪里。

时间:10-02 整理:3721RD 点击:
#include <reg51.h>        
typedef unsigned int u16;
typedef unsigned char u8;
void delay1ms()
{
        TMOD|=0x01;
        TH1=0xFC;
        TL1=0x18;
        ET1=1;
        EA=1;
        TR1=1;
}
sbit led1=P2^0;
void main()
        {        
                while(1)
                {
                led1=0;
                delay1ms();
                led1=1;
                delay1ms();
                }        
        }
void delay1msInit () interrupt 3
{
        static u16 i;
        TH1=0XFC;        
        TL1=0X18;
        i++;
        if(i==1000)
        {
                i=0;        
        }        
}

#include <reg51.h>        
typedef unsigned int u16;
typedef unsigned char u8;
sbit led1=P2^0;
bit x=0;
void delay1ms()
{
        TMOD|=0x10;
        TH1=0xFC;
        TL1=0x18;
        ET1=1;
        EA=1;
        TR1=1;
}
void main()
{        
        delay1ms();
        while(1)
        {
                if(x==1)
                {
                        x=0;
                        led1=~led1;
                }
        }        
}
void delay1msInit() interrupt 3
{
        static u16 i;
        TH1=0XFC;        
        TL1=0X18;
        i++;
        if(i>=1000)
        {
                i=0;        
                x=1;
        }        
}

楼上正解

路过观摩                    

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top