找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2550|回复: 6
打印 上一主题 下一主题
收起左侧

求程序 双单片机之间的通信

[复制链接]
跳转到指定楼层
楼主

两个单片机之间的通信:在A机的4*4键盘(0——f)上按下一个按键,在B机数码管上显示相应的数据;在B机按下操作,在A机数码管显示相应的数据.
哪位大神能帮写一下实现这个功能的汇编语言程序或者C语言程序吗?谢谢
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:82765 发表于 2017-12-5 16:07 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

板凳
ID:257786 发表于 2017-12-5 17:20 | 只看该作者
跟你的不一样 可以参考一下
ORG 0000H
AJMP MAIN
ORG 0023H
AJMP INTRT

ORG 0030H
MAIN:MOV TMOD,#20H               ;设置定时器1的工作方式
     MOV TH1,#0E6H               ;设置波特率1200
     MOV TL1,#0E6H
     SETB TR1               ;启动定时器1
     MOV SCON,#50H          ;设置串口工作方式
     CLR RI                 ;清除标志位
     CLR TI                 ;清除标志位
         SETB ES                ;开串口中断
     SETB EA                ;开总中断
LOOP:JNB P3.2,S3OK          ;检测按键是否按下
     JNB P3.3,S4OK
         AJMP LOOP
S3OK:MOV A,#0FBH                    ;点亮LED4
     MOV SBUF,A
         JNB TI,$               ;等待发送完
         SJMP LOOP2
S4OK:MOV A,#0F7H                    ;点亮LED5
     MOV SBUF,A
         JNB TI,$               ;等待发送完        
LOOP2:ACALL DELAY
         AJMP LOOP

INTRT:PUSH ACC
      JNB TI,NEXT           
          CLR TI
          AJMP OUT
NEXT: CLR RI                            ;清标志      
          MOV A,SBUF                        ;读取接收的数据
          MOV P1,A                                ;送P1口
OUT:  POP ACC
          RETI

DELAY:MOV R3,#60     ;   延时0.6秒
D1:   MOV R4,#20
D2:   MOV R5,#248
      DJNZ R5,$
      DJNZ R4,D2
      DJNZ R3,D1
      RET

END
回复

使用道具 举报

地板
ID:243437 发表于 2017-12-5 19:21 | 只看该作者
gss0418 发表于 2017-12-5 17:20
跟你的不一样 可以参考一下
ORG 0000H
AJMP MAIN

你这个程序的仿真图有吗?可以发一下吗?谢谢
回复

使用道具 举报

5#
ID:164602 发表于 2017-12-6 08:49 | 只看该作者
我有试验成功的例子:
由于你的两单片机要求一样,硬件一样,所以,只需要一个程序就可以了。两个单片机都下载同样的程序,功能也是一样的,符合你的要求。
不过,从你的电路图中,我没有看到两单片机连接的线路,你要注意哦。
我的程序对应的电路如图



程序如下:
/*
串口实验:单片机与单片机之间的通讯,这是主机程序
*/                                                                         

#include<reg51.h>

#define LED P2
#define JP P1

unsigned char JZ;
bit AJ;       

void UsartConfiguration();
void Delay10ms(unsigned int c);
void KeyDown(void);

void main()//主函数
{
        UsartConfiguration();
        Delay10ms(10);
        while(1)
        {
                KeyDown();
                if (AJ==1)
                {
                        AJ=0;
                        SBUF = JZ;
                        while (!TI);
                        TI = 0;
                }
        }
}

void UsartConfiguration()
{
        SCON=0X50;
        TMOD=0X20;
        PCON=0X80;
        TH1=0XF3;
        TL1=0XF3;
        TR1=1;
        EA=1;
        ES=1;
}

void Delay10ms(unsigned int c)//延时10ms
{
    unsigned char a, b;
    for (;c>0;c--)
        {
                for (b=38;b>0;b--)
                {
                        for (a=130;a>0;a--);
                }         
        }      
}

void KeyDown(void)
{
        unsigned char a=0;
        JP=0x0f;//测试列
        if(JP!=0x0f)
        {
                Delay10ms(1);
                if(JP!=0x0f)
                {
                        AJ=1;
                        switch(JP)
                        {
                                case(0X07):        JZ=0;break;
                                case(0X0b):        JZ=1;break;
                                case(0X0d): JZ=2;break;
                                case(0X0e):        JZ=3;break;
                        }
                        JP=0Xf0;//测试行
                        switch(JP)
                        {
                                case(0X70):        JZ=JZ;break;
                                case(0Xb0):        JZ=JZ+4;break;
                                case(0Xd0): JZ=JZ+8;break;
                                case(0Xe0):        JZ=JZ+12;break;
                        }
                        for (a=0;(a<50)&&(JP!=0xf0);a++)
                        {
                                 Delay10ms(1);
                        }
                }
        }
}

void FSSZ(void) interrupt 4
{
        RI=0;
        LED=~SBUF;
        Delay10ms(1);
}


回复

使用道具 举报

6#
ID:243437 发表于 2017-12-6 15:51 | 只看该作者
HC6800-ES-V2.0 发表于 2017-12-6 08:49
我有试验成功的例子:
由于你的两单片机要求一样,硬件一样,所以,只需要一个程序就可以了。两个单片机都 ...

我的电路图两个单片机有连接的,P3.0与P3.1交错连接
回复

使用道具 举报

7#
ID:47286 发表于 2017-12-6 16:17 | 只看该作者
lianjinhui 发表于 2017-12-6 15:51
我的电路图两个单片机有连接的,P3.0与P3.1交错连接

你就这么连上然后互相用uart通讯就行啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表