久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7414|回復: 11
打印 上一主題 下一主題
收起左側

求助!STC89C52RC單片機的引腳問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:287368 發表于 2018-3-25 15:00 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
為什么STC89C52RC單片機上電后的引腳輸出全部都是低電平?怎樣用C語言程序定義引腳輸出是高電平??
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

12#
ID:297824 發表于 2018-3-27 16:19 | 只看該作者
輸出管腳接10K電阻上拉到VDD。
回復

使用道具 舉報

11#
ID:297809 發表于 2018-3-27 16:00 | 只看該作者
晶振電路等是否工作正常
回復

使用道具 舉報

10#
ID:213173 發表于 2018-3-26 22:17 | 只看該作者
葉風天寒 發表于 2018-3-25 18:17
電源,復位,振蕩電路都沒有問題,用新的芯片測試過,發覺STC89C52RC單片機的引腳默認是低電平,只能通過 ...

單片機源程序如下:
  1. #include<reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char                 //宏定義
  4. //元器件定義
  5. sbit DY_key1=P3^2; //布防/撤防公用一個鍵
  6. //sbit DY_key2=P3^3; //撤防
  7. sbit DY_BUZZ=P0^4;  //蜂鳴器
  8. sbit DY_rsd=P2^4; //熱釋電輸入
  9. sbit LED_B=P2^3; //布防指示燈
  10. sbit LED_S=P2^0; //發送消息指示燈
  11. //初始化定義
  12. uchar code somebody[]="SOS";//字符串數組
  13. uint Cnt250us=0;                                //250us計時變量
  14. uchar Cnt500ms=0;                                //500ms計時變量
  15. bit Cnt1min=0;                                //1分鐘計時標志位(當發送一條短信后,不能馬上發送第二條,所以等待一分鐘后再檢測是否有人,有人再發送短信)
  16. bit flag=0;                                        //布防標志
  17. bit again=0;                                 //1分鐘等待標志
  18. bit Twinkle=1;                                //閃爍標志

  19. void Uart_init()
  20. {
  21.         TMOD=0x22;        //T0方式2、T1方式2
  22.         TH0=0x1A;        //設置定時重載值250us
  23.         TL0=0x1A;        //8位自動重裝
  24.         TH1=0xfd;        //8位自動重裝
  25.         TL1=0xfd;        //波特率為 9600
  26.         SM0=0;                //設置串口的工作模式
  27.         SM1=1;                //方式 1
  28.         TF0=0;                //定時器0溢出標志TF0清0
  29.         TR0=1;                //開定時器0
  30.         TR1=1;                //開定時器0
  31. //        REN=1;                //不用開接收
  32. //        ES=1;                //不用開串口中斷
  33. //        EA=1;                //不用開總中斷
  34. }
  35. //按鍵掃描函數
  36. void keyscan()        
  37. {
  38.         static bit key_sign=0;                //按鍵自鎖標志
  39.         static uchar count=0;                //消抖計數變量                        
  40.         if(!DY_key1)                                //檢測按鍵如果為0
  41.         {
  42.                 count++;                                //消抖計數
  43.                 if((count>=250)&&(key_sign==0))
  44.                 {                        
  45.                         key_sign=1;                        //按鍵自鎖標志置1
  46.                         flag=~flag;                        //布防標志取反
  47.                         if(flag==1)
  48.                         {
  49.                                 Cnt250us=0;                //250us計時變量清0
  50.                                 Cnt500ms=0;                //500ms計時變量清0
  51.                                 Cnt1min =0;                //Cnt1min計時變量清0
  52.                                 again=0;                //1分鐘等待標志位置0
  53.                         }
  54.                         else
  55.                         {
  56.                                 LED_B=1;                //布防燈熄滅
  57.                         }
  58.                 }
  59.         }
  60.         else
  61.         {
  62.                 key_sign=0;                                //按鍵自鎖標志清0
  63.                 count=0;                                //消抖計數清0
  64.         }
  65. }
  66. //計時函數
  67. void Time()        
  68. {
  69.         if(TF0==1)                                                //查詢定時器溢出標志TF0為1
  70.         {               
  71.                 if(flag==1)                                                //布防標志為1
  72.                 {                                                                //定時器溢出周期250us
  73.                         Cnt250us++;                                        //時間變量Cnt250us自+1
  74.                           if(Cnt250us>=2000)                        //如果時間變量Cnt200us>=2000
  75.                         {                                                        //500毫秒時間到
  76.                                 Cnt250us=0;                                //時間變量Cnt200us清0
  77.                                 Twinkle=~Twinkle;                //閃爍標志取反
  78.                                 Cnt500ms++;                                //時間變量Cnt1s自+1
  79.                                 if(Cnt500ms>=120)                //1分鐘時間到
  80.                                 {                                
  81.                                           Cnt500ms=0;                        //時間變量Cnt500ms清0
  82.                                         Cnt1min=1;                        //1分鐘標志置1
  83.                                         again=1;                        //1分鐘等待標志位置1
  84.                                 }
  85.                         }
  86.                 }
  87.                 TF0=0;                                                //定時器0溢出標志TF0清0
  88.         }
  89. }
  90. void SendASC(uchar d) //串口發送字符
  91. {
  92.         SBUF=d;  //數據賦值到緩沖區
  93.         while(!TI); //發送完
  94.         TI=0; //清零
  95. }
  96. void GSM_work()//發送 GSM 短信
  97. {
  98.         uchar i;
  99.         for(i=0;i<3;i++)
  100.                 SendASC(somebody[i]); //發送字符;
  101. }
  102. //警報函數
  103. void alert()
  104. {
  105.         if(flag==1)
  106.         {
  107.                 if(again==0)                                //預備等待        
  108.                         LED_B=Twinkle;                        //布防燈閃爍
  109.                 else
  110.                 {
  111.                         LED_B=0;                                        //布防燈常亮
  112.                         if(DY_rsd==0)                        //有人入侵
  113.                         {
  114.                                 DY_BUZZ=Twinkle;        //報警
  115.                                 if(Cnt1min==1)                //立即發送信息,以后隔1分鐘發送一次信息
  116.                                 {
  117.                                         LED_S=0;                        //發送指示燈亮
  118.                                         GSM_work();                        //發送 GSM 短信
  119.                                         Cnt1min=0;                        //1分鐘等待標志位清0
  120.                                 }
  121.                                 if(Twinkle==0)
  122.                                         LED_S=1;                                //發送指示燈熄滅
  123.                         }
  124.                         else DY_BUZZ=1;                                //蜂鳴器復位
  125.                 }
  126.         }
  127. }
  128. //主函數
  129. void main()
  130. {
  131.         Uart_init();                 //初始化定時器
  132.         DY_key1=1;                        //初始化端口
  133. //        DY_key2=1;
  134.         DY_BUZZ=1;
  135.         DY_rsd=1;
  136.         LED_B=1;
  137.         LED_S=1;
  138.         while(1)                        //進入 while 循環
  139.         {
  140.                 keyscan();                //按鍵
  141.                 Time();                        //計時
  142.                 alert();                        //警報
  143.         }
  144. }
復制代碼
回復

使用道具 舉報

9#
ID:296878 發表于 2018-3-25 19:34 | 只看該作者
STC89C52RC有4個端口,32個輸出I/O口!P0=0xFF; P1=0xFF; P2=0xFF; P3=0xFF;
回復

使用道具 舉報

8#
ID:296855 發表于 2018-3-25 18:29 | 只看該作者
先確認一下電源,復位電路,晶振電路等是否工作正常,再檢查代碼。
回復

使用道具 舉報

7#
ID:287368 發表于 2018-3-25 18:17 | 只看該作者
wulin 發表于 2018-3-25 17:34
STC89C52RC單片機上電復位后進入main前所有IO口默認高電平(P0開漏),你要檢查單片機基本工作條件:電源、 ...

電源,復位,振蕩電路都沒有問題,用新的芯片測試過,發覺STC89C52RC單片機的引腳默認是低電平,只能通過程序控制,不知道要修改程序哪個地方
回復

使用道具 舉報

6#
ID:213173 發表于 2018-3-25 17:34 | 只看該作者
STC89C52RC單片機上電復位后進入main前所有IO口默認高電平(P0開漏),你要檢查單片機基本工作條件:電源、復位、振蕩。
回復

使用道具 舉報

5#
ID:287368 發表于 2018-3-25 17:29 | 只看該作者
愛愛愛 發表于 2018-3-25 17:03
低電平給零  高電平給1就可以了

還是不行
回復

使用道具 舉報

地板
ID:274129 發表于 2018-3-25 17:03 | 只看該作者
低電平給零  高電平給1就可以了
回復

使用道具 舉報

板凳
ID:287368 發表于 2018-3-25 17:03 | 只看該作者
angmall 發表于 2018-3-25 15:59
P0=0xFF;
P1=0xFF;
P2=0xFF;

放在主函數中,測試后還是上電后引腳都是低電平。實在不知是怎么回事了
回復

使用道具 舉報

沙發
ID:155507 發表于 2018-3-25 15:59 | 只看該作者
P0=0xFF;
P1=0xFF;
P2=0xFF;
P3=0xFF;
P4=0xFF;
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲一区影院 | 97在线超碰| 久久久久久国产精品 | 精品国产一区二区 | 91一区二区三区在线观看 | 国产亚洲久 | 国产精品久久久久久一级毛片 | 一区二区日韩 | 久久成人免费视频 | 日本成人中文字幕 | 久久久久久久久国产成人免费 | 国产91av视频在线观看 | 99精品欧美一区二区三区综合在线 | 毛片一区 | 91精品久久久久久久久中文字幕 | 九九天堂网 | 欧美综合视频 | 97人澡人人添人人爽欧美 | 国产精品完整版 | 国产精品一区三区 | 高清亚洲| 中文字幕在线免费视频 | 国产精品美女久久久久久不卡 | 亚洲一二三区精品 | 最新中文字幕久久 | 国产精品美女久久久久久免费 | 四虎午夜剧场 | 999久久久久久久久6666 | 免费成人av网站 | 日日夜夜精品免费视频 | 日本午夜免费福利视频 | 国产在线网站 | 日韩欧美一区二区在线播放 | 91高清在线观看 | 91极品欧美视频 | av电影一区二区 | 午夜久久久| 日韩激情在线 | 欧产日产国产精品v | 美女毛片免费看 | 青草青草久热精品视频在线观看 |