东华理工大学单片机实验程序.docx
- 文档编号:8934159
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:17
- 大小:18.22KB
东华理工大学单片机实验程序.docx
《东华理工大学单片机实验程序.docx》由会员分享,可在线阅读,更多相关《东华理工大学单片机实验程序.docx(17页珍藏版)》请在冰豆网上搜索。
东华理工大学单片机实验程序
实验一:
片内RAM30H开始的N个字节的内容送到片外RAM2000H开始的单元中,数据块长度存在2F单元中
ORG0000H
SJMPMAIN
ORG0030H
MAIN:
MOVR0,#30H
MOVDPTR,#2000H
LOOP:
MOVA,@R0
MOVX@DPTR,A
INCR0
INCDPTR
DJNZ2FH,LOOP
SJMP$
END
二、编程将片外RAM1000H开始的N个单元的内容送到片外RAM2050H开始的单元,N为数据块的长度,存放在片内RAM2FH单元中
ORG0000H
LJMPMAIN
ORG0030H
MAIN:
MOVDPTR,#1000H
MOVP2,#20H
MOVR0,#50H
LOOP:
MOVXA,@DPTR
MOVX@R0,A
INCDPTR
INCR0
DJNZ2FH,LOOP
SJMP$
END
三、查表程序
X
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Y
0
1
5
15
16
18
19
21
26
33
32
30
13
11
8
ORG0000H
SJMPMAIN
ORG0030H
MAIN:
MOVA,20H
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOV21H,A
SJMP$
TAB:
DB0,1,5,15,16,18,19,21
DB26,33,32,30,13,11,8
END
四、连加程序
MAIN:
MOVR0,#30H
MOVR1,#60H
MOVR2,#30H
ACALLSUM
SJMP$
SUM:
PUSHPSW
MOV@R1,#0
INCR1
MOV@R1,#0
DECR1
LOOP:
MOVA,@R0
ADDA,@R1
MOV@R1,A
INCR1
MOVA,@R1
ADDCA,#0
MOV@R1,A
DECR1
INCR0
DJNZR2,LOOP
POPPSW
RET
END
实验二多字节数乘法和除法
1.编写一个双字节数乘以单字节数的程序,实现(R4)(R3)×(R2)→(R4)(R3)(R2)。
并验证:
BBFFH×BBH,3FFFH×A2H,FFFFH×0AH
MOVA,R3
MOVB,R2
MULAB
MOVR5,A
MOVR6,B
MOVA,R4
MOVB,R2
MULAB
ADDA,R6
MOVR6,A
MOVA,B
ADDCA,#00H
MOVR7,A
RET
END
2.编写一个双字节数除以单字节数的程序,实现(R7)(R6)÷(R5)→(R5)(R6)…(R7)。
并验证:
BBFFH÷BBH,3FFFH÷A2H,FFFFH÷0AH
DIVP:
MOVA,R7
MOVB,R5
DIVAB
MOV30H,A
MOVR7,B
LCALLDIVPI
MOVR5,30H
RET
DIVPI:
MOVR2,#8
LOOP:
CLRC
MOVA,R6
RLCA
MOVR6,A
MOVA,R7
RLCA
MOVR7,A
MOVF0,C
CLRC
SUBBA,R5
ANLC,/F0
JCNEXT
INCR6
MOVR7,A
NEXT:
DJNZR2,LOOP
RET
END
实验三数制转换
1.编写一个双字节二进制数转换成BCD码数的程序。
已知双字节数存放在R3、R2中,转换结果从高位到低位依次放入片内RAM44H~40H单元中。
并验证:
5678H、3A5CH、FF00H的转换结果
BTOBCD:
CLRA
MOV52H,A
MOV51H,A
MOV50H,A
MOVR1,#16
LOOP:
CLRC
MOVA,R6
RLCA
MOVR6,A
MOVA,R7
RLCA
MOVR7,A
MOVA,50H
ADDCA,50H
DAA
MOV50H,A
MOVA,51H
ADDCA,51H
DAA
MOV51H,A
MOVA,52H
ADDCA,52H
DAA
MOV52H,A
DJNZR1,LOOP
SJMP$
END
实验四并行口的应用
P1.4~P1.5接两个按钮开关,P1.0~P1.1接两个发光二极管L1、L2,编写一个程序实现模拟汽车转弯灯控制。
P1.5P1.4
状态
11
L1、L2全灭
10
左转灯闪(L1以1Hz的频率闪烁)
01
右转灯闪(L2以1Hz的频率闪烁)
00
双闪(L1、L2同时以1Hz的频率闪烁)
ORG0000H
SJMPMAIN
ORG0030H
MAIN:
MOVA,P1
SWAPA
ANLA,#03H
CJNEA,#00H,L1
SETBP1.0
CPLP1.1
MOVC,P1.1
MOVP1.0,C
ACALLDEL
SJMPMAIN
L1:
CJNEA,#01H,L2
SETBP1.0
CPLP1.1
ACALLDEL
SJMPMAIN
L2:
CJNEA,#02H,L3
SETBP1.1
CPLP1.0
ACALLDEL
SJMPMAIN
L3:
SETBP1.0
SETBP1.1
SJMPMAIN
DEL:
MOVR7,#5
DEL1:
ACALLDELAY
DJNZR7,DEL1
RET
DELAY:
MOVR2,#200
LOOPS:
MOVB,#248
NOP
DJNZB,$
DJNZR2,LOOPS
RET
END
实验六定时器/计数器及中断的使用
实验电路如右图所示。
要求采用定时器/计数器中断方式编程实现八只发光二极管的如下显示方式:
第一秒L1、L3亮,第二秒L2、L4亮,第三秒L5、L7亮,第四秒L6、L8亮,第五秒L1、L3、L5、L7亮,第六秒L2、L4、L6、L8亮,第七秒全亮,第八秒全灭。
第九秒以后又从头开始,一直循环下去。
ORG0000H
SJMPMAIN
ORG000BH
SJMPTMOO
ORG0030H
MAIN:
MOVTMOD,#01H
MOVTH0,#3CH
MOVTL0,#0B0H
SETBET0
SETBEA
MOVR2,#20
MOVR3,#00
MOVDPTR,#TAB
SETBTR0
SJMP$
TMOO:
MOVTH0,#3CH
MOVTL0,#0B0H
DJNZR2,EXIT
MOVA,R3
MOVCA,@A+DPTR
MOVP1,A
MOVR2,#20
INCR3
CJNER3,#08,EXIT
MOVR3,#00
EXIT:
RETI
TAB:
DB0FAH,0F5H,0AFH,5FH
DB0AAH,55H,00,0FFH
END
实验七静态显示程序
ORG0000H
MOVSCON,#00
MOVDPTR,#TAB
MOVR0,#30H
MOVR7,#02
LOOP:
MOVA,@R0
ANLA,#0FH
MOVCA,@A+DPTR
MOVSBUF,A
JNBTI,$
CLRTI
MOVA,@R0
SWAPA
ANLA,#0FH
MOVCA,@A+DPTR
MOVSBUF,A
JNBTI,$
CLRTI
INCR0
DJNZR7,LOOP
RET
TAB:
DB11H,0D7H,98H,92H
DB56H,32H,30H,97H
DB10H,12H,14H,70H
DB39H,0D0H,38H,3CH
END
静态显示自增一
(1)ORG0000H
SJMPMAIN
ORG000BH
SJMPTMOO
ORG0030H
MAIN:
MOV30H,#34H
MOV31H,#12H
MOVTMOD,#01H
MOVTH0,#3CH
MOVTL0,#0B0H
MOVR2,#020
SETBET0
SETBEA
SETBTR0
SJMP$
TMOO:
MOVTH0,#3CH
MOVTL0,#0B0H
DJNZR2,EXIT
INC30H
MOVA,30H
CJNEA,#00H,TMO1
INC31H
TMO1:
ACALLDIS
EXIT:
RETI
DIS:
MOVSCON,#00
MOVDPTR,#TAB
MOVR0,#30H
MOVR7,#02
LP2:
MOVA,@R0
ANLA,#0FH
MOVCA,@A+DPTR
MOVSBUF,A
JNBTI,$
CLRTI
MOVA,@R0
SWAPA
ANLA,#0FH
MOVCA,@A+DPTR
MOVSBUF,A
JNBTI,$
INCR0
DJNZR7,LP2
RET
TAB:
DB11H,0D7H,98H,92H
DB56H,32H,30H,97H
DB10H,12H,14H,70H
DB39H,0D0H,38H,3CH
END
(2)ORG0000H
SJMPMAIN
ORG000BH
SJMPCTOP
ORG0030H
MAIN:
MOV30H,#21H
MOV31H,#43H
MOV32H,#10
MOVTMOD,#01
MOVTL0,#0B0H
MOVTH0,#3CH
SETBTR0;启动定时器T0
MOVIE,#82H;ET0为1,定时器0允许中断
SJMP$
CTOP:
MOVTL0,#0B0H
MOVTH0,#3CH
DJNZ32H,RET1
MOV32H,#10
INC30H
MOVA,30H
CJNEA,#0,A1
INC31H
A1:
MOVA,30H
ANLA,#0FH
MOV50H,A
MOVA,30H
ANLA,#0F0H
SWAPA
MOV51H,A
MOVA,31H
ANLA,#0FH
MOV52H,A
MOVA,31H
ANLA,#0F0H
SWAPA
MOV53H,A
DISP:
MOVR2,#04
MOVR0,#50H
MOVDPTR,#TAB
LP0:
MOVA,@R0
MOVCA,@A+DPTR
MOVSBUF,A
JNBTI,$
CLRTI
INCR0
DJNZR2,LP0
RET1:
RETI
TAB:
DB11H,0D7H,98H,92H
DB56H,32H,30H,97H
DB10H,12H,14H,70H
DB39H,0D0H,38H,3CH
END
实验八动态显示程序
编写一动态显示程序。
要求:
将片内RAM33H~30H单元中的数显示出来。
ORG0000H
LP3:
MOVR0,#30H
MOVR6,#0DFH
MOVR7,#03
MOVDPTR,#TAB
CLRP2.0
CLRP2.1
LP0:
CLRA
MOVA,@R0
ANLA,#0FH
MOVCA,@A+DPTR
MOVP0,A
SETBP2.0
CLRP2.0MOVP0,#00
MOVA,R6
MOVP0,A
SETBP2.1
CLRP2.1
RRA
MOVR6,A
DEL0:
MOVR5,#250
LP1:
NOP
NOP
DJNZR5,LP1
CLRA
MOVA,@R0
ANLA,#0F0H
SWAPA
MOVCA,@A+DPTR
MOVP0,A
SETBP2.0
CLRP2.0
MOVP0,#00
MOVA,R6
MOVP0,A
SETBP2.1
CLRP2.1
RRA
MOVR6,A
INCR0
DEL1:
MOVR5,#250
LP2:
NOP
NOP
DJNZR5,LP2
DJNZR7,LP0
SJMPLP3
TAB:
DB77H,44H,3EH,6EH,4DH,6BH,7BH,46H,7FH,6FH,5FH,79H,33H,7CH,3BH,1BH
END
实验九键盘显示程序
编写一键盘显示程序。
要求:
对矩阵键盘进行判键,并采用动态显示,将键码按计算器显示模式进行显示。
ORG0000H
KPIN:
MOVP1,#0F0H;行线低4位输出低电平
MOVA,P1;从高4位读取列线值
ANLA,#0F0H;屏蔽低4位获得列线值
MOVB,A;暂存列线值
MOVP1,#0FH;列线高4位输出低电平
MOVA,P1;从低4位读取行线值
ANLA,#0FH;屏蔽高4位获得行线值
ORLA,B;行、列值合并,得到按键特征码
CJNEA,#0FFH,KPIN1;判断有按键否
MOV30H,#0FFH
ACALLDISP
AJMPEXIT;与0FFH相等,无按键,重新扫描
KPIN1:
MOVB,A;有按键,把特征码暂存→B
MOVDPTR,#TABKP;DPTR指向键码表首地址
MOVR3,#0;顺序码初始化
KPIN2:
MOVA,R3;按顺序码查表
MOVCA,@A+DPTR
CJNEA,B,KPIN3;按键特征码与查表特征码比较
MOVA,R3;相等,顺序码有效,得到键码→A
CJNEA,30H,DHJ
SJMPDK
DHJ:
MOV30H,R3
MOV55H,54H
MOV54H,53H
MOV53H,52H
MOV52H,51H
MOV51H,50H
MOV50H,A
DK:
ACALLDISP
AJMPEXIT
KPIN3:
INCR3;不相等,调整顺序码,准备查下一个
CJNEA,#0FFH,KPIN2;是否为表格结束标志
EXIT:
SJMPKPIN;是,重新扫描
DISP:
MOVDPTR,#TAB
MOVR1,#0DFH
MOVR0,#50H
MOVR2,#06
CLRP2.0
CLRP2.1
LOOP:
MOVA,@R0
ANLA,#0FH
MOVCA,@A+DPTR
MOVP0,A
SETBP2.0
NOP
CLRP2.0
LOOP1:
MOVA,R1
MOVP0,A
SETBP2.1
ACALLDEL
CLRP2.1
RRA
MOVR1,A
INCR0
DJNZR2,LOOP
RET
DEL:
MOVR5,#04;延时2ms
LOOP2:
MOVB,#248
NOP
DJNZB,$
DJNZR5,LOOP2
RET
TABKP:
DB0EEH,0DEH,0BEH,7EH,0EDH,0DDH,0BDH,7DH,0EBH
DB0DBH,0BBH,7BH,0E7H,0D7H,0B7H,77H,67H,0FFH
TAB:
DB77H,44H,3EH,6EH,4DH,6BH,7BH,46H,7FH,6FH,5FH
DB79H,33H,7CH,3BH,1BH
END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 东华 理工大学 单片机 实验 程序