51单片机入门参考程序及图例.docx
《51单片机入门参考程序及图例.docx》由会员分享,可在线阅读,更多相关《51单片机入门参考程序及图例.docx(15页珍藏版)》请在冰豆网上搜索。
![51单片机入门参考程序及图例.docx](https://file1.bdocx.com/fileroot1/2023-1/9/d54f8770-2b76-4861-aa16-6ab8d760b6ce/d54f8770-2b76-4861-aa16-6ab8d760b6ce1.gif)
51单片机入门参考程序及图例
#include
sbitstart=P3^3;//定义开始键
sbityuandian=P1^0;//定义原点
sbithou=P1^1;//定义后退极限点
sbitqian=P1^2;//定义前进极限点
sbitzhujia=P1^3;//定义主释放点
sbitfujia=P1^4;//定义副释放点
sbitzhu=P1^5;//定义主上升点
sbitfu=P1^6;//定义副上升点
sbityinba=P1^7;//主副引拔动作点
voidDelayMs(unsignedintt);//函数声明
voidDelayUs2x(unsignedchart);
/*------------------------------------------------
主函数
------------------------------------------------*/
voidmain(void)
{
yuandian=0;
start=1;//按键输入端口电平置高
zhu=0;//主臂在上升极限
fu=0;//副臂在上升极限
zhujia=0;//主夹打开
fujia=0;//副夹打开
while
(1)//主循环
{
if(!
start)//如果检测到低电平,说明按键按下
{
DelayMs(10);//延时去抖,一般10-20ms
if(!
start)//再次确认按键是否按下,没有按下则退出
{
while(!
start);//如果确认按下按键等待按键释放,没有释放则一直等待
{
yuandian=0;
if(!
yuandian)
{DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
zhu=1;//主下降
fu=1;//副下降
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
yinba=0;//主副引拔动作
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
zhujia=1;//主夹动作
fujia=1;//副夹动作
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
yinba=1;//主副引拔复位
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
zhu=0;//主复位
fu=0;//副复位
zhujia=0;//主夹复位
fujia=0;//副夹复位
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
yuandian=1;//离开原点
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
qian=0;//前进极限
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
if(!
qian)
{
qian=1;
fujia=1;//副夹动作
zhu=1;//主下降
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
zhujia=1;//主夹动作
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
zhu=0;//主上升
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
zhujia=0;//主夹复位
fujia=0;//副夹复位
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
hou=0;//后退极限
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
DelayMs(50000);//延时
hou=1;//
yuandian=0;//归原点
}
}//释放则执行需要的程序
}
}
}
//主循环中添加其他需要一直工作的程序
}
}
/*------------------------------------------------
mS延时函数,含有输入参数unsignedchart,无返回值
unsignedchar是定义无符号字符变量,其值的范围是
0~255这里使用晶振12M,精确延时请使用汇编
------------------------------------------------*/
voidDelayUs2x(unsignedchart)
{
while(--t);
}
voidDelayMs(unsignedchart)
{
while(t--)
{
//大致延时1mS
DelayUs2x(245);
DelayUs2x(245);
}
}