版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、子情景二 單燈閃爍單燈閃爍 項目引入 在公共場合,可以看到各種各樣的閃燈。單片機 控制發(fā)光二極管的亮滅。 通過8051單片機控制一個發(fā)光二極管的亮滅閃 爍,點亮?xí)r間持續(xù)1秒鐘。 項目要求 項目分析 1、單片機簡單程序的編寫 2、延時程序的編寫 2、單片機與發(fā)光二極管的連接 3、二極管閃爍程序 項目計劃 1、設(shè)計單片機與二極管的硬件連接圖 2、編寫程序 3、運行調(diào)試程序 1 清清0 0與與取反指令(2 2條)條) 取反:取反:cpl a cpl a ;/aa/aa 例:例:若若a=5cha=5ch,執(zhí)行,執(zhí)行cpl acpl a 結(jié)果:結(jié)果:a=a3ha=a3h 清清0 0:clr aclr a
2、 ;0a0a c comomp plement lement l logic operationogic operation 相關(guān)知識 2 1717條條 共有控制程序轉(zhuǎn)移類指令共有控制程序轉(zhuǎn)移類指令( (不包括位操作類的轉(zhuǎn)移不包括位操作類的轉(zhuǎn)移 指令指令) )。此類指令一般不影響。此類指令一般不影響pswpsw。 包括以下類型:包括以下類型: 無條件轉(zhuǎn)移和條件轉(zhuǎn)移無條件轉(zhuǎn)移和條件轉(zhuǎn)移 相對轉(zhuǎn)移和絕對轉(zhuǎn)移相對轉(zhuǎn)移和絕對轉(zhuǎn)移 長轉(zhuǎn)移和短轉(zhuǎn)移長轉(zhuǎn)移和短轉(zhuǎn)移 調(diào)用與返回指令調(diào)用與返回指令 短轉(zhuǎn)移類指令:短轉(zhuǎn)移類指令:ajmp ajmp addr11addr11 長轉(zhuǎn)移類指令:長轉(zhuǎn)移類指令:ljmp l
3、jmp addr16addr16 相對轉(zhuǎn)移指令:相對轉(zhuǎn)移指令:sjmp sjmp relrel 間接轉(zhuǎn)移指令:間接轉(zhuǎn)移指令:jmp jmp a+dptra+dptr (1 1)上面的前三條指令,統(tǒng)統(tǒng)理解成:上面的前三條指令,統(tǒng)統(tǒng)理解成:pcpc值改變,即值改變,即 跳轉(zhuǎn)到一個標號處。跳轉(zhuǎn)到一個標號處。 那么他們的區(qū)別何在呢?那么他們的區(qū)別何在呢? v跳轉(zhuǎn)的范圍不同。跳轉(zhuǎn)的范圍不同。 短轉(zhuǎn)移類指令:短轉(zhuǎn)移類指令:ajmp ajmp addr11addr11 長轉(zhuǎn)移類指令:長轉(zhuǎn)移類指令:ljmp ljmp addr16addr16 相對轉(zhuǎn)移指令:相對轉(zhuǎn)移指令:sjmp sjmp relrel 轉(zhuǎn)移
4、范圍轉(zhuǎn)移范圍: 2kb2kb 64kb64kb -128-128+127+127 v指令構(gòu)成不同。指令構(gòu)成不同。 ajmpajmp、ljmpljmp后跟的是后跟的是絕對地址絕對地址, 而而sjmpsjmp后跟的是后跟的是相對地址相對地址。 v指令長度不同指令長度不同 v 原則上,所有用原則上,所有用sjmpsjmp或或ajmpajmp的地方都可以用的地方都可以用 ljmpljmp來替代。來替代。 間接轉(zhuǎn)移指令:間接轉(zhuǎn)移指令:jmp jmp a+dptra+dptr 這條指令的用途也是跳轉(zhuǎn),轉(zhuǎn)到什么地方去呢?這條指令的用途也是跳轉(zhuǎn),轉(zhuǎn)到什么地方去呢? 這可不能由標號簡單地決定了。這可不能由標號簡
5、單地決定了。 轉(zhuǎn)移地址由轉(zhuǎn)移地址由a+dptra+dptr形成,并直接送入形成,并直接送入pcpc。 指令對指令對a a、dptrdptr和標志位均無影響和標志位均無影響。 本指令可代替眾多的判別跳轉(zhuǎn)指令,又稱為本指令可代替眾多的判別跳轉(zhuǎn)指令,又稱為散散 轉(zhuǎn)指令轉(zhuǎn)指令,多用于多分支程序結(jié)構(gòu)中。,多用于多分支程序結(jié)構(gòu)中。 (2 2)第四條指令與前三條指令相比有所不同第四條指令與前三條指令相比有所不同 例例: mov dptrmov dptr,#tab #tab ;將;將tabtab代表的地址送入代表的地址送入dptrdptr jmp a+dptr jmp a+dptr ;跳轉(zhuǎn);跳轉(zhuǎn) tab: a
6、jmp rout0 tab: ajmp rout0 ;跳轉(zhuǎn);跳轉(zhuǎn)rout0rout0開始的程序段開始的程序段 tab+2: ajmp rout1 ajmp rout1 ;跳轉(zhuǎn);跳轉(zhuǎn)rout1rout1開始的程序段開始的程序段 tab+4: ajmp rout2 ajmp rout2 ;跳轉(zhuǎn);跳轉(zhuǎn)rout2rout2開始的程序段開始的程序段 tab+6: ajmp rout3 ajmp rout3 ;跳轉(zhuǎn);跳轉(zhuǎn)rout3rout3開始的程序段開始的程序段 . rout0rout0: . rout1rout1: . rout2rout2: . rout3rout3: 執(zhí)行該段程序后,程序?qū)⒏鶊?zhí)行該
7、段程序后,程序?qū)⒏?據(jù)據(jù)a a中的內(nèi)容轉(zhuǎn)移到不同的中的內(nèi)容轉(zhuǎn)移到不同的 程序段去執(zhí)行程序段去執(zhí)行-散轉(zhuǎn)。散轉(zhuǎn)。 a=0,a=0,轉(zhuǎn)轉(zhuǎn)rout0rout0 a=2,a=2,轉(zhuǎn)轉(zhuǎn)rout1rout1 a=4,a=4,轉(zhuǎn)轉(zhuǎn)rout2rout2 a=6,a=6,轉(zhuǎn)轉(zhuǎn)rout3rout3 條件轉(zhuǎn)移指令是指在滿足一定條件轉(zhuǎn)移指令是指在滿足一定條件條件時進行時進行相對轉(zhuǎn)相對轉(zhuǎn) 移移,否則程序繼續(xù)執(zhí)行,否則程序繼續(xù)執(zhí)行本指令的本指令的下一條指令。下一條指令。 一、判一、判a內(nèi)容是否為內(nèi)容是否為0轉(zhuǎn)移指令轉(zhuǎn)移指令(2條)條) jz jz rel rel ;如果;如果a=0a=0,則轉(zhuǎn)移,否則順序執(zhí)行。,則轉(zhuǎn)移,
8、否則順序執(zhí)行。 jnzjnz rel rel ;如果;如果a0a0,就轉(zhuǎn)移。,就轉(zhuǎn)移。 轉(zhuǎn)移到相對于當前轉(zhuǎn)移到相對于當前pcpc值的值的8 8位移量的地址去。即:。即: 新的新的pcpc值值= =當前當前pc+pc+偏移量偏移量relrel 我們在編寫匯編語言源程序時,可以直接寫成:我們在編寫匯編語言源程序時,可以直接寫成: jzjz 標號標號 ;即轉(zhuǎn)移到標號處。;即轉(zhuǎn)移到標號處。 mov a mov a,r0r0 jz l1jz l1 mov r1 mov r1,#00h#00h ajmp l2 ajmp l2 l1 l1: mov r1: mov r1,#0ffh#0ffh l2l2: s
9、jmp l2: sjmp l2 end end 在執(zhí)行上面這段程序前:如果在執(zhí)行上面這段程序前:如果r0=0r0=0,結(jié)果,結(jié)果r1=0ffhr1=0ffh。 而如果而如果r0r0 0 0,則結(jié)果是,則結(jié)果是r1=00hr1=00h。 把上面的那個例子中的把上面的那個例子中的jzjz改成改成jnzjnz,看看程序執(zhí)行的,看看程序執(zhí)行的 結(jié)果是什么結(jié)果是什么? ? 如果如果r0=0r0=0,結(jié)果,結(jié)果r1=00hr1=00h。如果。如果r0 r0 0 0,結(jié)果是,結(jié)果是r1r1中的中的 值為值為0ffh0ffh。 cjne acjne a,# #datadata,relrel cjne acjn
10、e a,directdirect,relrel cjne rncjne rn,# #datadata,relrel cjne cjne riri,# #datadata,relrel 此類指令的功能是將兩個操作數(shù)比較,如果兩者此類指令的功能是將兩個操作數(shù)比較,如果兩者相等相等,就,就 順序執(zhí)行順序執(zhí)行,如果,如果不相等不相等,就,就轉(zhuǎn)移轉(zhuǎn)移。 同樣地,使用時,我們可以將同樣地,使用時,我們可以將relrel理解成標號,即:理解成標號,即: cjne acjne a,#data#data,標號,標號 cjne acjne a,directdirect,標號,標號 cjne rncjne rn,#
11、data#data,標號,標號 cjne ricjne ri,#data#data,標號,標號 利用這些指令,可以判斷兩數(shù)是否利用這些指令,可以判斷兩數(shù)是否相等相等。 但有時還想得知兩數(shù)比較之后但有時還想得知兩數(shù)比較之后哪個大哪個大,哪個小哪個小, 本條指令也具有這樣的功能:本條指令也具有這樣的功能: 如果兩數(shù)不相等,則如果兩數(shù)不相等,則cpucpu還會用還會用cycy(進位位)(進位位) 來反映哪個數(shù)大,哪個數(shù)小。來反映哪個數(shù)大,哪個數(shù)小。 如果前面的數(shù)大,則如果前面的數(shù)大,則cy=0cy=0,否則,否則cy=1cy=1。 因此在程序轉(zhuǎn)移后再次利用因此在程序轉(zhuǎn)移后再次利用cycy就可判斷出哪
12、個就可判斷出哪個 數(shù)大,哪個數(shù)小了。數(shù)大,哪個數(shù)小了。 mov a,r0 cjne a,#10h,l1 mov r1,#0 ;如r0=10h,則不轉(zhuǎn)移r1=00h; ajmp l3 l1:jc l2 ;如cy=1即 r010h,則轉(zhuǎn)移 ajmp l3 l2:mov r1,#0ffh l3:sjmp l3 因此最終結(jié)果是:本程序執(zhí)行前, 如果r0=10h,則r1=00h; 如果r010h,則r1=0aah; 如果r010h,則r1=0ffh。 djnz rndjnz rn,relrel djnz directdjnz direct,relrel djnzdjnz指令的執(zhí)行過程是這樣的指令的執(zhí)行過
13、程是這樣的: : 它將第一個參數(shù)中的值它將第一個參數(shù)中的值減減1 1,然后看這個值是否等于,然后看這個值是否等于 0 0,如果,如果等于等于0 0,就往下執(zhí)行,如果,就往下執(zhí)行,如果不等于不等于0 0,就轉(zhuǎn)移,就轉(zhuǎn)移 到第二個參數(shù)所指定的地方去。到第二個參數(shù)所指定的地方去。 例:例: djnz 10hdjnz 10h,looploop . . loop: .loop: . 例例: mov 23h,#0ahmov 23h,#0ah clr a clr a loop: add a,23hloop: add a,23h djnz 23h,loop djnz 23h,loop sjmp $ sjmp
14、$ 上述程序段的執(zhí)行過程是:上述程序段的執(zhí)行過程是: 將將23h23h單元中的數(shù)連續(xù)相加,存至單元中的數(shù)連續(xù)相加,存至a a中,每加一次,中,每加一次, 23h23h單元中的數(shù)值單元中的數(shù)值減減1 1,直至減到,直至減到0 0,共加(,共加(23h23h)次。)次。 3 3 空操作指令空操作指令(1條) nop 空操作,就是什么事也不干,停一個周期,一般空操作,就是什么事也不干,停一個周期,一般 用作短時間的延時。用作短時間的延時。 4 4 位操作指令位操作指令( 1717條)條) mcs-51mcs-51單片機的硬件結(jié)構(gòu)中,有一個位處理器單片機的硬件結(jié)構(gòu)中,有一個位處理器 (又稱布爾處理器)
15、,它有一套位變量處理的指令集,(又稱布爾處理器),它有一套位變量處理的指令集, 包括包括位位變量變量傳送傳送、邏輯邏輯運算、控制程序運算、控制程序轉(zhuǎn)移轉(zhuǎn)移等。等。 在在mcs-51 mcs-51 中,有一部份中,有一部份ramram和一部份和一部份sfrsfr是具有位是具有位 尋址功能的。尋址功能的。 v 位操作區(qū)位操作區(qū):內(nèi)部:內(nèi)部ramram的的20h-2fh20h-2fh這這1616個字節(jié)單個字節(jié)單 元,即元,即128128個位單元個位單元( (位地址空間位位地址空間位00007fh)7fh); v 可以位尋址的特殊功能寄存器可以位尋址的特殊功能寄存器:80318031中有一中有一 些些
16、sfrsfr是是可以進行位尋址可以進行位尋址的,這些的,這些sfrsfr的特點是的特點是 其其字節(jié)地址均可被字節(jié)地址均可被8 8整除整除, 如如a a累加器,累加器,b b寄存寄存 器、器、pswpsw、ipip(中斷優(yōu)先級控制寄存器)、(中斷優(yōu)先級控制寄存器)、 ieie (中斷允許控制寄存器)、(中斷允許控制寄存器)、sconscon(串行口控制(串行口控制 寄存器)、寄存器)、tcontcon(定時器(定時器/ /計數(shù)器控制寄存計數(shù)器控制寄存 器)、器)、p0-p3p0-p3(i/oi/o端口鎖存器)。端口鎖存器)。 在進行位處理時,在進行位處理時, cycy用作用作“位位累加器累加器”
17、 。 以以psw中位中位4( rs1 )為例為例。 直接直接(位位)地址方式:地址方式:如如 d4h; 點操作符號方式點操作符號方式:如:如 psw.4,d0h.4; 位名稱方式位名稱方式:如:如 rs1; 用戶定義名方式用戶定義名方式:如用偽指令:如用偽指令 bit sub.reg bit rs1 定義后,可用定義后,可用sub.reg代替代替rs1。 位地址表達方式位地址表達方式 4.1 4.1 位傳送指令位傳送指令(2條) mov cmov c,bitbit;bitbit c c mov mov bitbit,c c;c c bitbit 這組指令的功能是實現(xiàn)位累加器(這組指令的功能是實
18、現(xiàn)位累加器(cycy)和其它)和其它 位地址之間的數(shù)據(jù)傳遞。位地址之間的數(shù)據(jù)傳遞。 例例:mov cmov c,p1.0p1.0;將;將p1.0p1.0的狀態(tài)送給的狀態(tài)送給c c。 mov p1.0mov p1.0,c c ;將;將c c中的狀態(tài)送到中的狀態(tài)送到p1.0 p1.0 ;引腳上去。;引腳上去。 位清位清0 0指令指令 clr cclr c ;使;使cy=0cy=0 clr bit clr bit ;使指令的位地址等于;使指令的位地址等于0 0。 例例:clr p1.0 clr p1.0 ;即使;即使p1.0p1.0變?yōu)樽優(yōu)? 0 位置位置1 1指令指令 setb csetb c ;
19、使;使cy=1cy=1 setb bit setb bit ;使指定的位地址等于;使指定的位地址等于1 1。 例例:setb p1.0 setb p1.0 ;使;使p.0p.0變?yōu)樽優(yōu)? 1 4.3 位邏輯運算指令位邏輯運算指令 (6條) 位與指令位與指令 anl anl c c,bitbit ;cy與指定位的值相與,結(jié)果送 cy anl anl c c,/bit/bit ;先將指定的位地址中的值取出 后取反,再和cy相與,結(jié)果送回cy。但但注意注意: :指定指定 的位地址中的值本身并不發(fā)生變化。的位地址中的值本身并不發(fā)生變化。 例例:anl c,/p1.0 位取反指令位取反指令 cpl cc
20、pl c ;使;使cycy值取反。值取反。 cpl bitcpl bit ;使指定的位的值取反。;使指定的位的值取反。 例例:cpl p1.0cpl p1.0 位或指令位或指令 orl orl c c,bitbit orl orl c c,/bit/bit 4.4 4.4 位條件轉(zhuǎn)移指令位條件轉(zhuǎn)移指令(5條) 判判cycy轉(zhuǎn)移指令轉(zhuǎn)移指令 jc rel jnc rel 第一條指令的功能是如果cy=1就轉(zhuǎn)移,否則 就順序執(zhí)行。 第二條指令則和第一條指令相反,即如果 cy=0就轉(zhuǎn)移,否則就順序執(zhí)行。 同樣理解: jnc 標號 判位變量轉(zhuǎn)移指令判位變量轉(zhuǎn)移指令 jb bit,rel jnb bit,
21、rel jbc bit,rel 第一條指令:如果指定的(bit)=1,則轉(zhuǎn)移,否 則順序執(zhí)行,第二條指令功能相反。 同樣理解:jb bit,標號 第三條指令是如果指定的(bit)=1,則轉(zhuǎn)移, 并把該位清0,否則順序執(zhí)行。 5 5 偽指令偽指令 在匯編時起控制作用,自身在匯編時起控制作用,自身并不產(chǎn)生并不產(chǎn)生機器碼,機器碼, 而僅是為匯編服務(wù)的一些指令,稱為而僅是為匯編服務(wù)的一些指令,稱為偽指令偽指令。偽指。偽指 令不屬于令不屬于80c5180c51指令系統(tǒng)。指令系統(tǒng)。 5.1 5.1 起始偽指令起始偽指令 org(originorg(origin) ) 功能:規(guī)定功能:規(guī)定orgorg下面目
22、標程序的起始地址下面目標程序的起始地址。 格式:格式:org 16org 16位位地址地址 org 0100h org 0100h start start:mov amov a,#05h#05h add a add a,#08h#08h mov 20h mov 20h,a a org 0100h org 0100h表示該偽指令下面第一條指令的起始地址表示該偽指令下面第一條指令的起始地址 是是0100h0100h,即,即mov amov a,#05h#05h指令的第一個字節(jié)地址為指令的第一個字節(jié)地址為0100h0100h, 或標號或標號startstart代表的地址為代表的地址為0100h010
23、0h。 5.2 結(jié)束偽指令結(jié)束偽指令 endend 功能:匯編語言源程序的結(jié)束標志。功能:匯編語言源程序的結(jié)束標志。 在在endend后面的指令,匯編程序不再處理后面的指令,匯編程序不再處理。 格式:格式:endend 5.3 等值偽指令等值偽指令 equequ(equateequate) 格式:格式:字符名稱字符名稱 equequ 數(shù)據(jù)或匯編符號數(shù)據(jù)或匯編符號 例如:例如: pp equ r0 pp equ r0 ;pp=r0pp=r0 mov a mov a,pp pp ;a r0a r0 這里將這里將pppp等值為匯編符號等值為匯編符號r0r0,在指令中,在指令中pppp就可以代替就可以
24、代替 r0r0來使用。來使用。 5.4 數(shù)據(jù)地址賦值偽指令數(shù)據(jù)地址賦值偽指令 datadata 格式:格式:字符名稱字符名稱 datadata 表達式表達式 功能:將數(shù)據(jù)地址或代碼地址賦予規(guī)定的功能:將數(shù)據(jù)地址或代碼地址賦予規(guī)定的 字符名稱。字符名稱。 5.5定義字節(jié)偽指令定義字節(jié)偽指令dbdb(define bytedefine byte) 格式:格式:db 8db 8位二進制數(shù)表位二進制數(shù)表 功能:從指定的地址單元開始,定義若干功能:從指定的地址單元開始,定義若干 個個8 8位內(nèi)存單元的數(shù)據(jù)。位內(nèi)存單元的數(shù)據(jù)。 數(shù)據(jù)與數(shù)據(jù)之間用數(shù)據(jù)與數(shù)據(jù)之間用“,”分割。分割。 例如:例如: org 4000horg 4000h tab tab: db 73hdb 73h,4545,“a a”,“2 2” tab1 tab1:db 101bdb 101b 以上指令經(jīng)匯編后,將對以上指令經(jīng)匯編后,將對4000h4000h開始的若干內(nèi)存單開始的若干內(nèi)存單 元賦值。元賦值。 (4000h)=73h(4000h)=73h,(4001h)(4001h):2dh(2dh(注:注:4
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年醫(yī)生年終考核個人工作總結(jié)
- 第20課 正面戰(zhàn)場的抗戰(zhàn)(解析版)
- 寒假自習(xí)課 25春初中道德與法治八年級下冊教學(xué)課件 第四單元第七課 第1課時 自由平等的真諦
- 《游戲的基本理論》課件
- 新媒體風(fēng)云模板
- 2024企業(yè)主要負責(zé)人安全培訓(xùn)考試題加解析答案
- 乒乓球比賽作文300字集合九篇
- 2023年-2024年員工三級安全培訓(xùn)考試題含答案(能力提升)
- 2024企業(yè)主要負責(zé)人安全培訓(xùn)考試題及答案往年題考
- 七年級下《國寶大熊貓》蘇教版-課件
- 中小企業(yè)內(nèi)部控制與風(fēng)險管理(第二版)項目一:內(nèi)部控制與風(fēng)險管理基礎(chǔ)
- 駕駛艙資源管理緒論課件
- 聲藝 EPM8操作手冊
- 西北農(nóng)林科技大學(xué)專業(yè)學(xué)位研究生課程案例庫建設(shè)項目申請書(MBA)
- 外墻保溫、真石漆施工技術(shù)交底
- 車床日常點檢表
- 配網(wǎng)工程施工監(jiān)理管理要點~.docx
- 國內(nèi)No.7信令方式技術(shù)規(guī)范----綜合業(yè)務(wù)數(shù)字網(wǎng)用戶部分(ISUP)
- 尾礦庫在線監(jiān)測方案)
- 房屋安全簡易鑒定表.docx
- FSSC運營管理制度(培訓(xùn)管理辦法)
評論
0/150
提交評論