完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
发送单个字符的时候,可以正常接收,但改成数组之后就收不到任何东西 #include #define uint unsigned int #define uchar unsigned char uchar tempbuf; void SentPart() { TMOD = 0x20;//定时器T1为方式2 TH1 = 0xfd;//波特率为9600bit/s TL1 = 0xfd; SCON = 0x40;//方式1只发送,不接收 PCON = 0x00;//SMOD=0 TR1 = 1;//启动T1; } void delay(void) { uint i; for(i=0;i<200;i++) {} } uchar Keyscan(void) { uchar i, j, temp, Buffer[4] = {0xef, 0xdf, 0xbf, 0x7f}; //逐列置0,检查行线 for(j = 0; j < 4; j++) //循环四次 { P2 = Buffer[j]; temp = 0x01; //判断P1.0口 for(i = 0; i < 4; i++) { if(!(P2 & temp)) return (i + j * 4);//返回取得键值 temp <<= 1; //左移判断行 } } return 0; //无按键则返回0 } void Main(void) { uchar num[16]; uchar Key_Value=0; uchar Key_Temp1; uchar Key_Temp2; uint i; uint count=0; uint k; SentPart(); for( i=0;i<16;i++)//初始化键值数组 { num=0; } while(1) { P2 = 0xff; Key_Temp1 = Keyscan(); if(Key_Temp1 != 0) //有键按下时 { delay(); Key_Temp2 = Keyscan(); if (Key_Temp1 == Key_Temp2) //两次键值相同时,则确实有键按下 { Key_Value = Key_Temp1; count++; while(Keyscan()!=0) //等待按键释放 switch(Key_Value) { case 0x00: Key_Value=0x01;num[count]=1;break;//1 case 0x04: Key_Value=0x02;num[count]=2;break;//2 case 0x08: Key_Value=0x03;num[count]=3;break;//3 //case 0x0C: Key_Value=0x0a;num[10]=10;break;//A case 0x01: Key_Value=0x04;num[count]=4;break;//4 case 0x05: Key_Value=0x05;num[count]=5;break;//5 case 0x09: Key_Value=0x06;num[count]=6;break;//6 //case 0x0D: Key_Value=0x0B;num[11]=11;break;//B case 0x02: Key_Value=0x07;num[count]=7;break;//7 case 0x06: Key_Value=0x08;num[count]=8;break;//8 case 0x0A: Key_Value=0x09;num[count]=9;break;//9 //case 0x0E: Key_Value=0x0C;num[12]=12;break;//C case 0x03: Key_Value=0x0E;num[count]=' ';break;//* // case 0x07: Key_Value=0x00;num[0]=0;break;//0 case 0x0B: Key_Value=0x0F;num[count]=0;break;//# //case 0x0F: Key_Value=0x0D;num[13]=13;break;//D default:break; } while(Key_Value==0x0F) { for( k=0;k { tempbuf=num[k]; } while(1) { SBUF = tempbuf;//数据送串行口发送 while (ti == 0);//如果TI=0,未发送完,循环等待 TI = 0;//已发送完,把TI清0 }
} } }
} } |
|
相关推荐
4个回答
|
|
那肯定是程序写错了把
|
|
|
|
发送部分应该跟在tempbuf=num[k]后面,在同一个for循环里
|
|
|
|
你循环发送部分的偏移应该是没有进行加运算吧
|
|
|
|
谢谢分享!
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
高通的蓝牙QCC308x和51xx芯片开发工具和文档必须高通审核才能下载和使用吗?
939 浏览 0 评论
1495 浏览 0 评论
会员风采!华秋电子——致力于“为电子产业增效降本”的数字化智造平台
987 浏览 0 评论
【应用笔记】BlueNRG-LP、BlueNRG-LPS+省电模式
8040 浏览 1 评论
11259 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-19 12:16 , Processed in 0.659861 second(s), Total 80, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号