zlg500S_51_UART.rar

  • PUDN用户
    了解作者
  • C/C++
    开发工具
  • 61KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 4
    下载次数
  • 2008-10-23 15:23
    上传日期
内部包含多个文件:main.c,config.c,zlg500s.h zlg500s.c等。对于zlg500s开发板的使用,系统测试有极大帮助
zlg500S_51_UART.rar
  • zlg500S_51_UART
  • zlg500S_UART.Opt
    1.5KB
  • delay.h
    1.8KB
  • zlg500s.c
    10.2KB
  • zlg500s.h
    3.2KB
  • main.OBJ
    19.2KB
  • zlg500S_UART.lnp
    99B
  • zlg500S_UART.M51
    36.4KB
  • zlg500s.OBJ
    28.5KB
  • zlg500S_UART.plg
    2.2KB
  • zlg500S_UART.Uv2
    2.1KB
  • delay.LST
    10.3KB
  • zlg500S_UART
    63.4KB
  • zlg500S_UART.hex
    7.5KB
  • delay.c
    6.5KB
  • zlg500S_comm.h
    859B
  • zlg500s.LST
    24.6KB
  • zlg500S_comm.c
    2.2KB
  • main.LST
    7.5KB
  • config.h
    325B
  • main.c
    3.6KB
  • zlg500S_comm.LST
    6.5KB
  • zlg500S_comm.OBJ
    13.6KB
  • main.h
    87B
  • delay.OBJ
    10.8KB
  • www.pudn.com.txt
    218B
内容介绍
#define Zlg500S_GLOBALS #include "config.h" #include "Zlg500S.h" #include "zlg500S_comm.h" static void memcopy(INT8U *DBfr,INT8U *SBfr,INT8U Len); static INT8U SEQ = 0xf0; //包号,见通信协议 INT8U Zlg500S_Cmd() { INT8U Status; SEQ += 0x10; SerBfr[CMDTYPE] |= SEQ; //命令类型与包号组成一个字节 Status = Ser_Send(); if(!Status) return COMMERR; WaitRespDly = ZLG500S_DELAY_500ms; //延时500ms while(WaitRespDly) //等待响应 { if(Ser_Rcv()) break; } if(WaitRespDly == 0) { //100ms内未收到响应 Status = COMMERR; } else { if(SEQ == (SerBfr[CMDTYPE]&0xf0)) { //包号匹配 Status = OK; } else Status = SEQERR; //包号不匹配 } return Status; } #if GetDvcInfo_en INT8U GetDvcInfo(INT8U *DvcInfo) { INT8U Status; SerBfr[CMDTYPE] = 1; SerBfr[COMMAND] = 'A'; SerBfr[LENGTH] = 0; Status = Zlg500S_Cmd(); if(Status == OK) { Status = SerBfr[STATUS]; if(Status == OK) memcopy(DvcInfo,&SerBfr[DATA],SerBfr[LENGTH]); } return Status; } #endif #if PCDConfig_en INT8U PCDConfig() { INT8U Status; SerBfr[CMDTYPE] = 1; SerBfr[COMMAND] = 'B'; SerBfr[LENGTH] = 0; Status = Zlg500S_Cmd(); if(Status == OK) { Status = SerBfr[STATUS]; } return Status; } #endif #if PCDClose_en INT8U PCDClose() { INT8U Status; SerBfr[CMDTYPE] = 1; SerBfr[COMMAND] = 'C'; SerBfr[LENGTH] = 0; Status = Zlg500S_Cmd(); if(Status == OK) { Status = SerBfr[STATUS]; } return Status; } #endif #if PCDLoadKey_en INT8U PCDLoadKey(INT8U KEYAB,INT8U SecNr,INT8U *Key) { INT8U Status; SerBfr[CMDTYPE] = 1; SerBfr[COMMAND] = 'E'; SerBfr[LENGTH] = 8; SerBfr[DATA] = KEYAB; SerBfr[DATA+1] = SecNr; memcopy(&SerBfr[DATA+2],Key,6); Status = Zlg500S_Cmd(); if(Status == OK) { Status = SerBfr[STATUS]; } return Status; } #endif #if PCDWriteReg_en INT8U PCDWriteReg(INT8U RegAddr,INT8U RegValue) { INT8U Status; SerBfr[CMDTYPE] = 1; SerBfr[COMMAND] = 'F'; SerBfr[LENGTH] = 2; SerBfr[DATA] = RegAddr; SerBfr[DATA+1] = RegValue; Status = Zlg500S_Cmd(); if(Status == OK) { Status = SerBfr[STATUS]; } return Status; } #endif #if PCDReadReg_en INT8U PCDReadReg(INT8U RegAddr,INT8U *RegValue) { INT8U Status; SerBfr[CMDTYPE] = 1; SerBfr[COMMAND] = 'G'; SerBfr[LENGTH] = 1; SerBfr[DATA] = RegAddr; Status = Zlg500S_Cmd(); if(Status == OK) { Status = SerBfr[STATUS]; if(Status == OK) *RegValue = SerBfr[DATA]; } return Status; } #endif #if PiccRequest_en INT8U PiccRequest(INT8U Req_Code,INT8U *TagType) { INT8U Status; SerBfr[CMDTYPE] = 2; SerBfr[COMMAND] = 'A'; SerBfr[LENGTH] = 1; SerBfr[DATA] = Req_Code; Status = Zlg500S_Cmd(); if(Status == OK) { Status = SerBfr[STATUS]; if(Status == OK) { *TagType = SerBfr[DATA]; *(TagType+1) = SerBfr[DATA+1]; } } return Status; } #endif #if PiccAnticoll_en INT8U PiccAnticoll(INT8U Sel_Code,INT8U Bcnt,INT8U *PiccSnr) { INT8U Status; SerBfr[CMDTYPE] = 2; SerBfr[COMMAND] = 'B'; SerBfr[LENGTH] = 2; SerBfr[DATA] = Sel_Code; SerBfr[DATA+1] = Bcnt; Status = Zlg500S_Cmd(); if(Status == OK) { Status = SerBfr[STATUS]; if(Status == OK) { memcopy(PiccSnr,&SerBfr[DATA],4); } } return Status; } #endif #if PiccSelect_en INT8U PiccSelect(INT8U Sel_Code,INT8U *PiccSnr,INT8U *Sak) { INT8U Status; SerBfr[CMDTYPE] = 2; SerBfr[COMMAND] = 'C'; SerBfr[LENGTH] = 5; SerBfr[DATA] = Sel_Code; memcopy(&SerBfr[DATA+1],PiccSnr,4); Status = Zlg500S_Cmd(); if(Status == OK) { Status = SerBfr[STATUS]; if(Status == OK) { *Sak = SerBfr[DATA]; } } return Status; } #endif #if PiccHalt_en INT8U PiccHalt() { INT8U Status; SerBfr[CMDTYPE] = 2; SerBfr[COMMAND] = 'D'; SerBfr[LENGTH] = 0; Status = Zlg500S_Cmd(); if(Status == OK) { Status = SerBfr[STATUS]; } return Status; } #endif #if PiccAuthE2_en INT8U PiccAuthE2(INT8U KeyAB,INT8U *PiccSnr,INT8U SecNr,INT8U Block) { INT8U Status; SerBfr[CMDTYPE] = 2; SerBfr[COMMAND] = 'E'; SerBfr[LENGTH] = 7; SerBfr[DATA] = KeyAB; memcopy(&SerBfr[DATA+1],PiccSnr,4); SerBfr[DATA+5] = SecNr; SerBfr[DATA+6] = Block; Status = Zlg500S_Cmd(); if(Status == OK) { Status = SerBfr[STATUS]; } return Status; } #endif #if PiccAuthKey_en INT8U PiccAuthKey(INT8U KeyAB,INT8U *PiccSnr,INT8U *Key,INT8U Block) { INT8U Status; SerBfr[CMDTYPE] = 2; SerBfr[COMMAND] = 'F'; SerBfr[LENGTH] = 12; SerBfr[DATA] = KeyAB; memcopy(&SerBfr[DATA+1],PiccSnr,4); memcopy(&SerBfr[DATA+5],Key,4); SerBfr[DATA+11] = Block; Status = Zlg500S_Cmd(); if(Status == OK) { Status = SerBfr[STATUS]; } return Status; } #endif #if PiccRead_en INT8U PiccRead(INT8U Block,INT8U *Bfr) { INT8U Status; SerBfr[CMDTYPE] = 2; SerBfr[COMMAND] = 'G'; SerBfr[LENGTH] = 1; SerBfr[DATA] = Block; Status = Zlg500S_Cmd(); if(Status == OK) { Status = SerBfr[STATUS]; if(Status == OK) { memcopy(Bfr,&SerBfr[DATA],16); } } return Status; } #endif #if PiccWrite_en INT8U PiccWrite(INT8U Block,INT8U *Bfr) { INT8U Status; SerBfr[CMDTYPE] = 2; SerBfr[COMMAND] = 'H'; SerBfr[LENGTH] = 17; SerBfr[DATA] = Block; memcopy(&SerBfr[DATA+1],Bfr,16); Status = Zlg500S_Cmd(); if(Status == OK) { Status = SerBfr[STATUS]; } return Status; } #endif #if PiccULWrite_en INT8U PiccULWrite(INT8U Block,INT8U *Bfr) { INT8U Status; SerBfr[CMDTYPE] = 2; SerBfr[COMMAND] = 'I'; SerBfr[LENGTH] = 5; SerBfr[DATA] = Block; memcopy(&SerBfr[DATA+1],Bfr,16); Status = Zlg500S_Cmd(); if(Status == OK) { Status = SerBfr[STATUS]; } return Status; } #endif #if PiccValue_en INT8U PiccValue(INT8U Mode,INT8U Block,INT8U *Value,INT8U TransBlock) { INT8U Status; SerBfr[CMDTYPE] = 2; SerBfr[COMMAND] = 'J'; SerBfr[LENGTH] = 7; SerBfr[DATA] = Mode; SerBfr[DATA+1] = Block; memcopy(&SerBfr[DATA+2],Value,4); SerBfr[DATA+6] = TransBlock; Status = Zlg500S_Cmd(); if(Status == OK) { Status = SerBfr[STATUS]; } return Status; } #endif #if PiccReset_en INT8U PiccReset(INT8U _1ms) { INT8U Status; SerBfr[CMDTYPE] = 2; SerBfr[COMMAND] = 'L'; SerBfr[LENGTH] = 1; SerBfr[DATA] = _1ms; Status = Zlg500S_Cmd(); if(Status == OK) { Status = SerBfr[STATUS]; } return Status; } #endif #if PiccActiveTypeA_en INT8U PiccActiveTypeA( INT8U BaudRate, INT8U Req_Code, INT8U *Atq, INT8U *Ats, INT8U *PiccSnrLen, INT8U *PiccSnr ) { INT8U Status; SerBfr[CMDTYPE] = 2; SerBfr[COMMAND] = 'M'; SerBfr[LENGTH] = 2; SerBfr[DATA] = BaudRate; SerBfr[DATA+1] = Req_Code; Status = Zlg500S_Cmd(); if(Status == OK) { Status = SerBfr[STATUS]; if(Status == OK) { *Atq = SerBfr[DATA]; *(Atq+1) = SerBfr[DATA+1]; *Ats = SerBfr[DATA+2]; *PiccSnrLen = SerBfr[DATA+3]; memcopy(PiccSnr,&SerBfr[DATA+4],*PiccSnrLen); } } return Status; } #endif #if PiccAutoDetect_en INT8U PiccAutoDetect(INT8U OutMode, INT8U TxMode, INT8U Req_Code, INT8U AuthMode, INT8U KEYAB, INT8U *Key, INT8U Block) { INT8U Status; SerBfr[CMDTYPE] = 2; SerBfr[COMMAND] = 'N'; if(AuthMode == 0) SerBfr[LENGTH] = 4; else { SerBfr[DATA+4] = KEYAB; if(AuthMode == 'E') { SerBfr[DATA+5] = *Key; SerBfr[DATA+6] = Block; SerBfr[LENGTH] = 7; } else if(AuthMode == 'F') { memcopy(&SerBfr[DATA+5],Key,6); SerBfr[DATA+11] = Block; SerBfr[LENGTH] = 12; } else return COMMERR; } SerBfr[DATA] = OutMode; SerBfr[DATA+1] = TxMode; SerBfr[DATA+2] = Req_Code; SerBfr[DATA+3] = AuthMode; Status = Zlg500S_Cmd(); if(Status == OK)
评论
    相关推荐
    • 数据库课程设计
      一个数据库课程设计,access管理工具实现,用的是窗体!
    • 数据库课程设计
      数据库课程设计十分完整有需要的请下载啊谢谢
    • 数据库课程设计
      广东工业大学数据库课程设计,可视化界面连接数据库,delphi7
    • 数据库课程设计
      数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述
    • 数据库课程设计
      数据库课程设计》由周爱武、汪海威、肖云编著,遵循数据库课程设计的具体要求,独立于具体的数据库教材,从实际应用系统的需求着手,引导读者逐步完成数据库设计全过程,重点讲解数据库系统的需求分析、概念设计、...
    • 数据库课程设计
      数据库课程设计人事管理系统 数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计...
    • 数据库课程设计
      数据库课程设计,基于visual basic自助银行管理系统,界面很清爽,实用。同学都说好,所以就上传了!!!
    • 数据库课程设计
      数据库课程设计 里面有详细的文档资料 包含数据库一切的图 以及生成的数据库表文件 期末得分为优秀
    • 数据库课程设计
      可以作为数据库课程设计,也可以作为Java的课程设计,内容全面。本资源转载的,非本人原创。用于交流学习,特此申明!
    • 数据库课程设计
      数据库课程设计蓝天大学学生管理系统 2.商店信息管理系统 3.实验室机房收费管理系统 4.图书馆资料检索系统 5.企业库存管理系统 6.仓库管理系统 7.工程项目管理系统 8.教材管理系统 9.企业人事管理系统 10.企业财务...