一个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
,应该需要优秀的视频教程,不行就看宋雪松的吧!变量使用前需要定义的!多看多练!