yzwzfyz 发表于 2022-12-8 08:55 感谢大师的鼓励,一定会好好看规格书并学以致用!谢谢! |
你不菜,只是未找到学习的方法。 学单片机,最重要的是读通CPU手册。 你想啊,你要做A,如果对A不了解,如果做得精,做得好。 记住永远的法则:要控制什么,就必须先了解什么!!! 所以,只有读通手册,才能精通单片机!! 当你了解了CPU之后,写程序的目的,措施就明确了,对他人的经典的程序也就能理解了,写程序也就不难了。 劝君,花个把月,读通CPU。不会的可以与我讨论。我就喜欢读各式各样的器件手册。只要是PCB板上有的东东,手册都找来读。 |
Y_G_G 发表于 2022-12-7 17:10 是的,后来我就尝试着在其它端口去测试看看代码能不能正常允许然后再去找问题点,结果发现是忘记加定时函数了。谢谢解答! |
yzwzfyz 发表于 2022-12-7 15:31 嗯,还是怪自己学艺不精,太菜了。还没有搞懂这其中的原理,后来我又仔细的看了一遍原先的STC8H1K17的代码已经规格书,发现既然把定时函数忘记了。谢谢解答! |
我经常犯这种错误:一段代码运行多次之后,只要结果是符合我的要求了,我就认为我这段代码没有问题了 但是,当我把这段代码用到别的地方了,才发现:我之前的代码根本是错误的,能正常运行可能是误打误撞的 你这代码本就不多,自己用排除法就行 1:把按键什么的代码都不要了,只要几行代码,端口初始化,再把一个端口拉高,烧录看一下,问题就能找到了 如果端口没有高电平,那么,不是端口配置不正确就是硬件的问题 如果端口一切正常,那就去检查一下按键部分的代码 |
再读一读IO的手册部分。对照一下,程序是如何处理IO口的。 |
mcuhui 发表于 2022-12-7 11:04 给你写一个适合STC8系列的长短按程序示例,基本通用于STC所有1T单片机。
|
wulin 发表于 2022-12-7 10:54 我也发现了这个问题,把void去掉就不会有编译警告。但是还是不能控制高低电平输出。知道自己几斤几两的水平,但是没办法就这点能力,大师见笑啦 |
mcuhui 发表于 2022-12-7 09:08 沙发已经指出错误,而且这个错误会导致按键程序不能正常运行。去掉void关键词试试。 while(1) { key_pos(); } 楼主这段原代码写的实在有点...... |
188610329 发表于 2022-12-7 08:59 还请大师赐教,就是菜鸟一个不懂啊。看着HEX文件是有生成的。所以不知道为何会有这个警告,也不知这个警告该如何解决? |
张天师 发表于 2022-12-7 08:52 大师,改过试过呢,P2M0 = 0xb8;这就是P2.0口配置为双向IO口 |
mcuhui 发表于 2022-12-7 08:08 你理解一下这个警告的意思,想一想,出了这个警告之后,编译通过没通过,有区别么? |
P2M0 = 0xb8; //修改P27;P20端口为推挽输出 把SW--P2.0改为弱上拉准双向口!!! |
我怀疑没配置好, 你贴出电路图,比较相对应的IO管脚上,功能是否一样? 毕竟一个20PIN ,一个28PIN |
coody_sz 发表于 2022-12-6 21:58 只是有警告但是还是能通过的。 |
while(1) { void key_pos(); } 这样写编译能通过吗? |