微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 单片机实验,求大神帮我改源码,题目要求误差小于0.0

单片机实验,求大神帮我改源码,题目要求误差小于0.0

时间:10-02 整理:3721RD 点击:
/*初始状态为南北通行:南北绿灯、东西红灯保持25秒;
                 后转为过渡状态:南北黄灯、东西红灯保持5秒;再转为东西通行:
                 东西绿灯、南北红灯保持25秒;
                 最后转为过渡状态:东西黄灯、南北红灯保持5秒。
                 南北红黄绿接P2。0~2,东西接P2.3~5,分别在12MHZ,6MHZ下怎么改*/
                 
                        #include<reg51.h>
                        unsigned char time1;//定时参数
                        unsigned char sco1;
                        void main(void)
                        {
                                  TMOD=0x01;
                                TR0=1;
                                ET0=1;
                                EA=1;
                                TH0=(65536-46483)/256;
                                TL0=(65536-46483)%256;
                                 time1=0;
                                 sco1=0;
                                while(1)
                                {;}
                         }
                  void hlddl(void) interrupt 1        using 1
                  {       
                          time1++;       
                          if(time1==20)
                          {        time1=0;
                                  sco1++;
                        }  
                        if(sco1<30)
                          {
                                  if(sco1<25)               
                                 P2=0xf3;
                                 else
                                 P2=0xf5;       
                        }
                        else
                        {       
                                if(sco1<55)                
                                        P2=0xde;
                                else
                                           P2=0xee;
                        }
                    if(sco1==60)
                        { sco1=0;
                        }
                        TH0=(65536-46483)/256;
                        TL0=(65536-46483)%256;
                        }

找到解决方法了,用定时器初值计算软件就好了

如果程序没有问题,在6M的晶振下工作只要改一下定时器的初值就行了,是定时时间和12M的一样。

有用protus仿真,误差总是大得吓人,你能告诉初值设多少好

仿真效果你要看下面 如果看电脑时间,肯定不行的啊

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

网站地图

Top