下位机软件总体结构流程图如图 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) ,以实现任意位置回零的功能。  
上一篇:LabVIEW的列车制动装置性能检测平台的设计开发
下一篇:用于芯片加工的非接触式真空搬运技术的研究

海力精密压机液压伺服送料系统的设计

现代机械制造工艺与精密...

机械产品三维变型设计研...

刍议现代机械制造工艺与...

關于常见机械制造工艺和...

Ansys卧式螺旋卸料沉降离心...

SolidWorks自动验布机的机械...

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

志愿者活动的调查问卷表

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

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

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

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

公寓空调设计任务书

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

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

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