m0_60109095 2021-07-26 10:13 采纳率: 66.7%
浏览 190
已结题

实现上位机发送指令下位机回复指令

采用c8051f340单片机,用r485实现
指令随意
img

  • 写回答

2条回答 默认 最新

  • soar3033 2021-07-26 11:10
    关注

    下位机 接收/回复

    #include <c8051f340.h>
    #define uchar unsigned char
    #define uint unsigned int
    /***********端口初始化函数+******************/
    sbit Contrl = P0 ^ 1; //p0.1
    char txt[100];
    uint l = 0;
    uint count = 0;
    uint ll = 0;
    char tmp;
    
    void PORT_Init(void) {
        XBR0 = 0x01;//端口I/O交叉开关寄存器0
        XBR1 = 0x40;//端口I/O交叉开关寄存器1,交叉开关使能
        P0MDOUT = 0x10;//P0.4为推挽输出,其他的为漏极开路输出
        P0MDOUT |= 0x02;//P0.1也为推挽输出
    }
    void UART0_Init(void) {
        SCON0 |= 0x10;
        CKCON = 0x01;
        TH1 = 0x64;//波特率为9600
        TL1 = TH1;
        TMOD = 0x20;
        TR1 = 1;//P235,定时器1运行控制,定时器1允许
        TI0 = 1;//P235,中断1类型选择,INT1为边沿触发
    }
    void main() {
        char g;
        PCA0MD &= ~0x40;//关闭看门狗
        OSCICN |= 0x03;//P126
        PORT_Init();//端口初始化
        UART0_Init();//UART0初始化
        Contrl = 0;//485接收状态
        TI0 = 0;
        while (1) {
            if (l>0)
            {
                count++;
                if (count>1000)
                {
    
                    Contrl = 1;//485发送状态
                    ll = 0;
                    while (ll < l)
                    {
                        tmp= txt[ll];
                        SBUF0 = tmp;
                        while (TI0 == 0);//发送
                        TI0 = 0;
                        ll++;
                    }
                    l = 0;
                    Contrl = 0;//485接收状态
                }
            }
    
    
            if (RI0==0)
            {
                continue;
            }
            tmp= SBUF0;
            txt[l]= tmp;
            l++;
            RI0 = 0;
            count = 0;
    
    
    
    
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月4日
  • 已采纳回答 7月27日
  • 创建了问题 7月26日

悬赏问题

  • ¥15 数据库数据成问号了,前台查询正常,数据库查询是?号
  • ¥15 算法使用了tf-idf,用手肘图确定k值确定不了,第四轮廓系数又太小才有0.006088746097507285,如何解决?(相关搜索:数据处理)
  • ¥15 彩灯控制电路,会的加我QQ1482956179
  • ¥200 相机拍直接转存到电脑上 立拍立穿无线局域网传
  • ¥15 (关键词-电路设计)
  • ¥15 如何解决MIPS计算是否溢出
  • ¥15 vue中我代理了iframe,iframe却走的是路由,没有显示该显示的网站,这个该如何处理
  • ¥15 操作系统相关算法中while();的含义
  • ¥15 CNVcaller安装后无法找到文件
  • ¥15 visual studio2022中文乱码无法解决