三维精密工作台机械结构及其控制系统设计(16)
时间:2017-02-09 19:39 来源:毕业论文 作者:毕业论文 点击:次
下位机软件总体结构流程图如图 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) |