找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1773|回复: 0
收起左侧

想改个单片机开关控制程序!萌新不太懂!

[复制链接]
ID:344225 发表于 2019-6-22 20:06 | 显示全部楼层 |阅读模式
这个程序是k1-3是3个模式开关分,分别代表不懂的功能,现在我不想要这3个开关了!想用一根线直接连他的引脚,让它一直保持高电平状态,当我把线接接到k1是是模式一状态,接到k2是模式2,k3是模式3! k4是执行这些模式的开关!想问问怎么改!!谢谢大佬!!

单片机源程序如下:
  1. #include <reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit k1=P3^0;
  5. sbit k2=P3^1;
  6. sbit k3=P3^2;
  7. sbit k4=P3^3;
  8. sbit led1=P1^0;
  9. sbit led2=P1^1;
  10. uint cdTime=0;
  11. uchar mode=1;
  12. bit flag=1;


  13. void delay(uint t)
  14. {
  15. while(t--);
  16. }


  17. void keyscan()
  18. {
  19. if(k1==0)
  20. {
  21. delay(1000);
  22. if(k1==0)
  23. {
  24. led1=led2=1;
  25. mode=1;
  26. while(k1==0);
  27. }
  28. }
  29. if(k2==0)
  30. {
  31. delay(1000);
  32. if(k2==0)
  33. {
  34. led1=led2=1;
  35. mode=2;
  36. while(k2==0);
  37. }
  38. }
  39. if(k3==0)
  40. {
  41. delay(1000);
  42. if(k3==0)
  43. {
  44. led1=led2=1;
  45. mode=3;
  46. while(k3==0);
  47. }
  48. }
  49. if(k4==0)
  50. {
  51. delay(1000);
  52. if(k4==0)
  53. {
  54. if(mode==1&&cdTime==0)
  55. {
  56. led1=0;
  57. cdTime=100;
  58. TR0=1;
  59. }
  60. if(mode==2)
  61. {
  62. led1=~led1;
  63. }
  64. if(mode==3)
  65. {
  66. flag=~flag;
  67. led1=flag;
  68. led2=~flag;

  69. }
  70. while(k4==0);
  71. }
  72. }
  73. }
  74. void main()
  75. {
  76. TMOD=0x01;
  77. TH0=0xd8;
  78. TL0=0xf0;
  79. ET0=1;
  80. EA=1;
  81. TR0=0;
  82. while(1)
  83. {
  84. keyscan();
  85. }
  86. }


  87. void Timer0() interrupt 1
  88. {
  89. TH0=0xd8;
  90. TL0=0xf0;
  91. if(cdTime>0)
  92. {
  93. cdTime--;
  94. }
  95. else
  96. {
  97. led1=1;
  98. TR0=0;
  99. }
  100. }
复制代码

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

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