标题:
请问如何入门单片机编程知识?比如双机通信
[打印本页]
作者:
CrazyAwei
时间:
2018-3-29 17:04
标题:
请问如何入门单片机编程知识?比如双机通信
RT 请问如何入门单片机编程知识?比如双机通信?
作者:
angmall
时间:
2018-3-30 07:37
怎样才能更快更好的学好单片机呢?单片机这门课是一项非常重视动手实践的科目,而且单片机也是一门集计算机编程与电子技术为一身的学科,如果你是单片机高手,那么说明你也是计算机编程和电子技术高手。
作者:
angmall
时间:
2018-3-30 09:47
//双机通信不需要安装虚拟端口软件 ,两机通过TXD <==> RXD 直接通信。
// 同一个程序,程序包含了收和发。
//将这个程序直接考到两个单片机上,把端口改一下就可以了嘛
#include<reg51.h>
#define uchar unsigned char;
#define uint unsigneed int;
uchar a0,a1,a2,a3,temp,i;
uchar code tab[ ]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
sbit P2_0=P2^0;
sbit P2_1=P2^1;
sbit P2_2=P2^2;
sbit P2_3=P2^3;
void delay(int ms)
{
while(ms--)
for(i=0;i<123;i++);
}
void initUART()
{
TMOD=0x20; //M1=1,M0=0 定时器1工作方式2(定时常数重装,8 位)
SCON=0x50; //SM0=0,SM1=1,REN=1 串口工作方式1,允许接收
TH1=0xfd; //晶振11.0592时,波特率9600
TL1=TH1; //TL1计数,溢出后,TH1值送入TL1
EA=1; //开总中断
ES=1; //允许串口中断
TR1=1; //启动定时器1
}
void disp()
{
a0=temp%2;
a1=temp/2%2;
a2=temp/2/2%2;
a3=temp/2/2/2%2;
P2_0=0;
P0=tab[a0];
delay(1);
P2_0=1;
P2_1=0;
P0=tab[a1];
delay(1);
P2_1=1;
P2_2=0;
P0=tab[a2];
delay(1);
P2_2=1;
P2_3=0;
P0=tab[a3];
delay(1);
P2_3=1;
}
void main()
{
initUART(); //调用串口初始化子程序
while(1)
{
disp();
SBUF=P1;
while(TI==0);
TI=0;
}
}
void UARTinterrupt() interrupt 4
{
if(RI)
{
RI=0;
temp=SBUF;
}
}
复制代码
作者:
stude
时间:
2018-3-30 11:07
多看芯片手册,多看别人的代码,多动手debug
作者:
stude
时间:
2018-3-30 11:08
多看芯片手册,多看别人的代码,多动手debug
作者:
hemoparrot
时间:
2018-3-30 11:23
动手啊。先找两块单片机,或者proteus仿真。然后写代码。
作者:
172928042@qq.co
时间:
2018-3-30 12:11
单片机这门课是一项非常重视动手实践的科目,而且单片机也是一门集计算机编程与电子技术为一身的学科
作者:
IdeaMing
时间:
2018-3-30 12:52
通讯可以有线通讯,可以无线通讯,最简单的有线通讯就是,单片机的一个引脚电平的高低信号,高是一个信号,低是一个信号。
作者:
IdeaMing
时间:
2018-3-30 12:55
angmall 发表于 2018-3-30 09:47
你这还用了串口,双机通讯,不只是串口,最简单的其实是引脚的高低电平信号就是通讯了,两个单片机引脚连一起一个收一个发,高电平一个意思,低电平一个意思。这就是通讯了。
作者:
17ZHF
时间:
2019-6-10 15:12
angmall 发表于 2018-3-30 09:47
怎么改端口我刚入门不懂
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1