找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2371|回复: 7
收起左侧

写了一个单片机程序 上电亮灯特别慢

[复制链接]
ID:613800 发表于 2019-11-22 23:03 | 显示全部楼层 |阅读模式
话不多说,亮程序。串口上启动速度很多,但是用电源供电自己启动很慢,大概30多秒才运行完一起程序亮灯。

void main(void)
{


        uint16 step=1,i=0;
        
        int adc14[10],adc00[10],adc01[10],adc02[10],adc03[10],adc04[10],adc05[10],adc06[10],adc10[10],adc15[10]/;
        
    /*textErroe();*/
        reset_deng();                //复位亮下灯
   Uart1Init();
        
        
        Timer0_Init();
        Timer1_Init();




        //复位
        
        ES = 1;
    EA = 1;
        
        step1_mode();
               
               
           /*reset_mode();*/
        //ADC10_Init();
                        
        while(1)



主程序如上

void Timer0_Init(void)
{
    TMOD = 0x00;                                //模式0
    TL0 = 0x00;                                 //65536-11.0592M/12/1000        定时1ms
    TH0 = 0x00;


    //TR0 = 1;                                    //启动定时器
//    ET0 = 1;                                    //使能定时器中断
//    EA = 1;
}

void Timer1_Init(void)
{
    TMOD = 0x00;                                //模式0
    TL1 = 0x66;                                 //65536-11.0592M/12/1000
    TH1 = 0xfc;
    TR1 = 1;                                    //启动定时器
    ET1 = 1;                                    //使能定时器中断
    EA = 1;
}



定时器初始化如上





下面是按键和灯。。灯很久才亮。
void TM1_Isr() interrupt 3 using 1
{


        TL1 = 0x66;                                 //65536-11.0592M/12/1000
    TH1 = 0xfc;
   
   if(P67==0){
                                reset_deng();
                   if(P67==0)
                   {
                      ISP_CONTR=0x20;
                            //((void (code *) (void)) 0x0000) ();
                        
                   }
   }
   
   error_count++;
   if(error_count==50)
   {
   error_count=0;
           if(step1_error==1)
        {
        P55=!P55;
        }
        else if(step1_error==2)
                P55=1;
                else P55=0;
         if(step2_error==1)
        {
        P40=!P40;
        }
                else if(step2_error==2)
                P40=1;
                else P40=0;
        if(step3_error==1)
        {
        P64=!P64;
        }
                else if(step3_error==2)
                P64=1;
                else P64=0;
        if(step4_error==1||step5_error==1)
        {
        P65=!P65;
        }
                else if(step4_error==2)
                P65=1;
        else P65=0;
            if(step1_error==0&&step2_error==0&&step3_error==0&&step4_error==0&&step5_error==0)
         {
          P66=0;
         }
         else
          P66=1;
   
   }                    
}




回复

使用道具 举报

ID:25310 发表于 2019-11-23 07:17 | 显示全部楼层
while(1)
这里没大括号?
回复

使用道具 举报

ID:213173 发表于 2019-11-23 09:32 | 显示全部楼层
你这种毫无章法的语句谁能看明白你想达到什么目的?只能自己慢慢去摸索了。
回复

使用道具 举报

ID:123289 发表于 2019-11-23 10:11 | 显示全部楼层
走单步,看看何时运行到你亮灯的指令,问题就清楚了。
回复

使用道具 举报

ID:613800 发表于 2019-11-23 14:07 | 显示全部楼层
yzwzfyz 发表于 2019-11-23 10:11
走单步,看看何时运行到你亮灯的指令,问题就清楚了。

具体能详解吗
回复

使用道具 举报

ID:415088 发表于 2019-11-23 14:38 | 显示全部楼层
看着好乱
回复

使用道具 举报

ID:470332 发表于 2019-11-23 15:28 | 显示全部楼层
拿keil软件仿真,单步运行,你就发现问题在哪了
回复

使用道具 举报

ID:613800 发表于 2020-7-14 08:47 | 显示全部楼层
早已解决,是因为初始变量没有写成0,改了就好了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表