我想用SPCOMM发送数据到ATMEL89C52
指令格式:
    
     D00、D01、D02、D03….
    上式含义为:打开第00号、第01号、第02号、第03号….舱门其中,字符采用ASC码表示。单片机先检测是不是有“D”,有则处理下次收到的数据。
请问应该怎样写发送代码

解决方案 »

  1.   

    var
      sp:string;
      l:array[0..10] of char;//发送时用到的临时变量
    begin
      sp:=#$0D#$01;
      strpcopy(l,sp);
      spcom.WriteCommData(l,2);
    end;
    别忘了给分呀!
      

  2.   

    试过了,将0D改为$44也不见好
    下面是我的串口中断程序:
    RS232: PUSH ACC;
    PUSH PSW;
    MOV R6,#00H;与7DH一起作为1S延时的标志。
    SETB 7DH;
    JBC TI,PANRI;
    PANRI: JNB RI,RSEND;
    CLR RI;
    MOV A,SBUF;
    CJNE A,#44H,REACT;
    SETB 7EH;
    MOV SBUF,A;
    LJMP RSEND;
    REACT: JNB 7EH,RSEND;
    CLR 7EH;
    MOV A,SBUF;
    MOV SBUF,A;
    MOV R3,A;
    SETB 7FH;
    RSEND: POP PSW;
    POP ACC;
    RETI ;7FH作为中断外面是否对R3进行处理的标记。对R3*2后再表找到对就了程序的入口,子程序处理8155的口的电平。
      

  3.   

    spcomm的很多属性我用的是缺省值,请问哪些是我必须设置的呢
    请注意单片机每接收到一字节数据都是要回送的。急!谢谢大家。     MOV TMOD,#00100001B;
    MOV IE,#00010010B;
    MOV SCON,#01010000B;
    MOV TH1,#0FDH; 9600 BIT
    MOV TL1,#0FDH;
    SETB TR1;
    请大家参考
      

  4.   

    magc888(繁星)的答案是正确的,不过要发送#$44#$01