C51单片机矩阵键盘做发送数据端的代码错误?

想实现的功能是,按下矩阵键盘一个键,将其代表的字符串通过串口发送出去,PC能够接收到这个代码。程序:#include<STC_NEW_8051.h>#defineucha... 想实现的功能是,按下矩阵键盘一个键,将其代表的字符串通过串口发送出去,PC能够接收到这个代码。
程序:
#include <STC_NEW_8051.h>
#define uchar unsigned char
#define uint unsigned int
uchar k;

uchar disp[]={0X01,0X02,0X03,0X04,0X05,0X06,0X07,0X08,0X09}; //准备输出的代码
uchar key[]={0xee,0xed,0xeb,0xe7,0xde,0xdd,0xdb,0xd7,0xbe}; //组合后的数字代码

void delay(uint ms) //延时
{
uchar t;
while(ms--)
{
for(t=0;t<120;t++);
}
}

uchar keyscan()
{
uchar scan1,scan2,keycode,j;
P3=0xf0;
scan1=P3; //P3连接键盘
if((scan1&0xf0)!=0xf0)
{
delay(30);
scan1=P3;
if((scan1&0xf0)!=0xf0)
{
P3=0x0f;
scan2=P3;
keycode=scan1| scan2; //组合 判断按键位置
for(j=0;j<=8;j++) //一个个判断
{
if(keycode==key[j]) //确定了按键位置
{
k=j;
return(k);
}
}
}
}
else P3=0xff;
return(9);
}

void keydown()
{
P3=0x0f;
if((P3&0x0f)!=0x0f)
{
keyscan();
SBUF=disp[k]; //发送disp[k]
while(!TI);
TI=0;

}
}

void main()
{
SCON=0X50;
PCON=0X00;
TMOD=0X20;
TH1=0XF4;
TL1=0XF4;
TR1=1;
EA=1;
ES=1;
TI=0;
P3=0xff; //按键置零
while(1)
{
keydown();

}
}
程序前半部分是书上的,有注释了。程序烧写后,LABVIEW里读不到发出的0x01,0x02....代码,好像是没发送成功,是不是要用中断来写发送端?
展开
 我来答
做而论道
高能答主

2012-05-04 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.1亿
展开全部
矩阵键盘,好像是连接在P3?
你的串行口,也是用P3?
威孚半导体技术
2024-08-19 广告
威孚(苏州)半导体技术有限公司是一家专注生产、研发、销售晶圆传输设备整机模块(EFEM/SORTER)及核心零部件的高科技半导体公司。公司核心团队均拥有多年半导体行业从业经验,其中技术团队成员博士、硕士学历占比80%以上,依托丰富的软件底层... 点击进入详情页
本回答由威孚半导体技术提供
summitworks
2012-05-04 · 超过23用户采纳过TA的回答
知道答主
回答量:109
采纳率:0%
帮助的人:59.2万
展开全部
哦 学习学习
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式