导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→发表看法:[Jerrycjt]C51编程:大家帮我看看通讯!!!



No.12828
作者:Jerrycjt
邮件:caojiangting@21cn.com
ID:2687
登陆:6次
文章数:18篇
最后登陆IP:61.150.43.37
最后登陆:2006/2/13 16:44:33
注册:2002/10/10 17:37:00
财富:75
发帖时间:2002/10/24 15:18:00
发贴者IP:61.150.7.240
标题:Jerrycjt:C51编程:大家帮我看看通讯!!!
摘要:No.12828C51编程:大家帮我看看通讯!!! 485通讯 CTR485 为控制线 偶校验、累加和校验
格式: FE FE FE FE 68 X X X X X X 68 X  L  X .... CRC 16 

 #include        <c:\comp51\reg52.h>
#include     <c:\comp51\intrins.h>
typedef        unsigned char         uchar;
typedef        unsigned int        uint;
typedef        unsigned long        ulong;

struct    ByteDcr
{
    uchar     ByteHI;
    uchar     ByteLO;
};
union        WordDcr
{
    uint    Word;
    struct    ByteDcr    ByteWord;
};
union        WordDcr        idata        DDWord;
uchar        idata        MeterNO[6],InBuff[20];
uchar        idata        ControlNO,LengthNO,SystemError;
bit    fgDataEnable=0;
sbit        CTR485=P1^7;

void  answer_com(uchar ctr,uchar *str1,uint strlen1,uchar *str2,uint strlen2);
unsigned char receive_char_com(void);
bit  GetParity(unsigned char Datavalue);
void init_serialcomm(void);
void send_char_com(unsigned char ch);
void serial (void);
void main(void)
{
    init_serialcomm();  //初始化串口
    while(1)
    {
                        send_char_com(0x12);
                        if(fgDataEnable)
            {
                fgDataEnable=0;
                answer_com(0x81,MeterNO,0,MeterNO,0);

            }

    }
}
void  answer_com(uchar ctr,uchar *str1,uint strlen1,uchar *str2,uint strlen2)
{
        uchar check,k;
        send_char_com(0xfe);
        send_char_com(0xfe);
        send_char_com(0xfe);
        send_char_com(0xfe);
        send_char_com(0x68);
        check=0x68;
        send_char_com(0x00);
        check+=0x00;
        send_char_com(0x00);
        check+=0x00;
        send_char_com(0x00);
        check+=0x00;
        send_char_com(0x00);
        check+=0x00;
        send_char_com(0x00);
        check+=0x00;
        send_char_com(0x00);
        check+=0x00;
        send_char_com(0x68);
        check+=0x68;
        send_char_com(ctr);
        check+=ctr;
        //send_char_com((DDWord.ByteWord.ByteLO+0x33));
        check+=(DDWord.ByteWord.ByteLO+0x33);
        //send_char_com((DDWord.ByteWord.ByteHI+0x33));
        check+=(DDWord.ByteWord.ByteHI+0x33);
        do
       {
        check+=*(str1+k);
        send_char_com(*(str1 + k));
        k++;
       } while(k < strlen1);
        do
       {
        check+=*(str2+k);
        send_char_com(*(str2 + k));
        k++;
       } while(k < strlen2);
        send_char_com(check);
        send_char_com(0x16);

}
bit GetParity(unsigned char Datavalue)
{
        ACC=Datavalue;
        if(P==1) return 1;
        else
        return 0;
}
void init_serialcomm(void)
{
    SCON  = 0xd0;       //SCON: serail mode 1, 8-bit UART, enable ucvr
    TMOD |= 0x20;       //TMOD: timer 1, mode 2, 8-bit reload
    PCON |= 0x80;       //SMOD=1;
    TH1   = 0xFa;       //Baud:9600  fosc=11.05MHz
    ES=1;
    EA=1;        &n ......

>>返回讨论的主题



  发表回复
用户名   *您没有注册?
密码   *
验证码   * .
标题   *
心情
随便说说    我回答你    最新发现    得意的笑   
气死我了    真是没劲    坚决同意    表示反对   
大家过来    好奇怪哟    懒得理它    大家小心   
文件上传
内容


字体:      字体大小:    颜色:
粗体 斜体 下划线 居中 超级连接 Email连接 图片 Flash图片 Shockwave文件 realplay视频文件 Media Player视频文件 QuickTime视频文件 引用 飞行字 移动字 发光字 阴影字 查看更多的心情图标 背景音乐
点击加入表情
                         
选项
有回复时用短消息通知您?

   




老古网执行:47毫秒 最大:5186毫秒 查询6次