东华理工大学单片机实验程序.docx

上传人:b****6 文档编号:4577885 上传时间:2022-12-06 格式:DOCX 页数:17 大小:18.33KB
下载 相关 举报
东华理工大学单片机实验程序.docx_第1页
第1页 / 共17页
东华理工大学单片机实验程序.docx_第2页
第2页 / 共17页
东华理工大学单片机实验程序.docx_第3页
第3页 / 共17页
东华理工大学单片机实验程序.docx_第4页
第4页 / 共17页
东华理工大学单片机实验程序.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

东华理工大学单片机实验程序.docx

《东华理工大学单片机实验程序.docx》由会员分享,可在线阅读,更多相关《东华理工大学单片机实验程序.docx(17页珍藏版)》请在冰豆网上搜索。

东华理工大学单片机实验程序.docx

东华理工大学单片机实验程序

实验一:

片内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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1