找回密码
 立即注册

QQ登录

只需一步,快速开始

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

请问如何入门单片机编程知识?比如双机通信

[复制链接]
跳转到指定楼层
楼主
ID:298983 发表于 2018-3-29 17:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
RT 请问如何入门单片机编程知识?比如双机通信?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:155507 发表于 2018-3-30 07:37 | 只看该作者
怎样才能更快更好的学好单片机呢?单片机这门课是一项非常重视动手实践的科目,而且单片机也是一门集计算机编程与电子技术为一身的学科,如果你是单片机高手,那么说明你也是计算机编程和电子技术高手。
回复

使用道具 举报

板凳
ID:155507 发表于 2018-3-30 09:47 | 只看该作者
  1. //双机通信不需要安装虚拟端口软件 ,两机通过TXD <==> RXD 直接通信。
  2. // 同一个程序,程序包含了收和发。
  3. //将这个程序直接考到两个单片机上,把端口改一下就可以了嘛
  4. #include<reg51.h>
  5. #define  uchar  unsigned  char;
  6. #define         uint  unsigneed int;
  7. uchar a0,a1,a2,a3,temp,i;
  8. uchar  code tab[ ]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
  9.             
  10. sbit  P2_0=P2^0;
  11. sbit  P2_1=P2^1;
  12. sbit  P2_2=P2^2;
  13. sbit  P2_3=P2^3;

  14. void  delay(int ms)
  15. {
  16.         while(ms--)
  17.         for(i=0;i<123;i++);
  18. }

  19. void initUART()   
  20. {
  21.         TMOD=0x20;   //M1=1,M0=0 定时器1工作方式2(定时常数重装,8 位)
  22.         SCON=0x50;   //SM0=0,SM1=1,REN=1 串口工作方式1,允许接收
  23.         TH1=0xfd;    //晶振11.0592时,波特率9600
  24.         TL1=TH1;     //TL1计数,溢出后,TH1值送入TL1
  25.         EA=1;        //开总中断   
  26.         ES=1;        //允许串口中断
  27.         TR1=1;       //启动定时器1
  28. }
  29. void disp()
  30. {
  31.         a0=temp%2;
  32.         a1=temp/2%2;
  33.         a2=temp/2/2%2;
  34.         a3=temp/2/2/2%2;
  35.         P2_0=0;
  36.         P0=tab[a0];
  37.         delay(1);
  38.         P2_0=1;
  39.         P2_1=0;
  40.         P0=tab[a1];
  41.         delay(1);
  42.         P2_1=1;
  43.         P2_2=0;
  44.         P0=tab[a2];
  45.         delay(1);
  46.         P2_2=1;
  47.         P2_3=0;
  48.         P0=tab[a3];
  49.         delay(1);
  50.         P2_3=1;
  51. }       
  52. void main()
  53. {
  54.         initUART();  //调用串口初始化子程序
  55.         while(1)
  56.         {
  57.                 disp();
  58.                 SBUF=P1;
  59.                 while(TI==0);
  60.                 TI=0;
  61.         }
  62. }

  63. void UARTinterrupt() interrupt 4        
  64. {
  65.         if(RI)
  66.         {        
  67.                 RI=0;
  68.                 temp=SBUF;
  69.         }       
  70. }

复制代码
回复

使用道具 举报

地板
ID:299328 发表于 2018-3-30 11:07 | 只看该作者
多看芯片手册,多看别人的代码,多动手debug
回复

使用道具 举报

5#
ID:299328 发表于 2018-3-30 11:08 | 只看该作者
多看芯片手册,多看别人的代码,多动手debug
回复

使用道具 举报

6#
ID:297403 发表于 2018-3-30 11:23 | 只看该作者
动手啊。先找两块单片机,或者proteus仿真。然后写代码。
回复

使用道具 举报

7#
ID:299365 发表于 2018-3-30 12:11 | 只看该作者
单片机这门课是一项非常重视动手实践的科目,而且单片机也是一门集计算机编程与电子技术为一身的学科
回复

使用道具 举报

8#
ID:276663 发表于 2018-3-30 12:52 | 只看该作者
通讯可以有线通讯,可以无线通讯,最简单的有线通讯就是,单片机的一个引脚电平的高低信号,高是一个信号,低是一个信号。
回复

使用道具 举报

9#
ID:276663 发表于 2018-3-30 12:55 | 只看该作者

你这还用了串口,双机通讯,不只是串口,最简单的其实是引脚的高低电平信号就是通讯了,两个单片机引脚连一起一个收一个发,高电平一个意思,低电平一个意思。这就是通讯了。
回复

使用道具 举报

10#
ID:543474 发表于 2019-6-10 15:12 来自触屏版 | 只看该作者
angmall 发表于 2018-3-30 09:47

怎么改端口我刚入门不懂
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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