三维精密工作台机械结构及其控制系统设计(16)_毕业论文

毕业论文移动版

毕业论文 > 机械论文 >

三维精密工作台机械结构及其控制系统设计(16)


下位机软件总体结构流程图如图 5.2所示:
图 5.2   下位机软件流程图    
5.3.2.中断初始化
中断初始化主要用来对中断模块中寄存器赋初值, 同时打开单片机总中断和
串口中断。串口中断初始化的下位机代码如下:
void init()
{    
    SCON=0x50;          // SCON: 模式 1, 8-bit UART, 使能接收    
    TMOD=0x20;            // TMOD: timer 1, mode 2, 8-bit reload
  PCON|=0x80;          //SMOD=1
    TH1=0xFD;          
    TL1=0xFD;             // TH1:  reload value for 4800 baud @ 12MHz                
    EA=1;                  //打开总中断*/   
    ES=1;                  //打开串口中断   
TR1=1;                 // TR1:  timer 1 run  
message=SLEEP;
}
5.3.3.中断服务程序
当 PC机向下位机发送控制字命令时,下位机立即进入中断服务子程序,然
后将标志位清零,读取缓冲区中字符。最后返回主函数
UART_SER() interrupt 4                     
{        
RI=0;                             //标志位清零                             
message=SBUF;                   //接受字符,并存入字符串 str1[]                  
ES=0;
ES=1;
  flag=1;
}
5.3.4.主函数设计
当下位机没有接收到中断信号时,message=SLEEP,单片机进入休眠状态,
等待中断的到来。中断产生后,依据接收到的字符进入 switch 程序,选择相应
的Case语句执行。
Switch 语句包括 4种情况:
(1)Case SLEEP,对应的十优尔进制数0x00,单片机接收到此字符后 PCON
置为 01,单片机进入休眠状态。
(2)CASE SEND_START_XY1,对应的十优尔进制数位 0xAA,代表三文精密
工作台要进行平面运动。单片机接收到此字符后  ,进入二文工作台数据接收子
函数 kzz(),依次接收 a(2)~a(11)共 10 个字符,并通过处理计算出二文运动的起
点坐标(x1,y1),终点(x2,y2),速度v。最后返回主函数。
(3)CASE SEND_START_XY2,对应的十优尔进制数位 0x97,代表三文精密
工作台要进行平面运动。单片机接收到此字符后  ,进入二文工作台数据接收子
函数 kzz(),依次接收 a(2)~a(11)共 10 个字符,并通过处理计算出二文运动的起
点坐标(x1,y1),终点坐标(x2,y2),速度 v。最后返回主函数,将二文工作台的
当前坐标(x_buff,y_buff)赋给起点坐标(x1,y1) ,以实现任意位置回零的功能。   (责任编辑:qin)