应用介绍
多机通信
#include "PMPDataT.h"
/* 延时t毫秒 */
void delay(uint t)
{
uint i;
while(t--)
{
/* 对于11.0592M时钟,约延时1ms */
for (i=0;i<125;i++)
{}
}
}
uchar keyscan(void)
{
uchar scancode,tmpcode;
P1 = 0xf0; // 发全0行扫描码
if ((P1&0xf0)!=0xf0) // 若有键按下
{
delay(10); // 延时去抖动
if ((P1&0xf0)!=0xf0) // 延时后再判断一次,去除抖动影响
{
scancode = 0xfe;
while((scancode&0x10)!=0) // 逐行扫描
{
P1 = scancode; // 输出行扫描码
if ((P1&0xf0)!=0xf0) // 本行有键按下
{
tmpcode = (P1&0xf0)|0x0f;
/* 返回特征字节码,为1的位即对应于行和列 */
return((~scancode)+(~tmpcode));
}
else scancode = (scancode<<1)|0x01; // 行扫描码左移一位
}
}
}
return(0); // 无键按下,返回值为0
}
/* 发送数据函数 */
void senddata(uchar buf)
{
/* 发送数据 */
TI = 0;
TB8 = 0; // 发送数据帧
SBUF =buf;
while(!TI);
TI = 0;
}
/* 串口初始化函数 */
void init_serial()
{
TMOD = 0x20; // 定时器T1使用工作方式2
TH1 = 250;
TL1 = 250;
TR1 = 1; // 开始计时
PCON = 0x80; // SMOD = 1
SCON = 0xd0; // 工作方式,9位数据位,波特率9600kbit/s,允许接收
}
void Getkey()
{
switch(get_key)
{
case 0x11: // 1行1列,数字0
key=0xc0;
break;
case 0x21: // 1行2列,数字1
key=0xf9;
break;
case 0x41: // 1行3列,数字2
key=0xa4;
break;
case 0x81: // 1行4列,数字3
key=0xb0;
break;
case 0x12: // 2行1列,数字4
key=0x99;
break;
case 0x22: // 2行2列,数字5
key=0x92;
break;
case 0x42: // 2行3列,数字6
key=0x82;
break;
case 0x82: // 2行4列,数字7
key=0xf8;
break;
case 0x14: // 3行1列,数字8
key=0x80;
break;
case 0x24: // 3行2列,数字9
key=0x90;
break;
case 0x44: // 3行3列,10
key=0x88;
break;
case 0x84: // 3行4列,11
key=0x83;
break;
case 0x18: // 4行1列,12
key=0xc6;
break;
case 0x28: // 4行2列,13
key=0xa1;
break;
case 0x48: // 4行3列,14
key=0x86;
break;
case 0x88: // 3行4列,15
key=0x8e;
break;
default:break;
}
}
/* 主程序 */
void main()
{
uchar i = 0;
key=0xc0;
while(1)
{
get_key = keyscan(); // 调用键盘扫描函数
Getkey();
buf=key;
/* 通过P0口读要访问的从机地址 */
P0 = 0xff;
addr = P0&0x0f;
init_serial(); // 串口初始化
EA = 1; // 关闭所有中断
TI = 0;
TB8 = 1; // 发送地址帧
SBUF = addr;
while(!TI);
TI = 0;
senddata(buf); // 发送数据
}
}
©版权声明:本文内容由互联网用户自发贡献,版权归原创作者所有,本站不拥有所有权,也不承担相关法律责任。如果您发现本站中有涉嫌抄袭的内容,欢迎发送邮件至: www_apollocode_net@163.com 进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
转载请注明出处: apollocode » 多机通信
文件列表(部分)
名称 | 大小 | 修改日期 |
---|---|---|
dj.DSN | 17.91 KB | 2019-06-24 |
dj.PWI | 0.45 KB | 2019-06-24 |
Last Loaded dj.DBK | 18.88 KB | 2019-06-24 |
PMPDataR.c | 0.85 KB | 2019-06-24 |
PMPDataR.h | 0.30 KB | 2019-06-24 |
PMPDataR.LST | 1.53 KB | 2019-06-24 |
PMPDataR.OBJ | 2.06 KB | 2019-06-24 |
PMPDataRPro | 2.08 KB | 2019-06-24 |
PMPDataRPro.hex | 0.46 KB | 2019-06-24 |
PMPDataRPro.lnp | 0.05 KB | 2019-06-24 |
PMPDataRPro.M51 | 1.19 KB | 2019-06-24 |
PMPDataRPro.Opt | 0.64 KB | 2019-06-24 |
PMPDataRPro.plg | 0.18 KB | 2019-06-24 |
PMPDataRPro.Uv2 | 0.86 KB | 2019-06-24 |
PMPDataRPro_Opt.Bak | 0.65 KB | 2019-06-24 |
PMPDataT.c | 1.25 KB | 2019-06-24 |
PMPDataT.h | 0.35 KB | 2019-06-24 |
PMPDataT.LST | 2.04 KB | 2019-06-24 |
PMPDataT.OBJ | 2.67 KB | 2019-06-24 |
PMPDataTPro | 2.49 KB | 2019-06-24 |
PMPDataTPro.hex | 0.51 KB | 2019-06-24 |
PMPDataTPro.lnp | 0.05 KB | 2019-06-24 |
PMPDataTPro.M51 | 1.51 KB | 2019-06-24 |
PMPDataTPro.Opt | 0.52 KB | 2019-06-24 |
PMPDataTPro.plg | 0.20 KB | 2019-06-24 |
PMPDataTPro.Uv2 | 0.86 KB | 2019-06-24 |
PMPDataTPro_Opt.Bak | 0.63 KB | 2019-06-24 |
proc | 0.00 KB | 2019-06-24 |
0039、多机通信 | 0.00 KB | 2019-06-24 |
发表评论 取消回复