单片机实验.docx
- 文档编号:18266991
- 上传时间:2023-08-14
- 格式:DOCX
- 页数:26
- 大小:182.47KB
单片机实验.docx
《单片机实验.docx》由会员分享,可在线阅读,更多相关《单片机实验.docx(26页珍藏版)》请在冰点文库上搜索。
单片机实验
实验一数据传送实验
实验内容:
将8031内部RAM40H—4FH单元置初值A0H—AFH,然后将片内RAM40H—4FH单元中的数据传送到片外RAM9800H—980FH单元,再从片外RAM9800H—980FH单元中的数据传送到片内RAM50H—5FH单元。
将程序经模拟调试通过后,运行程序,检查相应的存储单元的内容。
源程序清单:
ORG0000H
RESET:
SJMPMAIN
ORG003FH
MAIN:
MOVR1,#40H
MOVR2,#10H
MOVA,#0A0H
A1:
MOV@R0,A
INCR0
INCA
DJNZR2,A1
MOVR0,#40H
MOVDPTR,#9800H
MOVR2,#10H
A2:
MOVA,@R0
MOVX@DPTR,A
INCR0
INCDPTR
DJNZR2,A2
MOVR0,#50H
MOVDPTR,#9800H
MOVR2,#10H
A3:
MOVXA,@DPTR
MOV@R0,A
INCR
INCDPTR
DJNZR2,A3
LJMP0000H
END
思考题:
1.按照实验内容补全程序。
2.CPU对8031内部RAM存储器和外部RAM存储器各有哪些寻址方式?
内部RAM存储器寻址方式:
直接寻址方式
寄存器间接寻址
基址变址寄存器间接寻址
外部RAM存储器寻址方式:
寄存器间接寻址
基址变址寄存器间接寻址
3.执行程序后下列各单元的内容是什么?
内部RAM40H~4FH_________________________
内部RAM50H~5FH__________________________
外部RAM9800H~980FH______________________
截图:
实验二多字节十进制加法实验
实验内容:
多字节十进制加法。
加数首地址由R0指出,被加数和结果的存储单元首地址由R1指出,字节数由R2指出。
将程序经模拟调试通过后,运行程序,检查相应的存储单元的内容。
源程序清单:
ORG0000H
RESET:
AJMPMAIN
ORG0100H
MAIN:
MOVSP,#60H
MOVR0,#31H
MOV@R0,#22H
DECR0
MOV@R0,#33H
MOVR1,#21H
MOV@R1,#44H
DECR1
MOV@R1,#55H
MOVR2,#02H
ACALLDACN
HERE:
AJMPHERE
DACN:
CLRC
DAL:
MOVA,@R0
ADDCA,@R1
DAA
MOV@R1,A
INCR0
INCR1
DJNZR2,DAL
CLRA
MOVACC.0,C
RET
思考题:
1.按照实验内容补全程序。
2.加数单元、被加数单元和结果单元的地址和内容为?
加数单元地址是(30H)=33H,(31H)=22H;
被加数单元的地址是(20H)=55H,(21H)=44H;
结果的地址是(20H)=88H,(21H)=66H;
3.如何检查双字节相加的最高位溢出?
无符号数运算时,判断运算结果是否超出范围(0~255H),看进位标志位Cy。
若Cy=1,表示结果超出255,若Cy=0,表示运算结果在范围内;
带符号数运算时,判断运算结果是否超出范围(-128~+127),看溢出标志位OV,
若OV=1,表示溢出,若OV=0,表示无溢出。
4.改变加数和被加数,测试程序的执行结果。
改变加数被加数后源代码:
ORG0000H
RESET:
AJMPMAIN
ORG0100H
MAIN:
MOVSP,#60H
MOVR0,#31H
MOV@R0,#22H
DECR0
MOV@R0,#33H
MOVR1,#21H
MOV@R1,#55H
DECR1
MOV@R1,#66H
MOVR2,#02H
ACALLDACN
HERE:
AJMPHERE
DACN:
CLRC
DAL:
MOVA,@R0
ADDCA,@R1
DAA
MOV@R1,A
INCR0
INCR1
DJNZR2,DAL
CLRA
MOVACC.0,C
RET
加数单元地址:
31H30H内容:
2233
被加数单元地址:
21H20H内容:
5566
结果单元地址:
21H20H内容:
7799
截图:
实验三数据排序实验
实验内容:
将内部RAM50H—59H中的数据按从小到大的次序排列。
将程序经模拟调试通过后,运行程序,检查相应的存储单元的数据是否为排序状态。
源程序清单:
ORG0000H
RESET:
AJMPMAIN
ORG0100H
MAIN:
MOVSP,#60H
MOVR0,#50H
MOV@R0,#6FH
INCR0
MOV@R0,#6EH
INCR0
MOV@R0,#6AH
INCR0
MOV@R0,#6CH
INCR0
MOV@R0,#6DH
INCR0
MOV@R0,#5BH
INCR0
MOV@R0,#67H
INCR0
MOV@R0,#69H
INCR0
MOV@R0,#68H
INCR0
MOV@R0,#64H
ACALLQUE
HERE:
AJMPHERE
QUE:
CLR00H
MOVR7,09H
MOVR0,#50H
MOVA,@R0
L2:
INCR0
MOVR2,A
SUBBA,@R0
MOVA,R2
JCL1
SETB00H
XCHA,@R0
DECR0
XCHA,@R0
INCR0
L1:
MOVA,@R0
DJNZR7,L2
JB00H,QUE
RET
思考题:
1.按照实验内容补全程序。
2.检查程序执行结果。
5BH64H67H68H69H6AH6CH6DH6EH6FH
3.修改程序,按从大到小次序排序。
从大到小排序源程序清单:
ORG0000H
RESET:
AJMPMAIN
ORG0100H
MAIN:
MOVSP,#60H
MOVR0,#50H
MOV@R0,#6FH
INCR0
MOV@R0,#6EH
INCR0
MOV@R0,#6AH
INCR0
MOV@R0,#6CH
INCR0
MOV@R0,#6DH
INCR0
MOV@R0,#5BH
INCR0
MOV@R0,#67H
INCR0
MOV@R0,#69H
INCR0
MOV@R0,#68H
INCR0
MOV@R0,#64H
ACALLQUE
HERE:
AJMPHERE
QUE:
CLR00H
MOVR7,#09H
MOVR0,#50H
MOVA,@R0
L2:
INCR0
MOVR2,A
SUBBA,@R0
MOVA,R2
JNCL1
SETB00H
XCHA,@R0
DECR0
XCHA,@R0
INCR0
L1:
MOVA,@R0
DJNZR7,L2
JB00H,QUE
RET
截图:
实验四双字节乘法实验
实验内容:
[(R3)(R2)*(R5)(R4)]→R0指出的四个单元。
将程序经模拟调试通过后,运行程序,检查相应的存储单元的内容。
源程序清单:
ORG0000H
RESET:
AJMPMAIN
ORG0100H
MAIN:
OVSP,#60H
MOVR2,#0FFH
MOVR3,#0FH
MOVR4,#0FFH
MOVR5,#0FH
MOVR0,#33H
MOVR7,#04H
ML0:
MOV@R0,#00H
DJNZR7,ML1
ACALLM2
HERE:
AJMPHERE
ML1:
DECR0
AJMPML0
M2:
MOVA,R2
MOVB,R4
MULAB
ACALLADDM
MOVA,R2
MOVB,R5
MULAB
DECR0
ACALLADDM
MOVA,R4
MOVB,R3
MULAB
DECR0
DECR0
ACALLADDM
MOVA,R5
MOVB,R3
MULAB
DECR0
ACALLADDM
RET
ADDM:
ADDA,@R0
MOV@R0,A
MOVA,B
INCR0
ADDCA,@R0
MOV@R0,A
INCR0
MOVA,@R0
ADDCA,#00H
MOV@R0,A
RET
思考题:
1.程序结果存放在哪几个单元中?
答:
30H~33H
2.乘积为多少?
答:
0FFE001H
实验五电子钟实验
实验内容:
熟悉单片机在线仿真调试方法。
将仿真头插入实验板的CPU插座中,再打开电源,输入程序进行调试。
程序运行时,按下S0键,蜂鸣器发出响声,两个数码管开始从零显示时间,定时器定时时间为一分钟,定时时间到,蜂鸣器再次发出响声,重新按下S0键,重复上述过程。
源程序清单:
ORG0000H
START:
AJMPMAIN
ORG000BH
AJMPPIT0
ORG0100H
MAIN:
MOVSP,#60H
MOV50H,#00H
MOV51H,#00H
ACALLDISPLAY
MOVTMOD,#01H
MOVTL0,#0B0H
MOVTL1,#3CH
ACALLKEY
CLRP2.7
ACALLLONGDELAY
SETBP2.7
SETB00H
SETBTR0
SETBEA
SETBET0
MOV30H,#20
ML0:
ACALLDISPLAY
MOVC,00H
JCML0
CLRP2.7
ACALLLONGDELAY
SETBP2.7
AJMPMAIN
PIT0:
PUSHPSW
PUSHACC
SETBPSW.3
MOVTL0,#0B0H
MOVTH0,#3CH
MOVA,30H
DECA
MOV30H,A
JNZRET0
MOV30H,#20
MOVR0,#51H
ACALLDAAD1
MOVA,R2
XRLA,#60H
JNZRET0
ACALLCLR0
CLR00H
RET0:
POPACC
POPPSW
RETI
DAAD1:
MOVA,@R0
DECR0
SWAPA
ORLA,@R0
ADDA,#01H
DAA
MOVR2,A
ANLA,#0FH
MOV@R0,A
MOVA,R2
INCR0
ANLA,#0F0H
SWAPA
MOV@R0,A
RET
CLR0:
CLRA
MOV@R0,A
DECR0
MOV@R0,A
RET
DISPLAY:
MOVA,50H
MOVDPTR,#TABLE
MOVCA,@A+DPTR
MOVP2,A
MOVA,51H
MOVDPTR,#TABLE
MOVCA,@A+DPTR
MOVP0,A
CLRP0.7
LCALLDELAY
RET
KEY:
MOVC,P3.0
JCKEY
ACALLDELAY
KEY1:
MOVC,P3.0
JNCKEY1
ACALLDELAY
RET
DELAY:
MOVR1,#250
LOOP:
DJNZR1,LOOP
RET
LONGDELAY:
MOVA,R0
PUSHACC
MOVA,R1
PUSHACC
MOVR1,#250
LOOP1:
MOVR0,#250
LOOP2:
NOP
NOP
NOP
NOP
NOP
DJNZR0,LOOP2
DJNZR1,LOOP1
POPACC
MOVR1,A
POPACC
MOVR0,A
RET
TABLE:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
思考题:
程序中哪部分为显示程序?
DISPLAY子程序是显示的程序
程序中如何实现一秒钟的定时?
每次T/C0定时50ms。
一共20次。
一共可以定时一分钟
T/C0的工作方式1最长可以定时65.536ms。
小于1钟,所以用上述方法定时1分钟写出各段子程序的作用。
MAIN是主程序,PIT0是中断服务子程序,LONGDELAY和DELAY延时的子程序,ADDA1是非压缩的bcd码和压缩的bcd码的转化
根据实验要求画出电路图。
P3.0
abcdefgh
P2.0
P2.1
P2.2
p2.3
p2.4
p2.5
p2.6
p2.7
abcdefgh
P0.0
P0.1
P0.2
P0.3
P0.4
P0.5
P0.6
P0.7
MCS_51
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 实验