一个43岁单片机初学者的心得

一个43岁单片机初学者的心得,/***************************************************** 结合产品要求编写的电机锁紧部分程序,中年…

一个43岁单片机初学者的心得,/*****************************************************
结合产品要求编写的电机锁紧部分程序,中年人学习单片机
真心不容易,主要记忆力太差,虽然看得懂书,但是不会运用,
不能举一反三。以前搞三菱PLC编程(PLC偏向逻辑控制),在
学习C51语言编写思路总想往PLC方向靠,固化思维,以至于多
天写不出人家分分钟搞定的程序,真是打击学习地积极性,要
学此功,必废武功。最近学会了国产立创EDA画原理、PCB图,
相当开心,再返回去学英文AD比较容易理解,我是一个EDA MCU
初学者,自学的道路上千辛万苦,只有自己懂,好在西瓜视频、
各大论坛学习资源比较多。远景有一天去搞32位单片机开发。

下面是我按照自己要求编写的程序,请大家多多指教!

MCU的晶振11.0592MHz

目的;1.掌握定时器的程序编写
         2.C51语言格式规范化编写

*****************************************************/

#include<reg52.h>
#define uchar unsigned char
uchar num;
bit m0;

sbit x0=P3^4;     // 关门位置开关
sbit x1=P3^5;     // 锁紧停止开关

sbit y0=P1^0;    // 电机锁紧

void main()
{
        m0=1;                                                                  // 初始化为1,0:故障
        TMOD=0x01;                                                          // 定时器设定
        TH0=(65536-45872)/256;
        TL0=(65536-45872)%256;
        EA=1;
        ET0=1;
        
        while(1)                                                                // 大循环
        {
                 if(y0==1)                                                        // 中断计数清零
                {
                        num=0;
                }                                                         

                if((x0==0)&&(x1==1)&&(m0==1))               // 电机锁紧
                {
                          y0=0;
                }
                else
                {
                        y0=1;
                }

                if(y0==0)                                                          // 条件符合打开计时器
                {        
                        TR0=1;
                }
                                 
                else
                {
                        TR0=0;
                }

                 if(y0==0)                                                           // 50ms计时器 中断计数100次=5秒
                {               
                        if(num==100)
                        {
                                m0=0;                                        // 锁紧停止开关失效,m0=0故障,控制板断电消除故障
                                num=0;
                        
                        }
                }

        
        }                                                  

}

void T0_time() interrupt 1                                              // 计时器中断程序

{
        TH0=(65536-45872)/256;
        TL0=(65536-45872)%256;
        num++;
        
}

//开门解锁程序待编写

,有必要加按键消抖程序?,有必要,不加的话可能不会被识别,谢谢666666
,应该需要优秀的视频教程,不行就看宋雪松的吧!变量使用前需要定义的!多看多练!

作者: soufei

为您推荐


Fatal error: Can't use function return value in write context in /www/wwwroot/www.qianrushi.com.cn/wp-content/themes/news/footer.php on line 115