?? mcs51.asm
字號:
XX1: MOV R6,A
MOV A,R7
MOV @R0,A
MOV A,R6
XX0: RET
XLE: ACALL DIS
ACALL KEY
MOV R4,A
MOV R1,#48H
MOV A,@R1
MOV R2,A
INC R1
MOV A,@R1
MOV R3,A
MOV A,R4
XRL A,R3
MOV R3,04H
MOV R4,02H
JZ X10
MOV R2,#88H
MOV R4,#88H
X10: DEC R4
MOV A,R4
XRL A,#82H
JZ X11
MOV A,R4
XRL A,#0EH
JZ X11
MOV A,R4
JZ X12
MOV R4,#20H
DEC R2
SJMP X13
X12: MOV R4,#0FH
X11: MOV R2,04H
NOP
NOP
MOV R4,03H
X13: MOV R1,#48H
MOV A,R2
MOV @R1,A
INC R1
MOV A,R3
MOV @R1,A
MOV A,R4
JB ACC.5,X113
JB ACC.4,X113
MOV DPTR,#LS3
MOVC A,@A+DPTR
X113: RET
LS3: DB 07H,04H,08H,05H,09H,06H,0AH
DB 0BH,01H,00H,02H,0FH,03H,0EH
DB 0CH,0DH
DIS: PUSH DPH
PUSH DPL
SETB RS1
MOV R0,#7EH
MOV R2,#20H
MOV R3,#00H
MOV DPTR,#LS0
LS2: MOV A,@R0
MOVC A,@A+DPTR
MOV R1,#0DCH
MOVX @R1,A
MOV A,R2
inc R1
MOVX @R1,A
LS1: DJNZ R3,LS1
CLR C
RRC A
MOV R2,A
DEC R0
JNZ LS2
movx @r0,a
dec r0
cpl a
movx @r0,a
CLR RS1
POP DPL
POP DPH
RET
LS0: DB 0C0H,0F9H,0A4H,0B0H,99H,92H
DB 82H,0F8H,80H,90H,88H,83H,0C6H
DB 0A1H,86H,8EH,0FFH,0CH,89H,7FH,0BFH
KEY: SETB RS1
MOV R2,#0FEH
MOV R3,#08H
MOV R0,#00H
LP1: MOV R1,#0DDH
MOV A,R2
MOVX @R1,A
RL A
MOV R2,A
inc r1
MOVX A,@R1
CPL A
ANL A,#0FH
JNZ LP0
INC R0
DJNZ R3,LP1
XP33: MOV A,#20H
XP3: mov r2,a
clr a
mov r1,#0ddh
movx @r1,a
mov a,r2
CLR RS1
RET
LP0: CPL A
JB ACC.0,XP0
MOV A,#00H
SJMP LPP
XP0: JB ACC.1,XP1
MOV A,#08H
SJMP LPP
XP1: JB ACC.2,XP2
MOV A,#10H
SJMP LPP
XP2: JB ACC.3,XP33
MOV A,#18H
LPP: ADD A,R0
sjmp xp3
;--------------------------------
LEDP: MOV 50H,#7EH
MOV A,#10H
MOV R0,#79H
LEDS: MOV @R0,A
INC R0
CJNE R0,#7EH,LEDS
INC A
MOV @R0,A
RET
;===================== 硬件實(shí)驗(yàn)五 8255 A.B.C口輸出方波 ===================
ORG 0580H
SE09: MOV DPTR,#0FFDBH
MOV A,#80H
MOVX @DPTR,A ;8255初始化
MOV A,#55H ;一位隔一位高電平
LO15: MOV DPTR,#0FFD8H
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A ;A.B.C口送入
MOV R2,#40H ;延時(shí)
LCALL DELY
CPL A ;取反
SJMP LO15 ;循環(huán)
;=================== 硬件實(shí)驗(yàn)九 A/D轉(zhuǎn)換實(shí)驗(yàn) ========================
ORG 05A0H
SE11: MOV SP,#53H
MOV 7EH,#00H
MOV 7DH,#08H
MOV 7CH,#00H
MOV 7BH,#09H
MOV 7AH,#10H
MOV 79H,#10H ;顯示緩沖區(qū)初值
LO18: LCALL DIS ;SSEE ;顯示
MOV A,#00H
MOV DPTR,#0FFE0H
MOVX @DPTR,A ;0809的0通道采樣
LCALL DIS ;SSEE
MOVX A,@DPTR ;取出采樣值
MOV R0,#79H
LCALL PTDS ;采樣值送顯示緩沖區(qū)
SJMP LO18 ;循環(huán)
;===================== 硬件實(shí)驗(yàn)十 D/A轉(zhuǎn)換實(shí)驗(yàn) =========================
ORG 05E0H
SE13: MOV SP,#53H
MOV 7EH,#00H
MOV 7DH,#08H
MOV 7CH,#03H
MOV 7BH,#02H ;顯示緩沖區(qū)初值
LO20: MOV R6,#00H
LO21: MOV DPTR,#0FFE0H
MOV A,R6
MOVX @DPTR,A ;送0832轉(zhuǎn)換
MOV R0,#79H
LCALL PTDS
MOV R2,#10H
L023: LCALL DIS ;顯示
DJNZ R2,L023
INC R6 ;加1
CJNE R6,#0FFH,LO21 ;不到FF繼續(xù)加
LO22: MOV DPTR,#0FFE0H
DEC R6
MOV A,R6
MOVX @DPTR,A ;減1送0832轉(zhuǎn)換
MOV R0,#79H
LCALL PTDS
MOV R2,#10H
L024: LCALL DIS ;顯示
DJNZ R2,L024
CJNE R6,#00H,LO22 ;不為0繼續(xù)減
SJMP LO20 ;循環(huán)
;==================== 軟件實(shí)驗(yàn)一 清零程序 ==============================
ORG 0640H
SE01: MOV R0,#00H
MOV DPTR,#2000H ;(0000H)送DPTR
LOO1: CLR A
MOVX @DPTR,A ;0送(DPTR)
INC DPTR ;DPTR+1
INC R0 ;字節(jié)數(shù)加1
CJNE R0,#00H,LOO1 ;不到FF個(gè)字節(jié)再清
LOOP: SJMP LOOP
;=================== 軟件實(shí)驗(yàn)二 拆字程序 ===========================
ORG 0660H
SE02: MOV DPTR,#2000H
MOVX A,@DPTR
MOV B,A ;(2000)→A→B
SWAP A ;交換
ANL A,#0FH ;屏敝高位
INC DPTR
MOVX @DPTR,A ;送2001H
INC DPTR
MOV A,B
ANL A,#0FH ;(2000)內(nèi)容屏敝高位
MOVX @DPTR,A ;送2002H
SJMP $
;=================== 軟件實(shí)驗(yàn)三 拼字程序 ==============================
ORG 0680H
SE03: MOV DPTR,#2000H
MOVX A,@DPTR
ANL A,#0FH ;(2000H)內(nèi)容屏敝高位
SWAP A ;交換
MOV B,A ;保存
INC DPTR
MOVX A,@DPTR ;(2001H)內(nèi)容送A
ANL A,#0FH ;屏敝高位
ORL A,B ;或
INC DPTR
MOVX @DPTR,A ;送2002H
SJMP $
;=================== 軟件實(shí)驗(yàn)九 脈沖計(jì)數(shù)(定時(shí)/計(jì)數(shù)器實(shí)驗(yàn))===============
ORG 06E0H
SE15: MOV SP,#53H
MOV TMOD,#05H
MOV TH0,#00H
MOV TL0,#00H ;定時(shí)計(jì)數(shù)器初始化
SETB TR0 ;開計(jì)數(shù)器
LO29: MOV R2,TH0
MOV R3,TL0 ;取出TH0.TL0內(nèi)容
LCALL ZOY0 ;二轉(zhuǎn)十進(jìn)制
MOV R0,#79H
MOV A,R6
LCALL PTDS
MOV A,R5
LCALL PTDS
MOV A,R4
LCALL PTDS ;送顯示緩沖區(qū)
LCALL SSEE ;顯示
SJMP LO29 ;循環(huán)計(jì)數(shù).顯示
ZOY0: CLR A
MOV R4,A
MOV R5,A
MOV R6,A ;0送R4 R5 R6
MOV R7,#10H
LO30: CLR C ;R2 R3左移.移出的
MOV A,R3 ;最高位送CY
RLC A
MOV R3,A
MOV A,R2
RLC A
MOV R2,A
MOV A,R6
ADDC A,R6 ;(R4 R5 R6)*2+CY送R4 R5 R6
DA A ;十進(jìn)制調(diào)整
MOV R6,A
MOV A,R5
ADDC A,R5
DA A
MOV R5,A
MOV A,R4
ADDC A,R4
DA A
MOV R4,A
DJNZ R7,LO30 ;循環(huán)16次
RET
;------------------------------------------------------------------------
ORG 0730H
SE16: MOV SP,#53H
MOV TMOD,#51H
MOV TH0,#3CH
MOV TL0,#0B7H
MOV TL1,#00H
MOV TH1,#00H ;定時(shí)器.0計(jì)數(shù)器1初始化
MOV 23H,#00H
ORL IE,#82H
MOV TCON,#50H ;開定時(shí)中斷
LO31: MOV R2,40H
MOV R3,41H ;計(jì)數(shù)脈沖取出
LCALL ZOY0 ;轉(zhuǎn)換
MOV R0,79H
MOV A,R6
LCALL PTDS
MOV A,R5
LCALL PTDS
MOV A,R4
LCALL PTDS ;送顯示緩沖區(qū)
LCALL SSEE ;顯示
SJMP LO31
;==================== 硬件實(shí)驗(yàn)六 8255 PA口控制PB口 =====================
ORG 0770H
SE17: MOV DPTR,#0FFDBH
MOV A,#90H
MOVX @DPTR,A ;8255初始化
LO32: MOV DPTR,#0FFD8H
MOVX A,@DPTR ;PA口狀態(tài)取出
INC DPTR
MOVX @DPTR,A ;送PB口
SJMP LO32
ORG 0790H
SE18: MOV P1,#0FFH ;送P1口
LO34: MOV A,#0FEH ;L1發(fā)光二極管點(diǎn)亮
LO33: MOV P1,A
LCALL SE19 ;延時(shí)
RL A ;左移位
SJMP LO33 ;循環(huán)
ORG 07A0H
SE19: MOV R6,#0A0H
LO36: MOV R7,#0FFH
LO35: DJNZ R7,LO35
DJNZ R6,LO36 ;延時(shí)
RET
;==================== 軟件實(shí)驗(yàn)四 數(shù)據(jù)區(qū)傳送子程序 =====================
ORG 07B0H
SE22: MOV DPL,R3
MOV DPH,R2 ;建立源程序首址
MOVX A,@DPTR ;取數(shù)
MOV DPL,R5
MOV DPH,R4 ;目的地首址
MOVX @DPTR,A ;傳送
CJNE R3,#0FFH,LO42
INC R2
LO42: INC R3 ;源地址加1
CJNE R5,#0FFH,LO43
INC R4
LO43: INC R5 ;目地址加1
CJNE R7,#00H,LO44
CJNE R6,#00H,LO45 ;字節(jié)數(shù)減1
SJMP $
NOP
LO44: DEC R7
SJMP SE22
LO45: DEC R7
DEC R6
SJMP SE22 ;未完繼續(xù)
;=================== 硬件實(shí)驗(yàn)三 P3.3口輸入,P1口輸出 =====================
ORG 0810H
J100: MOV A,#00H
J101: JB P3.3,J101
MOV R2,#20H
LCALL DELY
JB P3.3,J101 ;P3.3電平為低嗎?
J102: JNB P3.3,J102
MOV R2,#20H
LCALL DELY
JNB P3.3,J102 ;P3.3電平高嗎?
INC A ;加1
PUSH ACC
CPL A ;取反
MOV P1,A ;驅(qū)動發(fā)光二極管
POP ACC
AJMP J101 ;循環(huán)
;=================== 軟件實(shí)驗(yàn)七 無符號雙字節(jié)快速乘法子程序 ================
ORG 0970H
QKUL: MOV A,R3
MOV B,R7
MUL AB ;R3*R7
XCH A,R7 ;R7=(R3*R7)低字節(jié)
MOV R5,B ;R5=(R3*R7)高字節(jié)
MOV B,R2
MUL AB ;R2*R7
ADD A,R5
MOV R4,A
CLR A
ADDC A,B
MOV R5,A ;R5=(R2*R7)高字節(jié)
MOV A,R6
MOV B,R3
MUL AB ;R3*R6
ADD A,R4
XCH A,R6
XCH A,B
ADDC A,R5
MOV R5,A
MOV PSW.5,C ;存CY
MOV A,R2
MUL AB ;R2*R6
ADD A,R5
MOV R5,A
CLR A
MOV ACC.0,C
MOV C,PSW.5 ;加上次加法的進(jìn)位
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -