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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

困惑,,51單片機定時器中斷的問題請教大家

[復制鏈接]
跳轉到指定樓層
樓主
ID:66137 發表于 2015-4-19 18:12 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近在重新認識中斷的時候遇到這樣一個問題,。我在仔細看了郭天祥老師的《51單片機c語言教程》書籍例3.5.1和例3.5.2后有個一直想不明白的問題,,郭老師說,一般我們在中斷服務程序中不要寫太多的處理語句,如果語句過多,中斷服務中的代碼還沒有執行完畢,而下一次中斷又來臨,,這樣我們就失去這次中斷,,這個是不是說,當中斷服務中的代碼還正在執行,而下一次中斷又來臨了,那么就失去這次中斷,,是不是num就少加了一次值啦,就是說在執行中斷服務中的代碼時,來不及響應num++,是這樣嗎,但是聯想到例3.5.2的時候我就又不解了,,。。
void T0_time() interrupt 1
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
num++;
if(num==20)
  {
   num=0;
   led1=~led1;
  
  }
}

書里指出,不能把判斷發光管的時間是否到達的語句寫在主程序中,若寫在主程序中,有可能發生如下情況,,當在主程序運行在顯示數碼管語句當中時,此時恰好定時器0進入中斷并且num1剛好也加到4,當定時器0中斷再次進入時,主程序仍未退出數碼管顯示語句,那么此時num1的值便成了5,這樣的話,,num1=4這個點便永遠檢測不到了。部分程序如下
void T0_time() interrupt 1
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
num1++;
if(num1==4)
  {
   num1=0;
   led1=~led1;
  
  }
}
仔細看了這幾個地方,我是這么理解的是不是上面  第一個程序中斷服務中的代碼還沒有執行完畢,而下一次中斷又來臨時會丟失,而來不及響應來不及響應num++這個語句,,,而第二個程序中在執行,定時器0進入中斷并且num1剛好也加到4,數碼管的顯示語句也還沒有執行完,當定時器0中斷再次進入時,此時num1的值便成了5了,num1=4這個點便永遠檢測不到了,,,看起來就沒有丟失這次中斷,,為什么第一個例子會丟失中斷,,而第二個確沒有丟失中斷啦,,但是我也想了一下,,如果真的num1的值便成了5,,,是不是可以把 if(num1==4)改寫成if(num1>=4),即便真的num1的值跑飛了,,大于4了,也可以將num1的值重新清零,控制發光管繼續運行,。。。在線等待大家解答,謝謝。。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一区二区三区视频在线观看 | 欧美日韩国产一区 | 久久久www成人免费无遮挡大片 | 成人天堂噜噜噜 | 午夜激情在线视频 | 中文字幕精品一区二区三区精品 | 亚洲一区国产精品 | 精品啪啪 | www.婷婷 | 免费在线黄 | 精品一级毛片 | 欧美精品欧美精品系列 | 婷婷成人在线 | 91青娱乐在线 | 国产一区在线免费 | 99久久精品国产毛片 | 久久精品黄色 | 欧美一级一区 | 亚洲国产成人一区二区 | 精品国产精品一区二区夜夜嗨 | av毛片 | av在线一区二区三区 | 日本特黄特色aaa大片免费 | 国产精品九九视频 | 亚洲欧美日韩精品久久亚洲区 | 免费在线精品视频 | 免费看淫片 | 97人人超碰 | 成人片免费看 | 日韩在线看片 | 亚洲精品免费观看 | 99精品亚洲国产精品久久不卡 | caoporn国产精品免费公开 | 亚洲成av人片在线观看无码 | 国产综合视频 | 999国产精品视频 | 亚洲美乳中文字幕 | 一区二区三区亚洲 | 欧美成年黄网站色视频 | 九色 在线 | 亚洲国产日韩一区 |