找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

单片机仿真按键无效

查看数: 3362 | 评论数: 10 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-11-9 16:48

正文摘要:

程序见2楼

回复

ID:837970 发表于 2020-11-23 10:49
bro0310 发表于 2020-11-13 15:58
这种硬件接法要求按键输入口必须有内部上拉电路,查手册P1.0是否有,如果有将该IO初始化为上拉输入

谢谢您的建议,原以为问题解决了,还是从你这里了解了更多
ID:230118 发表于 2020-11-13 15:58
这种硬件接法要求按键输入口必须有内部上拉电路,查手册P1.0是否有,如果有将该IO初始化为上拉输入
ID:143767 发表于 2020-11-12 17:26
指点的明显有错误,把按钮接到复位电阻的下端,开机单片机是无法复位的
ID:837970 发表于 2020-11-10 20:48
wulin 发表于 2020-11-10 13:04
程序和仿真图都没有明显问题,改+/-键试试

实测有效,谢谢您的建议
ID:837970 发表于 2020-11-10 20:47
心有浮生 发表于 2020-11-10 13:22
把按键移到地上面,这样不按按键的时候IO口就是高电平,按下按键就是低电平

嗯,已测试,谢谢
ID:654028 发表于 2020-11-10 13:22
HuTi123 发表于 2020-11-10 11:12
那麻烦请问应该怎么接

把按键移到地上面,这样不按按键的时候IO口就是高电平,按下按键就是低电平

@`Z@P)[[@B{$G]NSX[N~%RM.png (122.68 KB, 下载次数: 21)

@`Z@P)[[@B{$G]NSX[N~%RM.png
ID:213173 发表于 2020-11-10 13:04
HuTi123 发表于 2020-11-9 16:50
#include
#define uint unsigned int                                        #define uchar unsigned char       
unsigned char c;

程序和仿真图都没有明显问题,改+/-键试试


  1. #include <REG51.H>
  2. #define uint unsigned int
  3. #define uchar unsigned char        
  4. unsigned char c;
  5. char a=10;
  6. sbit key_add=P1^0;
  7. sbit key_minus=P1^2;
  8. sbit out=P1^1;
  9. void delay(unsigned int t)
  10. {
  11.         while(t--);
  12. }
  13. void main()
  14. {
  15.         TMOD=0X01;
  16.         TH0=(65536-1000)/256;
  17.         TL0=(65536-1000)%256;
  18.         TR0=1;
  19.         ET0=1;
  20.         EA=1;
  21.         while(1)
  22.         {
  23.                 if(key_add==0)
  24.                 {
  25.                         delay(1000);
  26.                         if(key_add==0)
  27.                         {
  28.                                 if(a<20)
  29.                                         a++;
  30.                                 while(!key_add);
  31.                         }
  32.                 }
  33.                 if(key_minus==0)
  34.                 {
  35.                         delay(1000);
  36.                         if(key_minus==0)
  37.                         {
  38.                                 if(a>10)
  39.                                         a--;
  40.                                 while(!key_minus);
  41.                         }
  42.                 }
  43.         }
  44. }
  45. void Timer()interrupt 1
  46. {
  47.         TH0=(65536-1000)/256;
  48.         TL0=(65536-1000)%256;
  49.         c++;
  50.         if(c==20)
  51.                 c=0;
  52.         if(c<a)
  53.                 out=1;
  54.         else out=0;
  55. }
复制代码



ID:837970 发表于 2020-11-10 11:12
心有浮生 发表于 2020-11-10 09:32
你这电路有问题啊,按键按不按你都不经过按键的,直接接地了

那麻烦请问应该怎么接
ID:654028 发表于 2020-11-10 09:32
你这电路有问题啊,按键按不按你都不经过按键的,直接接地了

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表