promotion image of download ymail app
Promoted
匿名使用者
匿名使用者 發問時間: 電腦與網際網路程式設計 · 1 0 年前

關於8051組合語言~

請問有人能幫我解釋一下 下面這是什麼意思嘛@@?

; LOT.ASM IO51 7 RANDOM NO ON LCD

BU EQU 31H ; 31--36 37

X EQU 38H

RS REG P0.0

EN REG P0.1

SPK REG P3.4

K1 REG P2.4

K2 REG P2.5

;--------------------------------

ORG 0H

JMP MAIN

ORG 0BH

JMP T0_INT

;--------------------------------

MAIN: CLR EN ; LCD OFF

CALL INIT_TI

CALL SET_LCD

CALL LED_BL

CALL BZ

CALL BZ

CALL TEST

JMP $

;--------------------------------

INIT_TI:

MOV TMOD,#00000000B

MOV IE, #10000010B

MOV TL0,#24

MOV TH0,#99

SETB TR0

RET

;---------------------------

; DELAY R5*10 ms

DELAY:

MOV R6,#50

$1: MOV R7,#100

$2: DJNZ R7,$2

DJNZ R6,$1

DJNZ R5,DELAY

RET

;--------------------------------

LED_BL:

MOV R4,#6

$0: CPL P3.7

MOV R5,#3

CALL DELAY

DJNZ R4, $0

RET

;-----------------------------------------------------------------

MESS: DB "LOT IO51 7 RANDOM NO ON LCD ....","$"

;------------------------------------------------------------------

;COUNT=5000/1us=5000 LO 5000 uS HI 5000 uS

; MOV TL0,#(8192-5000).MOD.32

; MOV TH0,#(8192-5000)/32

;LO EQU 24

;HI EQU 99

;---------------------

; USE TIMER MODE 0

;----------------------

T0_INT:

MOV TL0,#24

MOV TH0,#99

RETI

;---------------------------------------------------------------------

; CLEAR BUFFER

INIT_BU:

MOV R2,#7

MOV R0,#BU

$1: MOV @R0,#0

INC R0

DJNZ R2,$1

RET

;------------------------------------------

; SHOW BUFFER

SHOW_BU:

MOV R2,#7

MOV R0,#BU

$1: MOV A,@R0

NOP

INC R0

DJNZ R2,$1

RET

;------------------------------------------------------------------------

2 個解答

評分
  • BUMEGG
    Lv 7
    1 0 年前
    最佳解答

    BU EQU 31H ; bu = 31h ; bu=你給它的名稱 '(2)'

    X EQU 38H; x=38h ; x=你給它的名稱

    RS REG P0.0 ; 定義RS=阜0的第1個位元;也就是幫蟑螂另取一個名字叫小強

    EN REG P0.1 ; 定義EN=阜0的第2個位元'(1)'

    SPK REG P3.4 ; 定義SPK=阜3.4位元

    K1 REG P2.4 ; 定義K1=阜2.4位元

    K2 REG P2.5 ; 定義RS=阜2.5位元

    ;--------------------------------

    ORG 0H ; 設定程式組譯的位置

    JMP MAIN ; 跳到標記為的地方MAIN

    ORG 0BH ; TF0的終斷源;也就是當TF=1時眺到此執行

    JMP T0_INT ; 跳到標記為T0_INT的地方

    ;--------------------------------

    MAIN: ; 標記為MAIN的地方

    CLR EN ; LCD OFF;把'(1)'清為0

    CALL INIT_TI ; 呼叫標記為INIT_TI這個副程式

    CALL SET_LCD ; 呼叫標記為SET_LCD這個副程式

    CALL LED_BL ; 呼叫標記為LED_BL這個副程式

    CALL BZ ; 呼叫標記為BZ這個副程式

    CALL BZ

    CALL TEST ; 呼叫標記為TEST這個副程式

    JMP $ ; 等待

    ;--------------------------------

    INIT_TI : 標記為INIT_TI的地方

    MOV TMOD,#00000000B ; 計時器模式為13BIT計時器當TR1=1時計時

    MOV IE, #10000010B ; 計時器1之中斷致能暫存器中斷否由終斷致能位元設定;致能計數時器0之終斷

    MOV TL0,#24 ;TL0 = 24

    MOV TH0,#99 ; TH0 = 99

    SETB TR0 ; 計時器0啟動

    RET ; 回到呼叫它的主程式

    ;---------------------------

    ; DELAY R5*10 ms

    DELAY: ; 標記為DELAY的地方

    MOV R6,#50 ; R6= 50

    $1: ;標記為$1的地方

    MOV R7,#100;R7 = 100

    $2: ; 標記為$2的地方

    DJNZ R7,$2 ; R7 = R7-1 ;如果R7>< 0;跳到標記為$2的地方

    DJNZ R6,$1 ; R6 = R6-1 ;如果R6>< 0;跳到標記為$1的地方

    DJNZ R5,DELAY; R5 = R5 - 1 ;如果R5>< 0;跳到標記為DELAY的地方

    RET ; 回到呼叫它的主程式

    ;--------------------------------

    LED_BL: ; 標記為LED_BL的地方

    MOV R4,#6 ; R4 = 6

    $0: ; 標記為$0的地方

    CPL P3.7 ; 取位元P3.7之補數(Complement bit),所標示之位元變數作補數運算,原先為1的位元資料變成0,反之亦然.

    MOV R5,#3 ; R5 = 3

    CALL DELAY ; 呼叫標記為DELAY這個副程式

    DJNZ R4, $0 ; R4 = R4 - 1 ;如果R4>< 0;跳到標記為$0的地方

    RET ; 回到呼叫它的主程式

    ;-----------------------------------------------------------------

    MESS:DB "LOT IO51 7 RANDOM NO ON LCD ....","$";

    ;標題為MESS,DB(DEFINE BYTE)將1個BYTE的常數放到記憶體內,兩個以上的資料須用逗點(,)分開

    ;備註開始--------------------------------

    ;COUNT=5000/1us=5000 LO 5000 uS HI 5000 uS

    ; MOV TL0,#(8192-5000).MOD.32

    ; MOV TH0,#(8192-5000)/32

    ;LO EQU 24

    ;HI EQU 99

    ;---------------------

    ; USE TIMER MODE 0

    ;備註結束-----------------

    T0_INT: ; 標記為T0_INT的地方,終斷成式開始

    MOV TL0,#24 ; TL0 = 24

    MOV TH0,#99 ; TL1 = 99

    RETI ; 回主程式

    ;---------------------------------------------------------------------

    ; CLEAR BUFFER

    INIT_BU: ; 標記為INIT_BU的地方,終斷成式開始

    MOV R2,#7 ; R2 = 7

    MOV R0,#BU ; R0 = BU,BU='2'

    $1: ; 標記為$1的地方

    MOV @R0,#0 ; 間接訂址,@R0=0

    INC R0 ; R0 = R0 +1

    DJNZ R2,$1 ; R2 = R2 - 1, R2 >< 0跳到標記為$1的地方

    RET ; 回到呼叫它的主程式

    ;------------------------------------------

    ; SHOW BUFFER

    SHOW_BU: ; 標記為SHOW_BU的地方

    MOV R2,#7 ; R2 = 7

    MOV R0,#BU ; R0 = '2'

    $1: ; 標記為$1的地方

    MOV A,@R0 ; A= @R0的值

    NOP ; 空指令

    INC R0 ; R0 = R0 + 1

    DJNZ R2,$1; R2 = R2 - 1, R2 >< 0跳到標記為$1的地方

    RET; 回到呼叫它的主程式

    • Commenter avatar登入以對解答發表意見
  • 1 0 年前

    這個是一種錢數字加上英文字的語言,一班這都是用在火星上。

    • Commenter avatar登入以對解答發表意見
還有問題?馬上發問,尋求解答。