论文(5 - 23)- 终结版 - 图文 下载本文

基于单片机的数字采控器设计

for(i=0;i<8;i++) {

SCK=0;

if(sdataL&0x01) DS = 1; //串行数据输出 else DS = 0;

SCK=1; //移位输入时钟,上升沿输入 sdataL>>=1; _nop_(); _nop_(); _nop_(); }

for(i=0;i<8;i++)

{ SCK=0; if(sdataH&0x01) DS = 1; //串行数据输出 else DS = 0; SCK=1; //移位输入时钟,上升沿输入 sdataH>>=1; _nop_(); _nop_(); _nop_(); }

LCK=0; //并行输出时钟 _nop_(); _nop_(); _nop_(); LCK=1; }

main() {

UCHAR *lpc ;

BOOL COM_OK=FALSE; UCHAR lpxdata[5]; UCHAR tmp=0x00; RS485_Re_EN=0;

tmp=P3; //P3=0xFF;获取本地波特率设置 tmp=(tmp&0xC0)>>6; baurd_SetVal=tmp;

hc74_165(get_Value,3); //获取模块ID设置

44

盐城工学院本科生毕业论文(毕业设计说明书) 2012

SubID_SetVal=get_Value[2]; SetSubID(SubID_SetVal);

Init_COM(SubID_SetVal,HOSTID,tmp,VERIFY_NONE,0); //初始化串口 ClrCOM(); //清除缓存 EA = 1; //开中断 while ( 1 ) {

RS485_Re_EN=0; //使能485接收

lpc=GetCOM_Event(SCommand); //获取串口通信事件 switch(lpc[IDX_CMD]) { case CMD_COMM_TEST://0x01 { //COM通信测试 WriteCom(CMD_COMM_TEST,\ COM_OK=TRUE; break; } case CMD_IO_IN://0x02 { //IO输入信息上传 hc74_165(get_Value,3); lpxdata[0]=get_Value[0]; //要上传的数据 lpxdata[1]=get_Value[1]; lpxdata[2]=get_Value[2]; WriteCom(CMD_IO_IN,lpxdata,3); break; } case CMD_RELAY_IN:

{//本地控制继电器信息上传 hc74_165(get_Value,3); lpxdata[0]=get_Value[0]; //要上传的数据 lpxdata[1]=get_Value[1]; WriteCom(CMD_RELAY_IN,lpxdata,2); break; } case CMD_RELAY_SET://0x04 {//继电器控制 if(lpc[IDX_DATA]) { flag_Relay=0x00; Writ_595_HL(lpc[IDX_DATA+1],lpc[IDX_DATA+2]); } else {

45