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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 11896|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)匯編中斷程序(導(dǎo)引)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
#
ID:72008 發(fā)表于 2015-1-19 14:20 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |正序?yàn)g覽 |閱讀模式
本帖最后由 liuyy 于 2015-1-19 14:22 編輯

51單片機(jī)匯編程序入口后加的跳轉(zhuǎn)指令"LJMP"是為什么:
    要弄明白這個(gè)問題,你要對(duì)51單片機(jī)的中斷有一個(gè)初步的了解,我可以給你介紹一下。比方說你希望不管程序運(yùn)行到哪里,只要你一按某個(gè)按鍵,就執(zhí)行一段你預(yù)先寫好的程序,然后再回到原來的地方繼續(xù)。你按按鍵的動(dòng)作可以視為單片機(jī)的一個(gè)I/O管腳電平由高到低(如果你把按鍵接在I/O和地之間)。在51單片機(jī)中,有兩個(gè)I/O可以實(shí)現(xiàn)這樣的功能(這就是外中斷,ORG 0003H LJMP INT0S 中的INT0S就是外中斷0,具體你可以查51單片機(jī)中斷系統(tǒng)的資料)。那它到底是怎樣實(shí)現(xiàn)的呢?比方說,某一時(shí)刻,你的按鍵按下了,處理器會(huì)知道滿足了外中斷的觸發(fā)條件,那它會(huì)執(zhí)行哪一段程序呢?設(shè)計(jì)師人為地給它規(guī)定了一個(gè)固定的地址,如外中斷0被觸發(fā)時(shí)就是跳到地址為0003H的單元開始執(zhí)行,別的中斷(定時(shí)器等)同理,都有一個(gè)固定的地址,一旦被觸發(fā)就會(huì)自動(dòng)跳到那個(gè)地址,這就是中斷向量。那為什么是0003H而不是程序存儲(chǔ)器的末尾呢?這是因?yàn)椴煌?1單片機(jī)的存儲(chǔ)器大小是不同的,如果中斷向量也因此而不同的話,單片機(jī)開發(fā)的麻煩就太多了。所以設(shè)計(jì)師干脆就把中斷向量放在開頭。單片機(jī)復(fù)位后是從0000H開始執(zhí)行的,總不能讓它一開始就無緣無故中斷,所以要轉(zhuǎn)移到一個(gè)和中斷向量不相干的地方執(zhí)行主程序。ORG 0 LJMP STAR(其實(shí)應(yīng)該是START)就是這樣一個(gè)轉(zhuǎn)移指令,轉(zhuǎn)到標(biāo)記為START的主程序處開始執(zhí)行。一條LJMP指令的長(zhǎng)度為3,這也就是第一個(gè)中斷向量為0003H的原因了(不浪費(fèi)一絲空間,不得不佩服Intel設(shè)計(jì)師的高明)。ORG 0003H LJMP INT0S 為什么中斷向量處還要跳轉(zhuǎn)呢?這是因?yàn)橹袛嘞蛄块g的空間也很有限,只能完成一些最簡(jiǎn)單的任務(wù),稍微長(zhǎng)一點(diǎn)的程序就需要放在更大的空間里,從中斷向量處跳轉(zhuǎn)到該處執(zhí)行真正的中斷服務(wù)程序。有關(guān)中斷系統(tǒng)的具體內(nèi)容,建議你還是看看相關(guān)資料,我只是把它的基本原理和你講了一下,真正使用還是請(qǐng)你自己探索。

下面是一個(gè)完整的51單片機(jī)中斷匯編程序的例子:

首先,介紹一下51單片機(jī)的定時(shí)計(jì)數(shù)器,51有兩個(gè)定時(shí)計(jì)數(shù)器,分別為T0,T1,基本一樣,

;有一點(diǎn)不同,下面我們介紹定時(shí)計(jì)數(shù)器T0

;了解8051的timer0中斷的程序?qū)懛?用中斷法產(chǎn)生定時(shí)

;上面顯示的是proteus仿真圖,下面的是源程序

;說明:(源程序中的中斷入口地址很重要(這個(gè)是固定的),程序中斷時(shí),會(huì)在對(duì)應(yīng)中斷固定的

;入口地址進(jìn)入,因?yàn)橐?guī)定的相隔入口間的空進(jìn)有限,只能用跳轉(zhuǎn)指令跳轉(zhuǎn),最終用RETI強(qiáng)制返回

;這個(gè)程序把所有的中斷入口地址都寫上了,沒有用到的,用RETI直接屏蔽)

;運(yùn)行結(jié)果是使led燈明一下,暗一下。



COUNT EQU  9217;對(duì)于11.0592的晶振來說,延時(shí)10ms

LED  EQU  P1.1





        ORG  0000H

        LJMP RESET       ;開始時(shí)跳轉(zhuǎn)轉(zhuǎn)到初始化程序中



        ORG  0003H       ;外部中斷0

        RETI



        ORG  000BH       ;定時(shí)器/計(jì)數(shù)器T0入口地址

        LJMP INT_TIMER0   ;跳轉(zhuǎn)到定時(shí)器/計(jì)數(shù)器中斷服務(wù)程序中去



        ORG  0013H      ;外部中斷1  

        RETI      



        ORG  001BH    ;定時(shí)器/計(jì)數(shù)器T1

        RETI



        ORG  0023H ;串行口中斷

        RETI



           ORG  0030H

RESET:

           MOV  R0,#00H

           DJNZ R0,$  ;剛開始,先進(jìn)行少量的延時(shí),是各種工作寄存器準(zhǔn)備好

           CLR  LED





           MOV    TMOD,#00000001B   ;設(shè)置定時(shí)器T0工作在方式1(16位)



           MOV    TH0,#HIGH(65536-COUNT);設(shè)置初值(關(guān)于怎么計(jì)算,很多書上都有)

           MOV    TL0,#LOW(65536-COUNT)

           ;MOV  TH0,#(65536-COUNT)/256;取高八位數(shù)據(jù)(這是第二種方法)

           ;MOV  TL0,#255   ;取底五位(為最大了)



           CLR  TF0   ;先把溢出標(biāo)志位清零

           SETB TR0   ;開始計(jì)時(shí)

           SETB EA    ;全局中斷打開

           SETB ET0   ;定時(shí)器/計(jì)數(shù)器T0溢出中斷打開



           MOV  R2,#00H  ;作為定時(shí)器累加器使用



LOOP:    SJMP LOOP   ;在此循環(huán),等待中斷





INT_TIMER0:         ;當(dāng)TF0=1,跳轉(zhuǎn)到下面的中斷服務(wù)程序中

        INC  R2          ;使R2自增一

        CLR  TF0       ;重新置中斷標(biāo)志位為0

        MOV  TH0,#(65536-COUNT)/256  ; 重新符初值(因?yàn)橐绯龊笞兂?了)

        MOV  TL0,#255  

        CJNE R2,#5,RETURN     ;讓燈明暗相間50ms

        MOV  R2, #00H

        CPL  LED              ;讓燈明暗交替變化

RETURN:   

        RETI



        END



;程序?qū)懲炅耍ú⒉皇呛茈y,不過就是配置一下定時(shí)器,在中斷中寫點(diǎn)處理程序罷了

;),

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

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

樓主
ID:20672 發(fā)表于 2018-8-3 11:49 | 只看該作者
謝謝分享
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 成人精品一区亚洲午夜久久久 | 久久久久亚洲精品 | 国产精品99久久久久久久vr | 国产精品久久久久国产a级 欧美日本韩国一区二区 | 久久久久久成人 | 精品一区二区久久久久久久网站 | 91久久精品国产91久久性色tv | 亚洲精品一区二三区不卡 | 青青草华人在线视频 | 国产精品三级久久久久久电影 | 国产麻豆乱码精品一区二区三区 | 免费在线看黄 | 国产一区二区在线观看视频 | 日日拍夜夜 | 国产成人亚洲精品 | 亚洲欧洲精品一区 | 精品国产欧美 | 国产伦精品| 欧美一二三区 | 韩三级在线观看 | 国产日韩视频 | 久久久久99 | 久久久久久国产精品 | 国产精品久久777777 | www.玖玖玖 | 欧美天堂在线观看 | 97伊人| 在线三级电影 | 亚洲一区二区三区国产 | 在线视频成人 | 久久精品国产一区二区电影 | 欧美日韩不卡合集视频 | 午夜爱爱毛片xxxx视频免费看 | 国产精品视频二区三区 | 久久久99国产精品免费 | 日韩视频一区二区 | 国产传媒毛片精品视频第一次 | 欧美aⅴ | 日韩一区二区福利视频 | 日韩成人一区 | 国产超碰人人爽人人做人人爱 |