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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

關于51單片機中斷的問題,求大神幫忙解決,謝謝

[復制鏈接]
跳轉到指定樓層
樓主
ID:358564 發表于 2019-4-29 11:14 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include <reg51.h>
sbit LED=P3^7;
sbit LED1=P3^6;
unsigned char second;
unsigned char tcount ,t,a;
void delay(unsigned int c);
void time_int();
void main()
{
   int d;
   time_int();
   a=1;
   
   delay(100);


   for(d=0;d<3;d++)
   {
     LED1=0;
     LED=0;
     delay(100);
     LED1=1;
     LED=1;
     delay(100);
   }
  while(1);
}
void t0() interrupt 1 using 0
{


  int i;
  TH0=0Xd8;                //重裝50ms初值,TH0=(65536-50000)/256
  TL0=0Xf0;                //              TL0=(65536-50000)/256
  if(a==1)
  {
  
   while(1)
  {
   for(i=0;i<3;i++)
   {
   LED=0;
   delay(1000);  
   LED=1;
   delay(1000);
   }
  a=0; break;
  }


   if(a==0)
{ while(1) //本段程序功能為顯示
  {
  
         LED1=0;
         delay(1000);
     LED1=1;
         delay(1000);
         break;


}
}
        
}


}


void time_int()
{


        TMOD=0x01;        //定時器0工作在工作方式1下
        TH0=0Xd8;        //設置50ms定時時計數器的初值,TH0=(65536-50000)/256
        TL0=0Xf0;        //                            TL0=(65536-50000)/256
        EA=1;                //CPU開總中斷
        ET0=1;                //T0開中斷
        TR0=1;                //啟動T0
          tcount=0;
          second=0;
        t=0;




}
void delay(unsigned int c)
{
unsigned int x,y;
for(x=c;x>0;x--)
   for(y=110;y>0;y--);
}










這是一個中斷的實驗
當檢測到a==1的時候,進入中斷,當執行完中斷的函數后,為何不能
執行主函數的

for(d=0;d<3;d++)
   {
     LED1=0;
     LED=0;
     delay(100);
     LED1=1;
     LED=1;
     delay(100);
   }




我是菜鳥,求大神解答下,謝謝!!!


shiyan.rar

41.75 KB, 下載次數: 6

程序和仿真

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:522450 發表于 2019-4-29 11:53 | 只看該作者
再看看書吧

中斷都沒有初始化,沒有再主函數打開中斷

初值裝的也不對,算不出來數值直接用人家的算式寫上去吧,我算的分別是0x3c和0xb0

中斷函數也是不對的

你編譯都不可能通過的吧,怎么可能通過呢

好多錯,T0也不是隨意就可以攜程t0吧,嚴格區別大小寫的吧
回復

使用道具 舉報

板凳
ID:45334 發表于 2019-4-29 12:48 | 只看該作者
執行了三次后,主程序停在了 while(1);這里了,只在中斷里轉悠
回復

使用道具 舉報

地板
ID:493238 發表于 2019-4-29 13:18 | 只看該作者
你中斷是什么問題
回復

使用道具 舉報

5#
ID:518788 發表于 2019-4-29 14:19 | 只看該作者
程序沒怎么看,但是這個函數的順序有問題,你自己定義的函數必須寫在主函數的上面,不然編譯的時候也會報錯的,至于你的程序中有沒有問題沒太在意,你改下順序看下
回復

使用道具 舉報

6#
ID:282850 發表于 2019-4-29 14:35 | 只看該作者
一看就是新手,程序問題很大。為什么進Time中斷后會用while(1),而且是2個,邏輯混亂。進time中斷是因為a==1嗎,不是。是定時器計數溢出后觸發中斷。50ms中斷要怎么觀測,要想清楚。就算是進入中程序的while(1)(第3個!!!),又如何觀測。
回復

使用道具 舉報

7#
ID:358564 發表于 2019-4-30 09:23 | 只看該作者
zf@@zf 發表于 2019-4-29 13:18
你中斷是什么問題

編譯是通過了,就是沒有沒有執行

for(d=0;d<3;d++)
   {
     LED1=0;
     LED=0;
     delay(100);
     LED1=1;
     LED=1;
     delay(100);
   }


不知啥問題
回復

使用道具 舉報

8#
ID:358564 發表于 2019-4-30 09:26 | 只看該作者
f556 發表于 2019-4-29 14:35
一看就是新手,程序問題很大。為什么進Time中斷后會用while(1),而且是2個,邏輯混亂。進time中斷是因為a= ...

我真的很菜,可以寫個簡單的我看下嗎?   會感激你的  
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品久久久一区二区三区 | 国产中文字幕在线 | 午夜一区二区三区视频 | 国产成人在线播放 | 在线视频日韩精品 | 91视视频在线观看入口直接观看 | 日韩a| av毛片在线免费观看 | 成人av影院 | 国产成人综合久久 | 在线免费观看日本 | 欧美一区二区成人 | 国产精品一区二区视频 | 91久久精品一区二区三区 | 亚洲女人天堂成人av在线 | 欧美成人综合 | 国产精品亚洲一区 | 一级做a爰片性色毛片 | 男人的天堂亚洲 | 欧美日韩综合视频 | 国产成人精品999在线观看 | 国产精品区一区二区三区 | 91精品国产综合久久婷婷香蕉 | 一级大黄色片 | 精品国产欧美一区二区 | 一区日韩 | 欧美福利久久 | 国产96色在线| 国产精品久久久 | 91精品观看 | 成人天堂| av黄色免费 | 久久久黄色 | 国产精品永久免费视频 | 日韩中文字幕一区二区 | 亚洲成人av一区二区 | 日韩欧美三区 | 欧美精品一区二区三区在线播放 | 久久国产一区二区 | 亚洲欧美综合精品久久成人 | 国产97视频在线观看 |