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

標題: 這個單片機程序是怎么完成中斷的? [打印本頁]

作者: zeroL    時間: 2018-11-27 08:51
標題: 這個單片機程序是怎么完成中斷的?
#include <STC15F2K60S2.H>
#define u8  unsigned char
#define u16  unsigned int
#define u32  unsigned long
u16 i;
u32 ss;
u8 code table_d[10]= {0x3f,0x06,0x5b,0x4f,0x66,\
                      0x6d,0x7d,0x07,0x7f,0x6f};
u8 code table_w[8] = {0X01,0X02,0X04,0X08,\
                      0X10,0X20,0X40,0X80};
void Timer0Init(void)  //5???@11.0592MHz
{
AUXR |= 0x80;  //????????1T??
TMOD &= 0xF0;  //??????????
TL0 = 0xcd;    //?????????
TH0 = 0xd4;    //?????????
TF0 = 0;    //???TF0???
TR0 = 1;     //?????0??????
IE=0X82;
}
void main(void)
{
      u8 k;
  u8 num[8] = {0};
     P0=0X00;
     P27=0;
  Timer0Init();
  while(1)
  {
  for(k=0;k<8;k++)
  {
      num[0] = table_d[ss%10];
   num[1] = table_d[ss%100/10];
   num[2] = table_d[ss%1000/100];
   num[3] = table_d[ss%10000/1000];
   num[4] = table_d[ss%100000/10000];
   num[5] = table_d[ss%1000000/100000];
   num[6] = table_d[ss%10000000/1000000];
   num[7] = table_d[ss%100000000/10000000];
   P26=0;
      P25=1;
   P0 =num[k];
   P26 = 1;         
   P25 = 0;
   P0 = ~table_w[k];
   }
  }
  }
void Timer0_Rountine(void)  interrupt 1
{
i++;
if(i==1000)
{
i=0;
ss++;
}
}






作者: xuyaqi    時間: 2018-11-27 09:42
這程序里有一個定時0中斷處理程序,main里開啟了這個中斷,定時器在內部是硬件系統工作,到定時計數為0時會停止主程序,觸發定時0中斷處理程序,中斷處理完后又回到主程序循環。
作者: ahshmj    時間: 2018-11-27 10:23
正常啊。定時器溢出產生中斷。

在“Timer0Init”函數里有“賦初值”,但是中斷里面沒有再賦初值,那么就是從“0”開始了。估計這一點和編寫程序的初衷不一致。
作者: dyjsc    時間: 2018-11-27 10:59
STC15F中斷程序是定義16位自動重裝,所以在中斷程序里面就不用在賦初值了.
作者: zeroL    時間: 2018-11-27 16:30
xuyaqi 發表于 2018-11-27 09:42
這程序里有一個定時0中斷處理程序,main里開啟了這個中斷,定時器在內部是硬件系統工作,到定時計數為0時會 ...

是這樣的,在main里讀取到中斷初始化完后(THTL在自加,溢出時進入中斷函數)進入到whil循環中,當我的中斷函數i加到1000時,執行整個中斷函數,然后中斷返回main中的while循環里。    是不是?
作者: zeroL    時間: 2018-11-27 17:35
ahshmj 發表于 2018-11-27 10:23
正常啊。定時器溢出產生中斷。

在“Timer0Init”函數里有“賦初值”,但是中斷里面沒有再賦初值,那么就 ...

當執行完在main里的中斷初始化后(THTL自加,加滿會進入到中斷服務程序。)進入到while中,由于我中斷服務程序中I=1000才能執行完所有的中斷服務程序;沒有執行完的話,會中斷返回在主程序while中。但是我的數碼管為什么會造成中斷呢?應該對數碼管沒有中斷啊!
作者: zeroL    時間: 2018-11-27 17:36
dyjsc 發表于 2018-11-27 10:59
STC15F中斷程序是定義16位自動重裝,所以在中斷程序里面就不用在賦初值了.

當執行完在main里的中斷初始化后(THTL自加,加滿會進入到中斷服務程序。)進入到while中,由于我中斷服務程序中I=1000才能執行完所有的中斷服務程序;沒有執行完的話,會中斷返回在主程序while中。但是我的數碼管為什么會造成中斷呢?應該對數碼管沒有中斷啊!
作者: 勿忘唯美    時間: 2018-11-27 23:43
這個中斷是由定時器0(Timer0)產生的,也就是定時器0溢出后,CPU會進入中斷處理函數執行(進入的過程中會打斷當前的程序執行),中斷函數執行完畢后回回到之前的程序斷電。
作者: rsurb0371    時間: 2018-11-28 01:33
Timer0Init   這個是定時器中斷,,,,,
還有是外部中斷,,得分清楚
作者: djfwlq    時間: 2018-11-28 08:33

Timer0Init   這個是定時器中斷,還有是外部中斷,,得分清楚
作者: zjf0000    時間: 2018-11-28 08:56
終端使能,進入中斷函數!
作者: zeroL    時間: 2018-11-28 09:31
zjf0000 發表于 2018-11-28 08:56
終端使能,進入中斷函數!

當執行完在main里的中斷初始化后(THTL自加,加滿會進入到中斷服務程序。)進入到while中,由于我中斷服務程序中I=1000為定時器1s中斷才能去執行完所有的中斷服務程序;沒有執行完的話,會中斷返回在主程序while中。但是我的數碼管為什么會造成1s的中斷!
作者: mikekod    時間: 2018-11-28 09:32
使能之后,完成中斷就自動會出來的

作者: pojian    時間: 2018-11-28 09:43
定時器
作者: yaoji123    時間: 2018-11-28 09:44
zeroL 發表于 2018-11-27 17:36
當執行完在main里的中斷初始化后(THTL自加,加滿會進入到中斷服務程序。)進入到while中,由于我中斷服 ...

先分清是要定時中斷,還是外部中斷,中斷號要選擇正確。若是定時中斷,按程序發生了嵌套中斷,51是不能進行的,程序進入死機狀態。
作者: wendellyang    時間: 2018-11-28 09:51
void Timer0_Rountine(void)  interrupt 1  這個是中斷函數,是一個定時器中斷,在“Timer0Init”函數里有“賦初值”
作者: Host    時間: 2018-11-28 10:51
定時器T0中斷
作者: zeroL    時間: 2018-11-28 16:15
謝謝大家,我的問題已經解決了,我沒注意it,麻煩了!




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 青青操91 | 免费观看羞羞视频网站 | 欧美一级特黄aaa大片在线观看 | 99精品在线| 亚洲午夜精品视频 | 99reav| 欧美视频三区 | 一级黄色片一级黄色片 | www.色综合 | 国产日本精品视频 | 色婷婷久久久亚洲一区二区三区 | 天堂视频免费 | 在线观看成人 | 综合久| 91久久精品一区 | 欧美一级一 | 国产精品国产馆在线真实露脸 | 亚洲欧美一区二区三区国产精品 | 亚洲精品视频在线播放 | 97国产精品 | www网站在线观看 | www.操com| 午夜三区 | 91视频www.| 天天干狠狠干 | 欧美福利视频一区 | 国产精品久久久久久久久久免费 | 91精品久久久久久久 | 国产一级片网站 | 一级欧美黄色片 | 久久99深爱久久99精品 | 日韩有码一区 | 久久宗合色 | 日韩91| 国产精品久久久99 | 日韩和的一区二在线 | 国产电影一区二区在线观看 | 亚洲精品日韩综合观看成人91 | 亚洲精品2区 | 少妇黄色 | 欧美日本高清 |