完善资料让更多小伙伴认识你,还能领取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个回答
|
|
你的邮箱号是多少
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LHL太阳 发表于 2016-1-18 01:01 是这个子程序有问题,修改为 if (!KeyInput)就可以了。 |
|
|
|
|
|
|
|
扫描键盘的while (KeyInput==0);可能导致程序锁死,依赖与外部硬件情况,可以换一种表达方式,不用死循环等,反正外面是大循环,可以利用一下
|
|
|
|
count变量问题!
|
|
|
|
|
|
|
|
请上QQ525291581
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
277 浏览 0 评论
【敏矽微ME32G070开发板免费体验】之原厂2812测试例程解析
368 浏览 0 评论
766 浏览 2 评论
《DNESP32S3使用指南-IDF版_V1.6》第二十六章 INFRARED_RECEPTION实验
592 浏览 0 评论
879 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12037 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 08:04 , Processed in 0.804997 second(s), Total 86, Slave 70 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号