欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 單片機仿真按鍵無效 [打印本頁]

作者: HuTi123    時間: 2020-11-9 16:48
標題: 單片機仿真按鍵無效
程序見2樓

作者: HuTi123    時間: 2020-11-9 16:50
#include <REGX51.H>
#define uint unsigned int                                        #define uchar unsigned char       
unsigned char c;
char a=10;
sbit key_add=P1^0;
sbit out=P1^1;
void delay(unsigned int t)
{    while(t--);}
void main()
{TMOD=0X01;
TH0=(65536-1000)/256;TL0=(65536-1000)%256;
TR0=1;ET0=1;EA=1;while(1)
{ if(key_add==0)
{ delay(1000);
if(key_add==0)
{ a++;if(a>20);a=10; } while(!key_add);                                                                                                           }}}
void Timer()interrupt 1{
TH0=(65536-1000)/256; TL0=(65536-1000)%256;
c++;
if(c==20)c=0; if(c<a) out=1;
else out=0;}

20201109164044(1).png (31.96 KB, 下載次數: 111)

20201109164044(1).png

作者: 心有浮生    時間: 2020-11-10 09:32
你這電路有問題啊,按鍵按不按你都不經過按鍵的,直接接地了
作者: HuTi123    時間: 2020-11-10 11:12
心有浮生 發表于 2020-11-10 09:32
你這電路有問題啊,按鍵按不按你都不經過按鍵的,直接接地了

那麻煩請問應該怎么接
作者: wulin    時間: 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. }
復制代碼




作者: 心有浮生    時間: 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

作者: HuTi123    時間: 2020-11-10 20:47
心有浮生 發表于 2020-11-10 13:22
把按鍵移到地上面,這樣不按按鍵的時候IO口就是高電平,按下按鍵就是低電平

嗯,已測試,謝謝
作者: HuTi123    時間: 2020-11-10 20:48
wulin 發表于 2020-11-10 13:04
程序和仿真圖都沒有明顯問題,改+/-鍵試試

實測有效,謝謝您的建議
作者: dj3365191    時間: 2020-11-12 17:26
指點的明顯有錯誤,把按鈕接到復位電阻的下端,開機單片機是無法復位的
作者: bro0310    時間: 2020-11-13 15:58
這種硬件接法要求按鍵輸入口必須有內部上拉電路,查手冊P1.0是否有,如果有將該IO初始化為上拉輸入
作者: HuTi123    時間: 2020-11-23 10:49
bro0310 發表于 2020-11-13 15:58
這種硬件接法要求按鍵輸入口必須有內部上拉電路,查手冊P1.0是否有,如果有將該IO初始化為上拉輸入

謝謝您的建議,原以為問題解決了,還是從你這里了解了更多





歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1