導航:首頁 > 編程知識 > 編程SETBTR0什麼意思

編程SETBTR0什麼意思

發布時間:2024-11-15 05:22:19

『壹』 單片機1秒鍾定時匯編語言怎麼編

可以有兩種方法,設晶振為12M,則
第一種方法:用延時的方法實現
DELAY: MOV R3,#10;延時子程序,延時1秒
D1: MOV R4,#200
D2: MOV R5,#250
D3: DJNZ R5,D3
DJNZ R4,D2
DJNZ R3,D1
RET
END

第二種方法:用定時器的方法實現
————
MOV R1,#20
————
DLY: MOV TMOD,#00000001B;延時子程序,設定定時器的工作方式
D1: SETB TL0,#176(65536-50000); 15536/256 (余數)
SETB TH0,#60;設置初出溢出值50ms,定時2S (商)
SETB TR0 ;啟動定時器
JNB TF0,$;是否溢出,沒有溢出等待,溢出走一條指令
CLR TF0;清零溢出
DJNZ R1,D1;走20次,剛好1秒
RET
END

『貳』 用51單片機實現時鍾功能程序

anEQUP0;

weiEQUP2;

keyBITP3.7;

ORG0000H

AJMPMAIN;絕對轉移指令,2kb范圍(11位)內跳轉LJMP16位64kb范圍內跳轉

;短轉移指令的功能是先使程序計數器PC加1兩次(即:取出指令碼),然後把加2後的地址和rel相加作為目標轉移地址。因此,短轉移指令是一條相對轉移指令,是一條雙位元組雙周期指令

ORG0030H;指明後面的程序從程序存儲器的0030H單元開始存放

DELAY200US:;@11.0592MHz

NOP

NOP

NOP

PUSH30H

PUSH31H

MOV30H,#2

MOV31H,#179

NEXT:

DJNZ31H,NEXT

DJNZ30H,NEXT

POP31H

POP30H

RET

ORG0060H

;DISPLAY子程序

DISPLAY:

PUSHACC;不能寫A,此處ACC代表地址,push後跟地址,代表把地址內的內容壓入棧中

PUSH00H;R0

PUSH06H;R6

PUSH07H;R7

PUSH83H;DPH

PUSH82H;DPL

MOVR6,#01H;位選數據,01指的是緩沖區最低位數據

MOVR7,#08H;循環次數

FLAG:

MOVan,#0x00;消影

MOVA,R6

CPLA;取反

MOVwei,A;位選

MOVA,#disBufDat

ADDA,R7

SUBBA,#0X08

MOVR0,A

MOVA,@R0;讀出要顯示的數據到A

MOVDPTR,#disTab

MOVCA,@A+DPTR;從rom取數據,取出要顯示的數據對應的段碼

MOVan,A;段選

MOVA,R6

RLA

MOVR6,A;更新下一次位選

LCALLDELAY200US

DJNZR7,FLAG

POP82H;DPL

POP83H;DPH

POP07H

POP06H

POP00H

POPACC

RET

ORG0100H

;定時器中斷0初始化

T0_INIT:

MOVTMOD,#0X01

MOVTH0,#0X3C

MOVTL0,#0XB0

SETBEA

SETBTR0

SETBET0

RET

ORG0130H

;T0中斷處理程序

INT_TIMERE0:

PUSHACC

SETBRS0

MOVTH0,#0X3C

MOVTL0,#0XB0

INCR0

MOVA,R0

SUBBA,#0X14

JBCY,SECFLAG

MOVR0,#0x00

INCsec

SECFLAG:

CLRRS0

POPACC

RETI

ORG000BH;定時器/計數器T0入口地址

LJMPINT_TIMERE0;跳轉到定時器/計數器中斷服務程序中去

disTab:DB0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0x40;0-f,空白,橫杠的段選數據

disBufDatEQU47H;定義顯示緩沖數據變數區,8個

disBufDatHeadEQU40H//單片機上顯示在最左邊

secEQU48H

;主程序

ORG0180H

MAIN:

MOVSP,#0X60;將0x60到0x7f設為堆棧區

LCALLT0_INIT

MOVdisBufDatHead,#0X00

MOVdisBufDatHead+1,#0X00

MOVdisBufDatHead+2,#0X11

MOVdisBufDatHead+3,#0X11

MOVdisBufDatHead+4,#0X11

MOVdisBufDatHead+5,#0X11

MOVdisBufDatHead+6,#0X11

MOVdisBufDatHead+7,#0X11

MOVsec,#0X3A

WHILE:

JBkey,KEYSCAN

MOVsec,0x00

KEYSCAN:

MOVA,sec

SUBBA,#3CH;超過60s歸零

JBCY,CLEAR

MOVsec,#0X00;clr加ram地址無效

CLEAR:

MOVA,sec

MOVB,#0AH

DIVAB;A/B,商存到A中,余數存B中

MOVdisBufDatHead,A

MOVdisBufDatHead+1,B

LCALLDISPLAY

LJMPWHILE;循環

END;

(2)編程SETBTR0什麼意思擴展閱讀

51機器周期和指令周期

1、機器周期是指單片機完成一個基本操作所花費的時間,一般使用微秒來計量單片機的運行速度,51單片機的一個機器周期包括12個時鍾振盪周期,也就是說如果51單片機採用12MHz晶振,那麼執行一個機器周期就只需要1μs;如果採用的是6MHz的晶振,那麼執行一個機器周期就需要2μs。

2、指令周期是指單片機執行一條指令所需要的時間,一般利用單片機的機器周期來計量指令周期。在51單片機里有單周期指令(執行這條指令只需一個機器周期),雙周期指令(執行這條指令只需要兩個機器周期),四周期指令(執行這條指令需要四個機器周期)。

除了乘、除兩條指令是四周期指令,其餘均為單周期或雙周期指令。也就是說,如果51單片機採用的是12MHz晶振,那麼它執行一條指令一般只需1~2微秒的時間;如果採用的是6MH晶振,執行一條指令一般就需2~4微秒的時間。

『叄』 單片機程序:P1口接8盞LED燈,8盞LED燈循環點亮,間隔時間為50ms,用延時子程序實現

8盞LED燈循環點亮,間隔時間為50ms,你能分辨不?
還是給你改為間隔時間為1s,用定時器延回時子程序實現
org 0000h
jmp start
org 0030h
start:
mov A,#0FEH;
mov R2,#8;
LOOP1: mov p1,A; 答左邊4個LED每隔1S亮1個。從P1.0到P1.7。
call delay1s; 調用定時1s程序
RL A;
djnz R2,LOOP1
jmp start

delay1s:
mov r7,#20
lpr7: call delay50ms;
djnz r7,lpr7
ret

delay50ms:
mov TMOD,#01H
mov TH0,#(65536-50000)/256;
mov TL0,#(65536-50000) mod 256;
setb TR0;
jnb TF0,$
clr TF0;
ret

jmp $
end

閱讀全文

與編程SETBTR0什麼意思相關的資料

熱點內容
微信升級版本後無法播放騰訊視頻 瀏覽:482
賣場廣告的app哪裡下載 瀏覽:377
靈狐網路視頻下載 瀏覽:7
javaapr 瀏覽:561
蘋果se天線在哪 瀏覽:359
投標文件一般存在哪裡 瀏覽:911
哪個網站上賣的葯真 瀏覽:642
iphone6plus聯通版 瀏覽:262
如期app怎麼樣 瀏覽:515
java相對路徑獲取文件 瀏覽:451
word怎麼字體變粗 瀏覽:406
怎麼看office2016版本 瀏覽:378
怎麼看手機上所有的app 瀏覽:794
惠州企業網站優化公司如何 瀏覽:155
iphone5鈴聲同步後找不到 瀏覽:245
蘋果手機同步通話記錄 瀏覽:877
win10聯想自帶ie卸載 瀏覽:309
linux將文件切換用戶歸屬 瀏覽:158
數據線pd20什麼意思 瀏覽:890
小米盒版本 瀏覽:582

友情鏈接