完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
写的一个简单按键输入,指示灯输出的小程序,编译现在没有报错,烧录进单片机运行不起来。看不出那里有问题。望有51单片机高手帮忙看下程序问题出在那里,不胜感激,先行谢过!
//--包含的头文件--// #include #include #define uchar unsigned char //--定义要使用的IO口--// ***it USB_SPDIF=P0^0; //USB_SPDIF选择 //***it 62429_CLK=P0^1; //62429_CLK //***it 62429_DATA=P0^2; //62429_DATA ***it LedFreq0=P0^3; //频率显示0指示 ***it LedFreq1=P1^0; //频率显示1指示 ***it LedFs0=P1^4; //频率输入0 ***it LedFs1=P1^5; //频率输入1 ***it LedCoax=P1^1; //同轴输入指示 ***it LedOpt=P1^2; //光纤输入指示 ***it LedUSB=P1^3; //USB输入指示 ***it KeyInput=P3^2; //输入模式选择 ***it KeyDown=P3^3; //音量减 ***it KeyUp=P3^4; //音量加 uchar conunt=0; //--声明全局函数--// void Delay10ms(); //延时子函数 void scan_key(); //按键子函数 /******************************************************************************* * 函 数 名 : Delay10ms * 函数功能 : 延时函数,延时10ms * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void Delay10ms(unsigned int c) //误差 0us { unsigned char a, b; //--c已经在传递过来的时候已经赋值了,所以在for语句第一句就不用赋值了 for (;c>0;c--) { for (b=38;b>0;b--) { for (a=130;a>0;a--); } } } /******************************************************************************* * 函 数 名 : scan_key() * 函数功能 : 扫描键盘 * 输 入 : 无 * 输 出 : 读取到的键值 *******************************************************************************/ void scan_key (void) { if (KeyInput==0) { Delay10ms(1); if (KeyInput==0) { Delay10ms(1); while (KeyInput==0); conunt++; if (conunt==3) { conunt = 0; } } } } /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void main (void) { uchar count = 0; LedFreq0 = 1; //初始化LED LedFreq1 = 1; LedCoax = 1; LedOpt = 1; LedUSB = 1; USB_SPDIF=1; { while (1) { LedFreq0=LedFs0; LedFreq1=LedFs1; scan_key (); if (count==0) { LedUSB = 0; LedCoax = 1; LedOpt = 1; USB_SPDIF =1; } if (count==1) { LedUSB = 1; LedCoax = 0; LedOpt = 1; USB_SPDIF =0; } if (count==2) { LedUSB = 1; LedCoax = 1; LedOpt = 0; USB_SPDIF =0; } } } } |
|
相关推荐
29个回答
|
|
|
51的一些知识都忘记了,但是你那个scan_key函数中,while(key_input=0);不知道是想做什么判断的,你这貌似压根不起作用。即使key_input=1了,对语句的执行没有任何影响啊,因为那里加了分号啊~~是不是这么理解的还请告知。
最佳答案
|
|
|
|
|
|
是没有任何反应
|
|
|
|
|
|
你能确定硬件是正常的吗
|
|
|
|
|
|
|
|
|
|
|
|
打错了,你加的花括号是什么意思
|
|
|
|
|
|
按照逻辑分析好像这样多加了个花括号也不会引起运行不起来的,会不会硬件有问题
|
|
|
|
|
|
从软件仿真来看,程序是正常运行的,硬件只有一个按键和三个指示灯,我可以肯定硬件没有问题的,按键上拉也加上了 |
|
|
|
|
|
本帖最后由 zds110 于 2016-1-17 11:43 编辑
事实上不加花括号的话软件仿真都过不了。 |
|
|
|
|
|
在while(1)里加个稍长时间的延时或者你debug一下看能不能进入if语句里,你这个一个按键计数感觉是有点问题的,非要这样的建议按键程序里最好加入松手的检测
|
|
|
|
|
|
|
|
|
|
|
|
仿真是正常的,实际情况不正常,那应该说明是硬件问题才对 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
零tot 发表于 2016-1-17 12:28 加延时还是不行,不过仔细看看,好像是按键的子程序有问题,具体是那里有问题看不出来。或者大侠有没有按键计数的实例程序? |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
软件仿真是OK的, 那楼主,查一下板子上面按键是不是跟你仿真接的方式一样的, 建议排查一下。
|
|
|
|
|
|
找不到问题,就用排除法,一个一个模块分别测试
|
|
|
|
|
|
加一个松手检测 |
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
265 浏览 0 评论
【原创】【RA4M2-SENSOR开发板评测】低功耗+USB综合测试
789 浏览 0 评论
1306 浏览 2 评论
787 浏览 0 评论
【RA4M2-SENSOR开发板评测】Analogue+Timers综合测试
1587 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
16901 浏览 31 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 02:14 , Processed in 0.928742 second(s), Total 77, Slave 70 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
7509