MCS51系列单片机实验.docx
- 文档编号:30130593
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:79
- 大小:30.98KB
MCS51系列单片机实验.docx
《MCS51系列单片机实验.docx》由会员分享,可在线阅读,更多相关《MCS51系列单片机实验.docx(79页珍藏版)》请在冰豆网上搜索。
MCS51系列单片机实验
;MCS-51系列单片机实验指导程序清单
;硬件实验十七电子音响的程序请装载music.bin文件
ORG0000H
LJMPCHK00
ORG0003H
LJMPZO00
ORG000BH
LJMPCLOCK;INT_T0
ORG0013H
LJMPPO16
;===============软件实验十电脑时钟(定时器、中断综合实验)=============
ORG0030H
CHK00:
MOVSP,#60H
LCALLLEDP
CHK0:
LCALLLCK0;键扫,显示子程序
LCALLPTDS0;显示缓冲区放数子程序
MOVTMOD,#01H
ORLIE,#82H
MOVTL0,#0B7H
MOVTH0,#3CH;定时中断初始化
MOV23H,#00H
SETBTR0;开定时
LOO5:
LCALLDIS;SSEE;显示
LCALLPTDS0
SJMPLOO5
PTDS0:
MOVR0,#79H
MOVA,22H
ACALLPTDS
MOVA,21H
ACALLPTDS
MOVA,20H
ACALLPTDS
RET
;-------------------
PTDS:
MOVR1,A;拆送显示缓冲区
ACALLPTDS1
MOVA,R1
SWAPA
PTDS1:
ANLA,#0FH
MOV@R0,A
INCR0
RET
CLOCK:
MOVTL0,#0B7H
MOVTH0,#3CH;恢复初值
PUSHPSW
PUSHACC
SETB0D3H;保护
INC23H;0.1秒加1
MOVA,23H
CJNEA,#0AH,DONE;1秒到吗?
MOV23H,#00H;清0.1秒单元
MOVA,22H
INCA;秒加1
DAA
MOV22H,A;十进制调整
CJNEA,#60H,DONE;60秒到吗?
MOV22H,#00H;秒单元清零
MOVA,21H
INCA
DAA;分加1.十进制调整
MOV21H,A
CJNEA,#60H,DONE;60分到吗?
MOV21H,#00H;分单元清零
MOVA,20H
INCA
DAA;时加1.十进制调整
MOV20H,A
CJNEA,#24H,DONE;24小时到吗?
MOV20H,#00H;时单元清零
DONE:
POPACC;退栈
POPPSW
RETI
ORG00D0H
H900:
MOVSP,#53H
MOVDPTR,#0FFE1H
MOVA,#00H
MOVX@DPTR,A;8279方式字写入
MOVA,#32H
MOVX@DPTR,A;分频
MOVA,#0DFH
MOVX@DPTR,A
H901:
MOVXA,@DPTR;清缓冲区
JBACC.7,H901
MOVDPTR,#0FFE0H
MOVA,#0C8H
MOVX@DPTR,A;字形送入
INCDPTR
MOVA,#80H
MOVX@DPTR,A;字位送入.显示P
H902:
MOV30H,#80H
MOV31H,#40H
H903:
MOVDPTR,#0FFE1H
MOVXA,@DPTR
ANLA,#07H
CJNEA,#00H,H904;有键按下吗?
AJMPH903
H904:
MOVDPTR,#0FFE0H
MOVXA,@DPTR
MOVB,A;取出键值
MOVR1,#00H
MOVDPTR,#GOJZ
H905:
MOVA,#00H
MOVCA,@A+DPTR;查键值表是否相同
CJNEA,B,H906
AJMPH907;转数字外处理程序
H906:
INCDPTR;键表地址加1
INCR1;查找次数加1
MOVA,R1
JBACC.4,H908;是功能键吗?
AJMPH905;继续查找
H908:
MOVR1,#00H
MOVDPTR,#GOJZ1
H909:
MOVA,#00H
MOVCA,@A+DPTR;功能键键值取出
CJNEA,B,H90A;键值相等吗?
AJMPH90B;转功能键处理子程序
H90A:
INCDPTR
INCR1
MOVA,R1
JNBACC.2,H909;继续查找
AJMPH900;无键按下返回
H907:
MOVA,30H
MOVDPTR,#0FFE1H;字位送入8297
MOVX@DPTR,A
MOVA,R1
MOVR0,31H
MOV@R0,A
INC31H;字形缓冲区加1
MOVDPTR,#ZOE0
MOVCA,@A+DPTR;取出字形代码
MOVDPTR,#0FFE0H
MOVX@DPTR,A;送入8279显示
INC30H
MOVA,30H;字位加1
CJNEA,#88H,H90C;显示到第八位,从头显示
AJMPH902
H90C:
AJMPH903
H90B:
MOVDPTR,#CKEY3
MOVA,R1
RLA;功能键散转处理
ADDA,R1
JMP@A+DPTR
CKEY3:
LJMPL240
LJMPL241
LJMPL242
GOJZ:
DB0C1H,0C8H,0C9H,0D0H,0D8H,0E0H,0C2H,0CAH,0D1H
DB0D9H,0DAH,0C3H,0CBH,0D2H,0D3H,0DBH
GOJZ1:
DB0E3H,0E2H,0E1H
ZOE0:
DB0CH,9FH,4AH,0BH,99H,29H,28H,8FH,08H,09H,88H
DB38H,6CH,1AH,68H,0E8H
;=======================================================================
org0188h
jmpXB13
;=====================硬件实验四工业顺序控制========================
ORG0190H
PO10:
MOVP1,#7FH
ORLP3,#00H
PO11:
JNBP3.4,PO11;开工吗?
ORLIE,#84H
ORLIP,#01H
MOVPSW,#00H;初始化
MOVSP,#53H
PO12:
MOVP1,#7EH;第一道工序
ACALLPO1B
MOVP1,#7DH;第二道工序
ACALLPO1B
MOVP1,#7BH;第三道工序
ACALLPO1B
MOVP1,#77H;第四道工序
ACALLPO1B
MOVP1,#6FH;第五道工序
ACALLPO1B
MOVP1,#5FH;第六道工序
ACALLPO1B
MOVP1,#0FH;第七道工序
ACALLPO1B
SJMPPO12
PO16:
MOVB,R2;保护现场
PO17:
MOVP1,#7FH;关输出
MOV20H,#0A0H;振荡次数
PO18:
SETBP1.7;振荡
ACALLPO1A;延时
CLRP1.7;停振
ACALLPO1A;延时
DJNZ20H,PO18;不为0转
CLRP1.7
ACALLPO1A;停振
JNBP3.3,PO17;故障消除吗?
MOVR2,B;恢复现场
RETI
PO19:
MOVR2,#10H
ACALLDELY;延时1
RET
PO1A:
MOVR2,#06H
ACALLDELY;延时2
RET
PO1B:
MOVR2,#30H
ACALLDELY;延时3
RET
;---------------------
ORG0213H
DELY:
PUSH02H
DEL2:
PUSH02H
DEL3:
PUSH02H;延时
DEL4:
DJNZR2,DEL4
POP02H
DJNZR2,DEL3
POP02H
DJNZR2,DEL2
POP02H
DJNZR2,DELY
RET
ORG0240H
DOE0:
MOVDPTR,#0FFDBH
MOVA,#88H
MOVX@DPTR,A;8255控制命令送入
MOVDPTR,#0FFDAH
MOVA,#01H;关打印机
MOVX@DPTR,A
DOE1:
MOVXA,@DPTR
JBACC.4,DOE1;打印机忙吗?
MOVDPL,R0
MOVDPH,R1
MOVXA,@DPTR;取数
INCDPTR
MOVR0,DPL
MOVR1,DPH;DPTR加1
MOVDPTR,#0FFD8H
MOVX@DPTR,A;送打印机
MOVDPTR,#0FFDAH
MOVA,#00H
MOVX@DPTR,A
MOVA,#01H
MOVX@DPTR,A;开始打印
DJNZR2,DOE1
DJNZR3,DOE1;字节打完吗?
SJMP$
;=================硬件实验十三微型打印机打印字符/曲线/汉字=============
ORG0280H
D1E0:
MOVSP,#53H
MOVDPTR,#0FFDBH
MOVA,#88H
MOVX@DPTR,A;8255初始化.A.B口输出,.C口输入
ACALLD1E2;打印空格和#号
ACALLD1E3;换行
MOVR6,#0A6H;取代码偏移量
MOVR7,#0DH;13个代码
D1E1:
MOVA,R6
MOVCA,@A+PC;取代码
ACALLD1E4;打印
INCR6
DJNZR7,D1E1;未完继续
ACALLD1E3
ACALLD1E2;再打印一行#和空格
ACALLD1E3
ACALLD1EA;设置行间距子程序
ACALLD1E5;图形打印命令子程序
MOVR6,#68H
ACALLD1E6;取代码偏移量
ACALLD1E5;打印上部图形
MOVR6,#8CH
ACALLD1E6;打印下部图形
ACALLD1E7
ACALLD1E7;回车换行
MOVDPTR,#2000H;曲线数据存放首址
MOVR6,#14H
ACALLD1E8;取曲线数据
MOVR7,#0DH;行数
D1E9:
MOVR6,#09H;列数
ACALLD1E8
DJNZR7,D1E9;取曲线数据
SJMP$
D1E3:
MOVA,#0AH;打完吗?
ACALLD1E4;换行子程序
RET
D1E7:
MOVA,0DH;回车子程序
ACALLD1E4
RET
D1EA:
MOVA,#1BH
ACALLD1E4
MOVA,#31H
ACALLD1E4;ESCIn(n=o)
MOVA,#00H;行间距=0
ACALLD1E4
ACALLD1E3
RET
D1E6:
MOVR7,#24H
D1EB:
MOVA,R6
MOVCA,@A+PC
ACALLD1E4;36个图形代码送打印机
INCR6
DJNZR7,D1EB
ACALLD1E3
RET
D1E8:
MOVA,#1BH
ACALLD1E4
MOVA,#27H
ACALLD1E4;ESC/mn1n2nkCR命令
MOVA,R6
ACALLD1E4;(R6)=m
D1EC:
MOVXA,@DPTR
INCDPTR;(DPTR)=n1n2nk
ACALLD1E4
DJNZR6,D1EC
ACALLD1E7;CR命令
RET
D1E5:
MOVA,#1BH
ACALLD1E4
MOVA,#4BH
ACALLD1E4;ESCKn1n2
MOVA,#24H;图形打印命令
ACALLD1E4
MOVA,#00H
ACALLD1E4
RET
D1E2:
MOVR7,#07H
D1ED:
MOVA,#23H
ACALLD1E4;打印7个#号和空格
MOVA,#20H
ACALLD1E4
DJNZR7,D1ED
RET
D1E4:
PUSHDPH
PUSHDPL
PUSHACC
MOVDPTR,#0FFDAH
D1EE:
MOVXA,@DPTR
JBACC.4,D1EE;打印机忙吗?
POPACC
MOVDPTR,#0FFD8H
MOVX@DPTR,A;送打印机
MOVDPTR,#0FFDBH
MOVA,#00H
MOVX@DPTR,A
MOVA,#01H
MOVX@DPTR,A;产生STB后沿
POPDPL
POPDPH
RET
;----------------------------------------------------
DB23H,20H,39H,34H,8CH,31H,32H,8DH,33H,30H,8EH
DB20H,23H
;#94年12月31日#
DB00H,00H,00H,7FH,3FH,22H,22H,0A2H,0E2H,62H
DB22H,22H,22H,3EH,7FH,20H,00H,00H
;“启”字上部代码
DB00H,00H,00H,00H,20H,21H,27H,3FH,79H,0E1H,0BFH
DB27H,21H,21H,23H,61H,20H,00H
;“东”字上部代码
DB00H,03H,06H,0FCH,0FCH,7FH,3EH,22H,22H,22H,22H
DB22H,22H,3FH,7FH,20H,00H,00H
;“启”字下部代码
DB00H,00H,00H,00H,04H,0CH,0B8H,70H,22H,02H,0FEH
DB0FEH,00H,40H,38H,1EH,08H,00H
;“东”字下部代码
;--------------------------------------------------------------
X3:
MOVR4,A
MOVR0,#50H
MOVA,@R0
MOVR1,A
MOVA,R4
MOV@R1,A
CLRA
POPDPH
POPDPL
MOVCA,@A+DPTR
INCDPTR
CJNEA,01H,X30
decr1
clra
MOVCA,@A+DPTR
X31:
MOV@R0,A
INCDPTR
PUSHDPL
PUSHDPH
RET
X30:
DECR1
MOVA,R1
SJMPX31
;--------------------------
X2:
MOVR6,#50H
X0:
ACALLXLE
JNBACC.5,XX0
DJNZR6,X0
MOVR6,#20H
MOVR0,#50H
MOVA,@R0
MOVR0,A
MOVA,@R0
MOVR7,A
MOVA,#10H
MOV@R0,A
X1:
ACALLXLE
JNBACC.5,XX1
DJNZR6,X1
MOVA,R7
MOV@R0,A
SJMPX2
XX1:
MOVR6,A
MOVA,R7
MOV@R0,A
MOVA,R6
XX0:
RET
XLE:
ACALLDIS
ACALLKEY
MOVR4,A
MOVR1,#48H
MOVA,@R1
MOVR2,A
INCR1
MOVA,@R1
MOVR3,A
MOVA,R4
XRLA,R3
MOVR3,04H
MOVR4,02H
JZX10
MOVR2,#88H
MOVR4,#88H
X10:
DECR4
MOVA,R4
XRLA,#82H
JZX11
MOVA,R4
XRLA,#0EH
JZX11
MOVA,R4
JZX12
MOVR4,#20H
DECR2
SJMPX13
X12:
MOVR4,#0FH
X11:
MOVR2,04H
NOP
NOP
MOVR4,03H
X13:
MOVR1,#48H
MOVA,R2
MOV@R1,A
INCR1
MOVA,R3
MOV@R1,A
MOVA,R4
JBACC.5,X113
JBACC.4,X113
MOVDPTR,#LS3
MOVCA,@A+DPTR
X113:
RET
LS3:
DB07H,04H,08H,05H,09H,06H,0AH
DB0BH,01H,00H,02H,0FH,03H,0EH
DB0CH,0DH
DIS:
PUSHDPH
PUSHDPL
SETBRS1
MOVR0,#7EH
MOVR2,#20H
MOVR3,#00H
MOVDPTR,#LS0
LS2:
MOVA,@R0
MOVCA,@A+DPTR
MOVR1,#0DCH
MOVX@R1,A
MOVA,R2
incR1
MOVX@R1,A
LS1:
DJNZR3,LS1
CLRC
RRCA
MOVR2,A
DECR0
JNZLS2
movx@r0,a
decr0
cpla
movx@r0,a
CLRRS1
POPDPL
POPDPH
RET
LS0:
DB0C0H,0F9H,0A4H,0B0H,99H,92H
DB82H,0F8H,80H,90H,88H,83H,0C6H
DB0A1H,86H,8EH,0FFH,0CH,89H,7FH,0BFH
KEY:
SETBRS1
MOVR2,#0FEH
MOVR3,#08H
MOVR0,#00H
LP1:
MOVR1,#0DDH
MOVA,R2
MOVX@R1,A
RLA
MOVR2,A
incr1
MOVXA,@R1
CPLA
ANLA,#0FH
JNZLP0
INCR0
DJNZR3,LP1
XP33:
MOVA,#20H
XP3:
movr2,a
clra
movr1,#0ddh
movx@r1,a
mova,r2
CLRRS1
RET
LP0:
CPLA
JBACC.0,XP0
MOVA,#00H
SJMPLPP
XP0:
JBACC.1,XP1
MOVA,#08H
SJMPLPP
XP1:
JBACC.2,XP2
MOVA,#10H
SJMPLPP
XP2:
JBACC.3,XP33
MOVA,#18H
LPP:
ADDA,R0
sjmpxp3
;--------------------------------
LEDP:
MOV50H,#7EH
MOVA,#10H
MOVR0,#79H
LEDS:
MOV@R0,A
INCR0
CJNER0,#7EH,LEDS
INCA
MOV@R0,A
RET
;=========硬件实验十八串并转换实验========
TIMEREQU01H
ORG04B6H
JG4B6:
MOVSP,#53H
MOVTMOD,#01H
MOVTL0,#00H
MOVTH0,#4BH
MOVR0,#00H
MOVTIMER,#20H
MOVSCON,#00H
CLRTI
CLRRI
SETBTR0
SETBET0
SETBEA
SJMP$
INT_T0:
PUSHACC
PUSHPSW
CLREA
CLRTR0
MOVTL0,#00H
MOVTH0,#4BH
SETBTR0
DJNZTIMER,EXIT
MOVTIMER,#20H
MOVDPTR,#CDATA
MOVA,R0
MOVCA,@A+DPTR
CLRTI
CPLA
MOVSBUF,A
INCR0
CJNER0,#0AH,EXIT
MOVR0,#00H
EXIT:
SETBEA
POPPSW
POPACC
RETI
CDATA:
DB03H,9FH,25H,0DH,99H,49H,41H,1FH,01H,09H
;===========硬件实验十九数据存贮器扩展实验==========
ORG0510H
JG510:
MOVDPTR,#0000H
MOVR6,#08H
MOVA,#55H
CLRP1.0
RAM1:
MOVR7,#00H
RAM2:
MOVX@DPTR,A
INCDPTR
DJNZR7,RAM2
DJNZR6,RAM1
SETBP1.0
MOVR6,#08H
MOVDPTR,#0000H
RAM3:
MOVR7,#00H
RAM4:
MOVXA,@DPTR
CJNEA,#55H,RAM6
INCDPTR
DJNZR7,RAM4
DJNZR6,RAM3
RAM5:
CLRP1.0
CALLDELAY
SETBP1.0
CALLDELAY
SJMPRAM5
RAM6:
CLRP1.0
SJMP$
DELAY:
MOVR5,#00H
MOVR4,#00H
DELAS:
DJNZR4,$
DJNZR5,DELAS
RET
;=====================硬件实验五8255A.B.C口输出方波====
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MCS51 系列 单片机 实验