图3.1.2 单片机程序流程图

3.1.3    主函数设计
对于单片机,主程序主要实现图3.1.2中所示的流程。因而主程序的设计主要包括初始化函数的设计、接收函数的设计、串口中断服务程序的设计和步进电机运动函数的设计。主函数即为附录B中的函数main所示。
3.1.4    初始化函数设计
单片机在上电或者程序出现跑飞和出现异常时,都需要进行初始化,因而在程序中,初始化函数非常重要,本课题中的初始化函数主要是串口中断的初始化。初始化函数即为附录B中的函数init。
而初始化函数的主要内容有:设置串行口工作在模式1,8-bit UART, 使能接收;设置定时器1工作在模式2,8-bit reload;SMOD=1,串行口波特率加倍;设置为最常用的波特率9600b/s;默认message=0x00;打开总中断和串口中断等等。
3.1.5    接收函数设计
接收函数的作用是在接到串口中断命令后,接收从上位机发出的控制数据列。当flag=0时,程序一直停在WHILE循环处等待中断。当有中断时,flag置1,接收数据。Flag的设定是为了防止一个数据被接收两次。
接收函数的代码如下:
uchar recv()
{        uchar mes;
         while(!flag);
         mes=message;
         flag=0;
         return mes;
}
3.1.6    串行中断服务程序
串行中断服务程序是为了仅需简单调用即可完成串口输入输出的处理。当上位机发出中断命令后,即进入串行中断服务程序,接收上位机发出的控制数据。代码如下:
UART_SER() interrupt 4        //串行中断服务程序           
{    RI=0;                 //标志位清零                               
        message=SBUF;           //接受字符,并存入字符串str1[]                   
        ES=0;
        ES=1;
       flag=1;
}
3.1.7    步进电机运动函数设计
步进电机运动函数用来生成控制电机转速的时钟信号。根据处理后的数据得出转速控制数据后,利用本函数每隔相应的时间产生一个上升沿,驱动电机运转一步。主要代码为:
void run_step(uint vv)
{        CWX=0;                    //沿X方向进给一个当量
        delay(vv);
        CWX=1;                    //将cwX端口电平拉高   
        delay(vv);
}
延时程序delay的代码为:
void delay (uint us)                    //定义延时程序        
{        uint i,j;
        for(i=0;i<us;i++)
上一篇:海绵垫倒V槽起屑机总体设计+CAD图纸
下一篇:AT89S51单片机全地形八足机器人机械手的设计

高速公路工程中的机械设备管理【784字】

采运机械综合性管理之我见【2308字】

选煤厂选煤机械设备的维...

谈标准变化對风机盘管的影响【1215字】

精细化管理茬机械瓣膜置...

研发LF4000型风管承压漏风...

浅谈如何加强林业机械管理【2618字】

C#学校科研管理系统的设计

神经外科重症监护病房患...

公寓空调设计任务书

国内外图像分割技术研究现状

中国学术生态细节考察《...

志愿者活动的调查问卷表

承德市事业单位档案管理...

AT89C52单片机的超声波测距...

医院财务风险因素分析及管理措施【2367字】

10万元能开儿童乐园吗,我...