1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2797|回復: 2
收起左側

單片機程序問題請大神指點,根據串口傳輸過來的數字進行低電平輸出

[復制鏈接]
ID:730674 發表于 2020-5-15 21:39 | 顯示全部樓層 |閱讀模式
10黑幣
這個程序是根據串口傳輸過來的數字進行低電平輸出,前幾次相同數據都很正常的輸出低電平,但是突然就會一直輸出低電平不恢復成高電平,直到再次傳輸相同數據才會恢復。比如一直傳輸1時,p2.0根據頻率輸出低電平再恢復高電平,到某一次傳輸1時,p2.0會一直處于低電平,停止傳輸也不恢復高電平。求大佬看看哪里需要修改
  1. sbit Relay1=P2^0;
  2. sbit Relay2=P2^2;
  3. sbit Relay3=P2^4;//引腳定義

  4. void main()
  5. {
  6. SCON=0x50; //串口定義
  7. TMOD=0x20;
  8. PCON=0x00;
  9. TH1=0xfd;
  10. TL1=0xfd;
  11. RI=0;
  12. TR1=1;
  13. REN=1;
  14. SM0=0;
  15. SM1=1;
  16. EA=1;
  17. Relay1=Relay2=Relay3=1;
  18. while(1)
  19. {
  20. if(RI) /
  21. {
  22. RI=0;
  23. switch(SBUF) //根據接收的字符
  24. {
  25. case '1': Relay1=~Relay1;Relay2=1;Relay3=1;break; //繼電器1運動
  26. case '2': Relay2=~Relay2;Relay1=1;Relay3=1;break; /繼電器2運動
  27. case '3': Relay3=~Relay3;Relay1=1;Relay2=1;break; //繼電器3運動
  28. }
  29. }
  30. }
  31. }
復制代碼

最佳答案

查看完整內容

你可以把 設置高電平放在while1里面,然后把翻轉電平操作放在中斷里面,這樣一旦退出中斷,就能保證引腳重新變為高電平。
回復

使用道具 舉報

ID:752714 發表于 2020-5-15 21:39 | 顯示全部樓層
你可以把 設置高電平放在while1里面,然后把翻轉電平操作放在中斷里面,這樣一旦退出中斷,就能保證引腳重新變為高電平。
回復

使用道具 舉報

ID:730674 發表于 2020-5-16 16:07 | 顯示全部樓層
本帖最后由 a10861771 于 2020-5-17 09:56 編輯

解決了解決了
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表