我想写打c51单片机机的按键检测 c51型号的程序总是报错 求救大神怎么回事?

21ic官方微信-->
后使用快捷导航没有帐号?
请完成以下验证码
查看: 9280|回复: 61
51单片机4X4矩阵键盘检测。。。为啥不行啊。。求大神
&&已结帖(10)
主题帖子积分
中级技术员, 积分 133, 距离下一级还需 167 积分
中级技术员, 积分 133, 距离下一级还需 167 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
中级技术员, 积分 133, 距离下一级还需 167 积分
中级技术员, 积分 133, 距离下一级还需 167 积分
本帖最后由 hunxiyi 于
12:13 编辑
4X4矩阵键盘,四行依次与P3口的0、1、2、3口相连。。
四列依次与4、5、6、7口相连
编写下列程序。。。感觉没有什么问题。。但是烧进板子里,只有0、4、8、c可以显示,其它12个键都没效果、、
想了N天都没办法。。。请大神出马、、、
#include&reg52.h&
#define uchar unsigned char
#define uint unsigned int
sbit weix =&&P2^7;
sbit duanx = P2^6;
uchar code table[] = {0x3f,0x06,0x5b,0x4f,
& && && && && && && && && && && && && & 0x66,0x6d,0x7d,0x07,
& && && && && && && && && && && && && & 0x7f,0x6f,0x77,0x7c,
& && && && && && && && && && && && && & 0x39,0x5e,0x79,0x71
& && && && && && && && && && && && && & };
void init();
void keyscan();
void display();
void delay(uint x);
uchar i,key,k = 88;
void main()
& && &&&init();& && && && && && && && &//初始化
& && &&&while(1)& && && && && &
& && && && && & keyscan();& && && && && && && && &//矩阵键盘扫描
& && && && && & display();& && && && && && && && &//显示
void init()& && && && && && && && && &//初始化
& && &&&weix = 1;
& && &&&P0=0
& && &&&weix = 0;
& && &&&P0 = 0x00;
& && &&&duanx = 1;
& && &&&P0 = 0x00;
& && &&&duanx = 0;
void keyscan()& && && && && && && && & //矩阵键盘扫描
& && &&&uchar i,
& && &&&P3 = 0x0f;
& && &&&if(P3 != 0x0f)& && && && && &&&
& && && && && & delay(10);& && && && && && && && && && &&&//按键是否按下检测延时
& && && && && & if(P3 != 0x0f)& && && && && && &
& && && && && & {
& && && && && && && && &P3 = 0& && && && && && && && &
& && && && && && && && &for(i = 0;i & 4;i++)
& && && && && && && && &{
& && && && && && && && && && &&&key = P3&&& 0x0f;& && && &//屏蔽高四位,只对比检测到的第四位
& && && && && && && && && && &&&switch(key)
& && && && && && && && && && &&&{
& && && && && && && && && && && && && & case 0x0e:k = i + 0;& && && && && && && && && && && && &
& && && && && && && && && && && && && & case 0x0d:k = i + 4;
& && && && && && && && && && && && && & case 0x0b:k = i + 8;
& && && && && && && && && && && && && & case 0x07:k = i + 12;break& && && && && && && && & & && && && && && &
default:k = 88;& &
//经15楼朋友提示,加上这句话,程序就没问题了& && && && && && && && && && &&&}
& && && && && && && && && && &&&P3&&= (P3 &&1) + 1;& && && && && &&&//P3口数据左移一位 再加1
& && && && && && && && && && &&&if(k != 88)& && && && && &&&//在此次for循环中 switch中如果匹配到
& && && && && && && && && && && && && && && && && && &&&//k被重新赋值,则退出for循环
& && && && && && && && &}
& && && && && && && && &P3&&= 0x0f;& && && && && && && && &&&//松手检测
& && && && && && && && &while(P3 != 0x0f)& && && & //未松手则一直在此等待
& && && && && && && && && && &&&;& && && && && && && && && && && & //松手则退出
& && && && && & }
void display()& && && && && && && && && && && &&&//显示
& && &&&duanx = 1;
& && &&&P0 = table[k];
& && &&&duanx = 0;
void delay(uint x)
& && &&&while(x--)
& && && && && & for(j=110;j&0;j--);
满意回复+4
if(k != 88)
//在此次for循环中 switch中如果匹配到
//k被重新赋值,则退出f ...
void scan_key(void)
P3 = 0x0f;
P3 = 0xf0;
if(k == 0xff){
key_delay = 0 ...
问题似乎不在于只能检测到那四个键吧?
本帖子中包含更多资源
才可以下载或查看,没有帐号?
主题帖子积分
中级技术员, 积分 133, 距离下一级还需 167 积分
中级技术员, 积分 133, 距离下一级还需 167 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
中级技术员, 积分 133, 距离下一级还需 167 积分
中级技术员, 积分 133, 距离下一级还需 167 积分
期盼大神。。。我实在是无能为力了。。感觉思路很清晰啊
主题帖子积分
中级技术员, 积分 133, 距离下一级还需 167 积分
中级技术员, 积分 133, 距离下一级还需 167 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
中级技术员, 积分 133, 距离下一级还需 167 积分
中级技术员, 积分 133, 距离下一级还需 167 积分
我用这个键盘扫描程序替换就可以。。。这是为什么啊。。。这两个道理是一模一样的啊
void matrix_keyscan()
& & & & P3 = 0x0f;
& & & & if(P3 != 0x0f)
& & & & & & & & delay(10);& & & & & & & & & & & & & & & & //键盘是否按下 检测延时
& & & & & & & & if(P3 != 0x0f)
& & & & & & & & {& & & & & & & & & & & &
& & & & & & & & & & & & P3=0xf0;& & & & & & & & //检测高4位,因低4位被拉低
& & & & & & & & & & & &&&switch(P3)& & & & //此时按键被按下,高位必有1位也被拉低
& & & & & & & & & & & &&&{
& & & & & & & & & & & & & & & &&&case 0xe0: key1=0;
& & & & & & & & & & & & & & & &&&case 0xd0: key1=1;
& & & & & & & & & & & & & & & &&&case 0xb0: key1=2;
& & & & & & & & & & & & & & & &&&case 0x70: key1=3;
& & & & & & & & & & & &&&}
& & & & & & & & & & & &&&P3=0x0f;& & & & & & & & //再检测低4位
& & & & & & & & & & & &&&switch(P3)& & & & //为何加0—12可画图理解
& & & & & & & & & & & &&&{
& & & & & & & & & & & & & & & &&&case 0x0E: key=key1+0;
& & & & & & & & & & & & & & & &&&case 0x0D: key=key1+4;
& & & & & & & & & & & & & & & &&&case 0x0B: key=key1+8;
& & & & & & & & & & & & & & & &&&case 0x07: key=key1+12;
& & & & & & & & & & & &&&}
& & & & & & & & & & & & P3 = 0x0f;
& & & & & & & & & & & & while(P3 != 0x0f)& & & & // 松手检测
& & & & & & & & & & & & & & & & ;
& & & & & & & & }
主题帖子积分
技术总监, 积分 40135, 距离下一级还需 9865 积分
技术总监, 积分 40135, 距离下一级还需 9865 积分
主题帖子积分
专家等级:结帖率:3%
主题帖子积分
技术总监, 积分 40135, 距离下一级还需 9865 积分
技术总监, 积分 40135, 距离下一级还需 9865 积分
void scan_key(void)
& & & & U8 x,k;
& & & & P3 = 0x0f;
& & & & x = P3;
& & & & P3 = 0xf0;
& & & & k = P3;
& & & & k = x +
& & & & if(k == 0xff){
& & & & & & & & key_delay = 0;
& & & & & & & &
& & & & if((key_delay & 100) && (++key_delay == 3)){
& & & & & & & & key_number =& & & & & & & & // 此处设置断点,用于记录按键号
间隔5~100MS调用即可,在 “key_number =”处设置断点,按下按键记录按键号,按键号等于k值。
主题帖子积分
初级工程师, 积分 2791, 距离下一级还需 209 积分
初级工程师, 积分 2791, 距离下一级还需 209 积分
主题帖子积分
专家等级:结帖率:100%打赏:10.00受赏:314.00
主题帖子积分
初级工程师, 积分 2791, 距离下一级还需 209 积分
初级工程师, 积分 2791, 距离下一级还需 209 积分
& && && && && && && && && && && && && && && && && && &&&//k被重新赋值,则退出for循环
& && && && && && && && &}
& && && && && && && && &temp = 0x0f;& && && && && && && && &&&//松手检测
//这里的temp被赋值,下面的while表达式括号内的条件就一直为False,temp不会自动同步P3的
& && && && && && && && &while(temp != 0x0f)& && && & //未松手则一直在此等待
& && && && && && && && && && &&&;& && && && && && && && && && && & //松手则退出复制代码
问题似乎不在于只能检测到那四个键吧?
生活将我们磨圆,是为了让我们滚得更远。。。
我来到这个世上就没打算活着回去!
主题帖子积分
初级工程师, 积分 2791, 距离下一级还需 209 积分
初级工程师, 积分 2791, 距离下一级还需 209 积分
主题帖子积分
专家等级:结帖率:100%打赏:10.00受赏:314.00
主题帖子积分
初级工程师, 积分 2791, 距离下一级还需 209 积分
初级工程师, 积分 2791, 距离下一级还需 209 积分
两种代码的差异就在于你在前一种代码中设置了一个变量temp,您好好分析一下你的代码流程
生活将我们磨圆,是为了让我们滚得更远。。。
我来到这个世上就没打算活着回去!
主题帖子积分
中级技术员, 积分 133, 距离下一级还需 167 积分
中级技术员, 积分 133, 距离下一级还需 167 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
中级技术员, 积分 133, 距离下一级还需 167 积分
中级技术员, 积分 133, 距离下一级还需 167 积分
yirongfu 发表于
两种代码的差异就在于你在前一种代码中设置了一个变量temp,您好好分析一下你的代码流程 ...
早上问老师,他接到个电话有事,急急忙忙的就看了一下说把P3用个变量代替试试。。。所以我才加了temp
之前是没有temp直接用变量p3的。。。仍然是不能正常工作,只能检测到0、4、8、12。。。
主题帖子积分
中级技术员, 积分 133, 距离下一级还需 167 积分
中级技术员, 积分 133, 距离下一级还需 167 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
中级技术员, 积分 133, 距离下一级还需 167 积分
中级技术员, 积分 133, 距离下一级还需 167 积分
ayb_ice 发表于
这程序也太简洁了吧。。。。。。好高级。。。可惜没看懂。。。。:Q
主题帖子积分
中级工程师, 积分 4541, 距离下一级还需 459 积分
中级工程师, 积分 4541, 距离下一级还需 459 积分
主题帖子积分
专家等级:结帖率:88%
主题帖子积分
中级工程师, 积分 4541, 距离下一级还需 459 积分
中级工程师, 积分 4541, 距离下一级还需 459 积分
键扫描要求变输出脚电平读输入脚电平再来判断,可是你在变temp这时输出脚电平会变吗?
主题帖子积分
中级技术员, 积分 133, 距离下一级还需 167 积分
中级技术员, 积分 133, 距离下一级还需 167 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
中级技术员, 积分 133, 距离下一级还需 167 积分
中级技术员, 积分 133, 距离下一级还需 167 积分
xuyaqi 发表于
键扫描要求变输出脚电平读输入脚电平再来判断,可是你在变temp这时输出脚电平会变吗? ...
我错了。。这个temp是后来加的。。。之前是直接用P3的。。。仍然是只能检测4个键。。
上面的代码我已经改过来了。。。麻烦你再劳神下
主题帖子积分
实习生, 积分 48, 距离下一级还需 2 积分
实习生, 积分 48, 距离下一级还需 2 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
实习生, 积分 48, 距离下一级还需 2 积分
实习生, 积分 48, 距离下一级还需 2 积分
把P3改成按位操作可能才行
主题帖子积分
初级工程师, 积分 2791, 距离下一级还需 209 积分
初级工程师, 积分 2791, 距离下一级还需 209 积分
主题帖子积分
专家等级:结帖率:100%打赏:10.00受赏:314.00
主题帖子积分
初级工程师, 积分 2791, 距离下一级还需 209 积分
初级工程师, 积分 2791, 距离下一级还需 209 积分
可能你的思路真的是清晰的,可是你对51单片机的操作看来还比较混沌
1. 像 P3&&= (P3 &&1) + 1; 这样的操作是在直接操作IO口的输入输出寄存器,而你的P3口一半是输入一半是输出,假设某个输入口被外部按键动作拉到地,你又同时给该口输出高电平,这个电气上比较危险。所以,建议输入口就是输入,输出口就是输出,不要变来变去,51跟其他单片机不一样,你往Port写数据,就直接变成输出并反映到引脚电平,不需要另外设置为输入或输出方向。回头来说,你这句的本意是前面赋的扫描初值的移位,但运行到这一步,左移符号前的P3实际是去读取口的当前状态,而不是原来的那个定值了(P3 = 0xef以及你所设想的移位后的值)。你的老师让你加个中间变量,估计他也是初步发现了这里的问题,所以,建议你在这里再自己细细分析一下,用单步调试跟踪一下应该能很快找到问题,也能让你更好地掌握。
2. 1楼和3楼的代码要实现的按键布局我理解是不一样的,好像硬件原理也不尽相同。楼主你要实现的是矩阵扫描16键,3楼是简单按键扫描,或者说是IO口扫描,仅8键。所以,不要被3楼的代码所牵引。如果实在没理解透按键扫描的原理,建议你就直接找些4×4的C代码贴过来改造一下,网上很多的。
3. 提问应该描述尽量详细些,比如哪几个口作为输入哪几个口作为输出(行和列都可以作为输入或输出),你的设计思路,同时最好把接口的电路贴上来,详细的描述可以节省大家的时间,也能尽快帮你找到问题。
以上意见仅供参考,希望对你有用。
很耐心的讲解 赞一个
生活将我们磨圆,是为了让我们滚得更远。。。
我来到这个世上就没打算活着回去!
主题帖子积分
中级技术员, 积分 133, 距离下一级还需 167 积分
中级技术员, 积分 133, 距离下一级还需 167 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
中级技术员, 积分 133, 距离下一级还需 167 积分
中级技术员, 积分 133, 距离下一级还需 167 积分
pc1969 发表于
把P3改成按位操作可能才行
麻烦讲清楚点啊。。。。。我是菜鸟。。。。:(
主题帖子积分
技术总监, 积分 40135, 距离下一级还需 9865 积分
技术总监, 积分 40135, 距离下一级还需 9865 积分
主题帖子积分
专家等级:结帖率:3%
主题帖子积分
技术总监, 积分 40135, 距离下一级还需 9865 积分
技术总监, 积分 40135, 距离下一级还需 9865 积分
hunxiyi 发表于
这程序也太简洁了吧。。。。。。好高级。。。可惜没看懂。。。。
typedef unsigned char U8;
主题帖子积分
资深工程师, 积分 11008, 距离下一级还需 8992 积分
资深工程师, 积分 11008, 距离下一级还需 8992 积分
主题帖子积分
专家等级:结帖率:100%打赏:0.00受赏:0.10
主题帖子积分
资深工程师, 积分 11008, 距离下一级还需 8992 积分
资深工程师, 积分 11008, 距离下一级还需 8992 积分
if(k != 88)& && && && && &&&//在此次for循环中 switch中如果匹配到
& && && && && && && && && && && && && && && && && && &&&//k被重新赋值,则退出for循环
问题在这儿,至于为什么,其实你用笔在纸上按程序执行顺序,写下各个变量的值,就清楚了,不知道是没掌握这个方法还是懒,如果养成用纸笔模拟程序运行的习惯,很多问题都会发现,不需要仿真器,也不需要问别人,熟练了速度还不慢
深说一点,你的按键扫描程序中的循环每次只执行了一次就结束了,至于为什么,还是自己发现吧
主题帖子积分
实习生, 积分 48, 距离下一级还需 2 积分
实习生, 积分 48, 距离下一级还需 2 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
实习生, 积分 48, 距离下一级还需 2 积分
实习生, 积分 48, 距离下一级还需 2 积分
扫描键盘时,分别置位P3.0,P3.!,P3.2,P3.3,然后再检测P3.4,P3.5,P3.6,P3.7
主题帖子积分
中级技术员, 积分 133, 距离下一级还需 167 积分
中级技术员, 积分 133, 距离下一级还需 167 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
中级技术员, 积分 133, 距离下一级还需 167 积分
中级技术员, 积分 133, 距离下一级还需 167 积分
本帖最后由 hunxiyi 于
10:49 编辑
yirongfu 发表于
可能你的思路真的是清晰的,可是你对51单片机的操作看来还比较混沌
1. 像 P3&&= (P3&&...
非常感谢你花这么多时间来为我解答,真的很感谢。。。
我确实是刚刚开始学。。感觉这个程序思路是很清晰的,但对于操作是一点头绪都没有
你说的单步调试跟踪,我还不会,现在去百度上学学。。。去
这个程序是我在网上找到的。。。最容易理解的矩阵键盘程序是书上写的,但太长了。。于是上网搜搜简单的。。。&&发现了这个文件里最后一个程序感觉不错。。。于是按照我的这个线路加以改动
3楼那个也是我在网上看见的,稍微改一下确实可以运行。。。0——15都可以正常检测,你说的仅8键不太懂什么意思。。。
最后,这个帖子是第一次在这论坛发帖。。。不足之处你已指出,已经做出了一些修改。。以后绝对不会再犯!谢谢。。
主题帖子积分
中级技术员, 积分 133, 距离下一级还需 167 积分
中级技术员, 积分 133, 距离下一级还需 167 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
中级技术员, 积分 133, 距离下一级还需 167 积分
中级技术员, 积分 133, 距离下一级还需 167 积分
pc1969 发表于
扫描键盘时,分别置位P3.0,P3.!,P3.2,P3.3,然后再检测P3.4,P3.5,P3.6,P3.7
那你的意思就是3楼那代码。。。对吧?
主题帖子积分
实习生, 积分 48, 距离下一级还需 2 积分
实习生, 积分 48, 距离下一级还需 2 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
实习生, 积分 48, 距离下一级还需 2 积分
实习生, 积分 48, 距离下一级还需 2 积分
hunxiyi 发表于
那你的意思就是3楼那代码。。。对吧?
直接用汇编写,直观又容易理解
主题帖子积分
中级技术员, 积分 133, 距离下一级还需 167 积分
中级技术员, 积分 133, 距离下一级还需 167 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
中级技术员, 积分 133, 距离下一级还需 167 积分
中级技术员, 积分 133, 距离下一级还需 167 积分
pc1969 发表于
直接用汇编写,直观又容易理解
汇编不会;。。。。。比C难多了、、
技术新星奖章
人才类勋章
时间类勋章
荣誉元老奖章
等级类勋章
坚毅之洋流
发帖类勋章
时间类勋章
技术领袖奖章
人才类勋章
欢快之小溪
发帖类勋章
技术导师奖章
人才类勋章
精华达人奖章
等级类勋章
时间类勋章
湍急之河流
发帖类勋章
突出贡献奖章
等级类勋章
热门推荐 /4C51 短按抬起开关 和 长按开关 程序怎么写,求教_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
C51 短按抬起开关 和 长按开关 程序怎么写,求教
短按松手后 开 LED1
,下次短按键松手后关闭LED1长按键2S无松手
开 LED2 ,如无松手继续按键超过4S,LED2的状态不变.
下次长按键2S无松手后关闭LED2
我有更好的答案
delay(10);&{&&&delays(2);//过2s再次检测&if(key==1)//若此时key还为1;&else//若短时间内还按着&}}这里设置按键key,按下为=1,松开为=0。这需要你按此接电路。你还需要一个延时很小的函数delay(),和延时一秒的延时函数delays();//这样你按键按多久,led2的状态都不会变&delay(200);//短长分界线&&&//长按,取反led2&&&&while(key);&&&&//小延时防抖&if(key==1)&{&nbsp!led1;//即如果短时间过后;//检测完长按后,就用循环等待按键松开;&nbspif(key==1){&&&&&led1=;&{&&&&led2=!led2;}&&}&nbsp,按键松开,记为短按;&nbsp。取反led1&if(key==0)&nbsp。&&&nbsp,这说明为长按&nbsp
采纳率:63%
来自团队:
为您推荐:
其他类似问题
c51的相关知识
换一换
回答问题,赢新手礼包单片机C51写的程序现象想不通,求大神!_单片机吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:143,289贴子:
单片机C51写的程序现象想不通,求大神!收藏
#include &reg52.h&#define uchar unsigned charunsigned char code led[]={0xff,0x00}void main(){EA=1; EX0=1; IT0=1;while(1){P1=led[a];}}void ss() interrupt 0{if(a==1)a=0; if(a==0)a=1;while(!INT0);}简单的本来想要单片机通电运行时 LED等全息,按一下外部中断0,LED 全亮,再按一次全息。现象是通电运行时 LED等全息,按一下外部中断0,LED 全亮,再按一下甚至N下,LED灯一直量,就没再息过。求解 为什么按不会息。大神可以试试这个程序
开发宝-靠谱的电子产品研发众包平台.单片机,电子技术,嵌入式软件,结构设计等电子产品研发领域外包服务.
变量a初始化时赋0值试试
你这a不管怎么样都是1,改成if else
问题大了第一次中断后a会一直是1,要因为这两个if都会执行,第一个if把a变成0第二个if肯定就要执行了
登录百度帐号推荐应用查看: 10483|回复: 8
学51单片机-按键的中断检测
& && && && &接着昨天,继续说按键的事。昨天说的是扫描检测,今个说一下中断检测。先插播一个小故事~~& && &当年我和凯凯学单片机的时候,我用扫描检测的方法做的项目,他用中断检测的方法做的项目。当我俩坐一起交流按键检测的方式时,他火了,直接跳起来跟我吼:你不用中断怎么检测?& && &当时我就意识到他可能陷入了只能用中断的误区,然后就乐呵呵的说:用扫描啊~& && &他继续吼,我继续乐,我俩就这样陷入了死循环。终于都累了,然后把程序和原理给他看,了解~& && &在STC89C52单片机上,具有外部中断功能的引脚有两个:P3.2 –INT0 和 P3.3-INT1。上电默认的情况下,他们是普通IO引脚;当配置好相关寄存器之后,他们就变成了具有中断检测功能的引脚。& && &外部中断相关的寄存器有两个:TCON 和 IE。图示如下: 特殊功能寄存器IE & && &IT0和IE0对应P3.2引脚的中断功能配置,IT1 和 IE1对应P3.3 引脚的中断功能配置。& && &当IT0 = 0 的时候,该中断的触发方式为低电平触发。& && &当IT0 = 1 的时候,该中断的触发方式为下降沿触发。& && &当中断被触发时,IE0 被自动置一,当CPU相应中断,处理中断程序时,IE0 自动清零。 & && &IT1 和 IE1 同理,不做解释。 & && &EA是什么?它是这个单片机中断功能的总开关!只有当它等于1的时候,各个中断的请求才可以被允许,不然的话都是被屏蔽的。& && &ES是串口中断允许位。& && &ET1是定时/计数器1溢出中断允许位。& && &ET0是定时/计数器0溢出中断允许位。& && &EX1是外部中断1允许位。& && &EX0是外部中断0允许位。 & && &就是说,当我们想用外部中断0的时候,必须总中断(EA)和外部中断(EX0)同时打开才能用,缺一不可!& && &这些寄存器的资料那里来的? 上官网找器件手册,这是最权威的文档。找的过程中,既锻炼了查找资料的能力,又锻炼了阅读资料的能力,这在以后的工作中是必备的。 & && &好了,上程序。依旧是按键控制LED翻转,这次是用中断触发的方式,下降沿触发。& && &程序下载链接:
(26.86 KB, 下载次数: 62)
23:05 上传
点击文件名下载附件
下载积分: 黑币 -5
& && &对了,留个思考题 interrupt 后面的0 和using 后面的1分别是什么意思?
楼主可否解释一下,按键的中断信号是怎么送到EX0的
下载下来看看,我需要这个
..来看看,,
下载下来学习学习
外部中断0,按键直接的P3.2口,按下的时候下降沿触发。
这是非常好的& &特别好
interrupt 0&&是外部中断0,优先级最高
Powered by54被浏览8998分享邀请回答点击下载程序,成功的结果如图
好了,软件方面就搞成了,下面用排线把自己程序中包含的引脚和想要的led连接,尽情的享受霓虹灯的闪烁吧。单片机其他功能的实现也是大同小异,希望以上内容能对题主有所帮助。3424 条评论分享收藏感谢收起12 条评论分享收藏感谢收起

我要回帖

更多关于 c51单片机流水灯程序 的文章

 

随机推荐