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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5248|回復: 17
收起左側

89C52單片機定時中斷里想輸出引腳低電平1秒后恢復高電平 求幫助

  [復制鏈接]
ID:373124 發表于 2018-8-3 16:27 | 顯示全部樓層 |閱讀模式
請問大俠們,89C52定時中斷里想輸出引腳低電平1秒后恢復高電平,要怎樣寫?
回復

使用道具 舉報

ID:310519 發表于 2018-8-3 20:16 | 顯示全部樓層
設置定時多少時間觸發一次中斷,寫0后啟動定時器,在中斷里計時到1秒就IO置1......
回復

使用道具 舉報

ID:382694 發表于 2018-8-3 20:55 | 顯示全部樓層
void timeinit()
回復

使用道具 舉報

ID:382689 發表于 2018-8-3 20:59 | 顯示全部樓層
編程思想應該是   通過某種方式觸發中斷(外部中斷還是定時中斷或者串口中斷)以進入中斷函數——> 首先確定定時器初值然后拉低某個引腳通過某個寄存器記錄定時器循環定時的次數是否具有一秒如果有一秒釋放拉低的引腳退出中斷;也可以采用程序定時的方法;還有很多方法。

評分

參與人數 1黑幣 +10 收起 理由
yousunny + 10 很給力!

查看全部評分

回復

使用道具 舉報

ID:382710 發表于 2018-8-3 21:31 | 顯示全部樓層
在定時器里設定1000ms的時間,通過進位標志位觸發中斷變為高電平
回復

使用道具 舉報

ID:382710 發表于 2018-8-3 21:32 | 顯示全部樓層
通過定時器中斷定時1000ms,到時間后進位標志位進位觸發中斷,變為高電平
回復

使用道具 舉報

ID:36299 發表于 2018-8-3 22:51 | 顯示全部樓層
用定時器先設置定時50MS吧,然后每進入一次計數一次,20次計數到,就是定時1S
回復

使用道具 舉報

ID:373124 發表于 2018-8-4 11:03 | 顯示全部樓層
串口3分鐘接收不到發送端送來的指定數據,就輸出(低電平)繼電器1秒后變回常態(高電平),如果又收到指定數據,繼電器還是(高電平),沒收到指定數據一直輸出知道怎樣寫,就是輸出后取反就不行
回復

使用道具 舉報

ID:155507 發表于 2018-8-4 14:17 | 顯示全部樓層
用定時器先設置定時50MS吧,然后用狀態機,用狀態邏輯實現
回復

使用道具 舉報

ID:373124 發表于 2018-8-4 17:48 | 顯示全部樓層
angmall 發表于 2018-8-4 14:17
用定時器先設置定時50MS吧,然后用狀態機,用狀態邏輯實現

大俠,我是新手,能給個例子嗎?
回復

使用道具 舉報

ID:373499 發表于 2018-8-4 20:25 | 顯示全部樓層
先配置好定時器50ms   進入中斷時候就計數和輸出低電平  計數達到20的時候說明時間到  輸出高電平即可
回復

使用道具 舉報

ID:381195 發表于 2018-8-4 21:44 | 顯示全部樓層
void configTimer1(unsigned int ms) //比如設置50ms
{        //此函數用來計算用戶需要的ms,然后轉化為定時器1進入中斷1的高8位和低8位數字
    unsigned long tmp;  
   
    tmp = 11059200 / 12;      
    tmp = (tmp * ms) / 1000;   //除1000是把秒轉化為ms
    tmp = 65536 - tmp;         //計算出y
    tmp = tmp + 12;           //補償

    T0RH = (unsigned char)(tmp>>8);   //取出y的高8位
    T0RL = (unsigned char)tmp;                  //取出y的低8位

    TMOD &= 0xf0;   
    TMOD |= 0x10;   //配置定時器模式

    TH0 = T0RH;     //給定時器1中斷賦初值
    TL0 = T0RL;
    ET0 = 1;        //定時器1中斷打開
    TR0 = 1;        //啟動T1
}


void interruptTimer0() interrupt 1
{
  unsigned char cnt=0;
TH0 = T0RH;
TL0 = T0RL;
        if(TF0==1)
                {TF0=0;cnt++;
             if(cnt>=20)
               {cnt=0;P1 = 0xff;}
}
               
               
}
框架大概這樣,可能會有點問題但是改改就行
回復

使用道具 舉報

ID:382993 發表于 2018-8-4 23:11 | 顯示全部樓層
做個定時器,在中斷中計數,1s后將引腳拉高
回復

使用道具 舉報

ID:62797 發表于 2018-8-5 00:45 | 顯示全部樓層
用一個變量,每一秒加一,單數低雙數高
回復

使用道具 舉報

ID:373124 發表于 2018-8-6 15:21 | 顯示全部樓層
void Timer0() interrupt 1
{
        TH0 = 0xFC;
        TL0 = 0x66;
   TimeNo++;
   if(TimeNo >= 10000)
  {
   RELAY = 0;
  }
   TimeNo++;
  if(TimeNo >= 12000)
    {
   TimeNo = 12000;
   RELAY = 1;
   LED4 = 0;
}
}
請問這樣寫,繼電器恢復高電平后(釋放繼電器),聽到繼電器有吱吱響,觸發指示燈微亮,繼電器沒吸合,是什么問題啊?
回復

使用道具 舉報

ID:373124 發表于 2018-8-6 16:26 | 顯示全部樓層
請問大俠們,這樣寫,繼電器能復位,但是復位后,繼電器吱吱響,輸出燈有微光,是什么問題啊?
void Timer0() interrupt 1
{
        TH0 = 0xFC;
        TL0 = 0x66;
   TimeNo++;
   if(TimeNo >= 10000)
  {
   RELAY = 0;
  }
   TimeNo++;
  if(TimeNo >= 12000)
    {
   TimeNo = 12000;
   RELAY = 1;
   LED4 = 0;
}
}
回復

使用道具 舉報

ID:368940 發表于 2018-8-6 20:05 | 顯示全部樓層
根據晶振的計數寫一個delay函數,通過計算可以確保時間的準確性
回復

使用道具 舉報

ID:373124 發表于 2018-8-6 21:49 | 顯示全部樓層
cyfdc51 發表于 2018-8-6 20:05
根據晶振的計數寫一個delay函數,通過計算可以確保時間的準確性

用delay當有串口信號來,跑不起來了
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 免费久久视频 | 亚洲精品一区在线 | 91精品国产91久久综合桃花 | 国产一区二区视频免费在线观看 | 日韩精品一区二区三区中文字幕 | 欧美成人精品一区二区男人看 | 欧美精品二区三区 | 日韩一级欧美一级 | 伊人影院99 | 女朋友的闺蜜3韩国三级 | 国产成人精品一区二区三区 | 国产 日韩 欧美 在线 | 日本视频免费观看 | 黑人精品欧美一区二区蜜桃 | 国产视频久久 | 日韩一级一区 | 国产乱码一区 | 久久久久久国模大尺度人体 | 精品久久久久一区二区国产 | 久久久久国产精品一区 | 成年人在线 | 日韩毛片在线免费观看 | av影音资源| 欧美在线观看一区二区 | 国产精品久久久久久久久久免费 | 三级av免费| h视频免费在线观看 | 一级全黄少妇性色生活免费看 | 日本黄色免费片 | 亚洲欧美中文字幕在线观看 | 99色综合 | 欧美日韩综合一区 | 免费在线毛片 | 日韩精品一区二区三区免费观看 | 欧美一区二区在线观看 | 欧美激情精品久久久久久变态 | 中国三级黄色录像 | 国产永久免费 | 久久精品99 | 一级在线观看 | 精品中文字幕在线观看 |