#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit P0_0=P0^0;
uchar idata table[17]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xaa,0xbd,0xee,0xdd,0x99,0xfd,0xff,0xff};
uchar idata table2[10];
uchar num,temp;
uchar num1=0,flag;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
uchar keyscan();
void int0(void) interrupt 0
{ int m;
P1=0xff;
for(m=0;m<5;m++)
{ P1=table2[m];
delay(500);
}
}
void main()
{ uchar n=0;
uchar m;
uchar i=0;
flag=1;
TMOD=0x20;//设置定时器1为工作方式2
TH1=0xe8;
TL1=0xe8;
TR1=1;
EA=1; //总中断开启
EX0=1; //外部中断INT0开启
IT0=1;
REN=1;
SM0=0;
SM1=1;
while(flag) i=keyscan();
flag=1;
while(1)
{
if(num1==0)
{
RI=0;
P0_0=0;
while(!RI);
delay(500);
P1=SBUF;
m=SBUF;
table2[n]=m;
n++;
RI=0;
}
else if(num1==1)
{
while(flag) i=keyscan();
flag=1;
P0_0=1;
SBUF=table[i-1];
while (!TI);
P1=table[i-1];
TI=0;
}
}
}
uchar keyscan()
{
P2=0xfe;
temp=P2;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(5);
temp=P2;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P2;
switch(temp)
{
case 0xee:{num=1;flag=0;}
break;
case 0xde:{num=2; flag=0;}
break;
case 0xbe:{num=3; flag=0;}
break;
case 0x7e:{num=4; flag=0;}
break;
}
while(temp!=0xf0)
{
temp=P2;
temp=temp&0xf0;
}
}
}
P2=0xfd;
temp=P2;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(5);
temp=P2;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P2;
switch(temp)
{
case 0xed:{num=5;flag=0;}
break;
case 0xdd:{num=6;flag=0;}
break;
case 0xbd:{num=7;flag=0;}
break;
case 0x7d:{num=8;flag=0;}
break;
}
while(temp!=0xf0)
{
temp=P2;
temp=temp&0xf0;
}
}
}
P2=0xfb;
temp=P2;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(5);
temp=P2;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P2;
switch(temp)
{
case 0xeb:{num=9; flag=0;}
break;
case 0xdb:{num=10; flag=0;}
break;
case 0xbb:{num=11;flag=0;}
break;
case 0x7b:{num=12; flag=0;}
break;
}
while(temp!=0xf0)
{
temp=P2;
temp=temp&0xf0;
}
}
}
P2=0xf7;
temp=P2;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(5);
temp=P2;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P2;
switch(temp)
{
case 0xe7:{num=13; flag=0;}
break;
case 0xd7:{num=14;num1=2; flag=0;}
break;
case 0xb7:{num=15;num1=1;flag=0;}
break;
case 0x77:{num=16; flag=0;num1=0;}
break;
}
while(temp!=0xf0)
{
temp=P2;
temp=temp&0xf0;
}
}
}
return num;
return flag;
}
没有合适的资源?快使用搜索试试~ 我知道了~
MAX485两个单片机半双工通信
共15个文件
lst:2个
bak:2个
obj:2个
5星 · 超过95%的资源 需积分: 50 91 下载量 164 浏览量
2010-07-15
11:12:50
上传
评论 1
收藏 38KB RAR 举报
温馨提示
基于MAX485两个单片机半双工通信,内部附有C语言源代码,采用KEIL进行程序仿真,内部有PROTEUS硬件仿真图。
资源推荐
资源详情
资源评论
收起资源包目录
MAX485.rar (15个子文件)
MAX485
123.DSN 119KB
test1.Uv2 2KB
test1_Uv2.Bak 0B
test1.hex 2KB
test1.Opt 1KB
STARTUP.A51 5KB
test1.OBJ 9KB
STARTUP.lst 11KB
test1 8KB
test1.plg 164B
test1.M51 13KB
test1.c 3KB
STARTUP.obj 854B
test1_Opt.Bak 1KB
test1.LST 12KB
共 15 条
- 1
资源评论
- wangdongliang_ai2012-12-13还不错,对我有一些帮助。只是不是很好
- walyliu2013-05-11很好,很有参考价值。
- guozhen12162013-10-24对学习485有帮助
- ccbbcc2013-08-04不错,对学习485有帮助。
- a1300787a2013-08-03资料挺全, 正需要学习这一块
happywran
- 粉丝: 3
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- JAVASpring MVC考试系统源码数据库 MySQL源码类型 WebForm
- 0045、单片机屏循环显示诗歌.zip
- C#ASP.NET幼儿园网站源码 前台+后台数据库 SQL2008源码类型 WebForm
- 这是一个用于IP和域名碰撞匹配访问的小工具优化版,能减少碰撞中出来的误报,旨意用来匹配出渗透过程中需要绑定hosts才能访问的弱主机或内部系统 .zip
- C#ASP.NET设备管理系统源码带文档+视频数据库 SQL2008源码类型 WebForm
- 电梯扶梯跌倒行为检测数据集VOC+YOLO格式1529张3类别.zip
- iwara4a-master.zip
- 自动化撰写渗透报告.zip
- 酒精检测游戏适用游戏游戏游戏游戏
- springboot设计-基于Spring Boot的员工管理信息系统设计方案
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功