怀疑键盘按键识别程序有错
===来信===
陈老师好!
我看到你书上的例子好象不能完成实验板上的某些功能。
你看看下面两段程序,作一下比较,看看哪个行。
下面的是我改的
void key_prc()
{ uchar key;
key=XBYTE[0x2000];
if(key!=0xff)
{ del_ms(10);
KEY_FLG=1;
if((key=XBYTE[0x2000])!=0xff)
{ keyvalue=0;
while(0x0f&key!=0)
{ key--; //这段我改了,这样是不是能实现你实验板上的功能呢,这个我没有做过,只仿真过。
keyvalue++;
}
}
===回复===
这位同学/同志:
你好!
键盘按键在我的实验板上是并行接收,键按下时对应位输入为0,否则因上拉而为1,例如k2键按下则d2位为0,所以临时变量key要右移2次,键值变量keyvalue也相应增量2次,得到键值2。
我原来的程序,都在实验板上验证过的(除非出版时有录入印刷错误)。因此最好还是用硬件平台实际体验一下。
我有个图书专栏可以用“河南工业大学陈涛+书名”搜索到。
再次来信可换邮箱 chentao@zzu.edu.cn 。
陈涛
2009-6-23
===再次来信===
陈老师:
你那个程序真的没有问题,原来只是我把输入端看成为低电平!
我觉得你写出的书也是蛮值得参考和学习的,因为我觉得它实用性很强。
有时候去新华书店看书的时候,我都在找你写的书介绍给我的朋友,不过去了几次就是没有找到,这让我非常失望。
还有最近我想做出来你所画的电路,但是今天我找了几间电子零件店都没找到几个ic,这也让我很无奈!而且我在这边买的板子实在太少资源了,所以我每次都是在proteus那里仿真的,这也让我感觉到还有很多用语言不能描述的东西挡着我的学习路途。
===再次回复===
这位同学/同志:
你好!来信收到了。
你有没有考虑过买一块我的实验板呢,这样的话可以与书本对照着学习。
其实很多人不懂,买实验板最重要的一条是配有较多的实验资源和程序实例,特别是综合性的程序实例可以参考、模仿和学习。对初学者来说,最好是由浅入深。我看到很多实验板也提供了较多的实验资源,但他们的缺点是,所给的例子比较孤立,就一个设备论一个设备,缺少系统性强的、综合性强的例子。
如果你能接到单片机项目的话,有时还可以用板上的资源来做项目仿真。我曾经接过别人一个小项目,是研发替代瑞士产自动挤奶设备中的一部分电路,要求2路输出,而且输出的花样很多(周期、占空比、启动延迟等有几十种变化),我最后是用了一个4维数组来实现的。当时就是先用我的实验板(用到了LED、拨动开关、按键和蜂鸣器)做的仿真,用2路LED的显示来代表高低电平的输出,用蜂鸣器的鸣响时间来代表启动延时,看程序主体有没有问题。否则,电路的输出、挤牛奶的动作在目标电路板上是看不见的,你怎么知道它的时序对还是不对。
关于我写的书,再有就是与别人合作编写的“微机原理”教材,有一本叫“16/32位微机原理、汇编语言及接口技术”(钱晓捷、陈涛,机械工业出版社,2001年第1版,2005年第2版),我是第二作者,负责写了微机原理的部分。但估计该书你可能用不着。
陈涛
2009-6-25


