文档库 最新最全的文档下载
当前位置:文档库 › 单片机 广工实验程序答案

单片机 广工实验程序答案

单片机实验29

2、将两个定时/计数器设定为方式1,分别从P1.1和P1.2发出一个方波,用示波器测量其周期。ORG 0000H

LJMP MAIN

ORG 000BH

CPL P1.1

MOV TH0, #0F8H

MOV TL0, #06H

RETI

ORG 001BH

CPL P1.2

MOV TH1, #0F8H

MOV TL1, #06H

RETI

ORG 1000H

MAIN: MOV TH0, #0F8H

MOV TL0, #06H

MOV TH1, #0F8H

MOV TL1, #06H

MOV TMOD, #11H

MOV TCON, #50H

MOV IE, #8AH

L1: SJMP L1

END

单片机实验28

1、将两个定时/计数器设定为方式0,分别从P1.1和P1.2发出一个方波,用示波器测量其周期。 ORG 0000H

LJMP MAIN

ORG 000BH

CPL P1.1

MOV TH0, #0F8H

MOV TL0, #06H

RETI

ORG 001BH

CPL P1.2

MOV TH1, #0F8H

MOV TL1, #06H

RETI

ORG 1000H

MAIN: MOV TH0, #0F8H

MOV TL0, #06H

MOV TH1, #0F8H

MOV TL1, #06H

MOV TMOD, #00H

MOV TCON, #50H

MOV IE, #8AH

L1: SJMP L1

&n

单片机实验27

该程序将内部RAM 70H到71H中的16个数据按小到大顺序重新排序。实验程序如下:

ORG 0000H

LJMP MAIN

ORG 1000H

MAIN: MOV R2, #70H

MOV R3, #71H

L2: ACALL L1

INC R2

INC R3

CJNE R3, #80H,L2

L3: SJMP L3

NOP

L1: MOV A, R2

MOV R0, A

MOV A, R3

MOV R1, A

MOV A, @R0

L5: CLR C

SUBB A, @R1

MOV A, @R0

JC L4

XCH A, @R1

MOV @R0, A

L4: INC R1

CJNE R1, #80H,L5

&n

单片机实验26

2、将累加器A中存放的两个BGD码拆开,求他们的乘积,并把乘积以压缩的BCD码形式送回A中。参考程序:

ORG 0000H

LJMP MAIN

ORG 1000H

MAIN: MOV A, #23H

MOV B, #10H

DIV AB

MUL AB

MOV B, #0AH

DIV AB

SWAP A

ORL A, B

L1: SJMP L1

END

实验步骤:

(1)输入程序检查无错误,经汇编、连接后装入系统。

(2)在100E处设段点。

(3)GB=0000↙,运行程序。

(4)用R↙命令查看A中的数应为06(2×3)。

(5)改变A中的数,检查程序的正确性。

单片机实验25

1、将累加器A中的8位二进制转换成3位BCD码格式的十进制。其中,百位数的BCD码放在21H单元中,十位和个位数放在22H 单元中。

参考程序:

ORG 0000H

LJMP MAIN

ORG 1000H

MAIN: MOV A, #0FFH

MOV B, #64H

DIV AB

MOV 21H, A

MOV A, #0AH

XCH A, B

DIV AB

SWAP A

ADD A, B

MOV 22H, A

L1: SJMP L1

END

实验步骤:

(1)输入程序检查无错误,经汇编、连接后装入系统。

(2)在1012处设段点。

(3)GB=0000↙,运行程序。

(4)用R0721↙查看21H单元,应为02,用R0722查看22H 单元,应为55。

(5)改变A中的数,考察程序的正确。

单片机实验24

布尔运算:编程实现X与Y异或运算,设A、B分别存放在00H、01H,结果Z存放在02H。(注意00H、01H、02H是位地址,属于内部RAM 20H的D0、D1、D2)操作前可用R命令给20H单元置入初始值,例如置入01H。实验程序如下:

ORG 0000H

LJMP MAIN

ORG 1000H

MAIN: MOV C, 00H

ANL C, /01H

MOV 02H,C

MOV C, 00H

CPL C

ANL C, 01H

ORL C, 02H

MOV 02H,C

L1: SJMP L1

END

实验步骤:

(1)输入程序检查无错误,经汇编、连接后装入系统。

(2)在100FH处设断点,运行程序(GB=0000↙),在断点处检查结果。

(3)用R0720↙察看02H位中的内容,为01。

(4)按RESET键终止程序的运行,返回监控

单片机实验23

3、双字节除法

实验程序如下:

ORG 0000H

LJMP MAIN

ORG 1000H

MAIN: MOV R4,#78H

MOV R5,#46H

MOV R6,#39H

MOV R7,#64H

ACALL L1

L2: SJMP L2

NOP

L1: CLR A

MOV R2,A

MOV R3,A

MOV R1,#10H

L5: CLR C

MOV A,R5

RLC A

MOV R5,A

MOV A,R4

RLC A

MOV R4,A

MOV A,R3

RLC A

MOV R3,A

单片机实验22

2、双字节乘法。

(1)了解MULAB指令的使用方法。

(2)了解双字节乘法的程序设计方法。

对于双字节乘法首先将双字节分解为(aX256+b)(cX256+d)的形式进行计算,其积依次存放在片RAM 20H开始的连续四个单元,(R2R3)=乘数,(R4R5)=被乘数。运算算法为:

acH acL

adH ad L

bcH bcL

bdH bd L

其中,H和L分别表示积的高8位和低8位,实验程序如下:

ORG 0000H

LJMP MAIN

ORG 1000H

MAIN: MOV R2, #0FH

MOV R3, #0FFH

MOV R4, #0FH

MOV R5, #0FFH

MOV R0, #23H

MOV A, R3

MOV B, R5

MUL AB

MOV @R0, A

&nb

单片机实验21

ORG 0000H

LJMP MAIN

ORG 1000H

MAIN: CLR A

MOV R1, #20H

MOV R2, #10H

L1: MOV @R1, A

INC R1

DJNZ R2, L1

MOV DPTR, #2000H

MOV R2, #08H

L2: CLR A

MOVC A, @A+DPTR

MOV @R1, A

INC DPTR

INC R1

DJNZ R2, L2

L3: SJMP L3

END

4、输入程序后,按F2保存程序(规定扩展名为*.ASM),使用ALT+X返回集成软件环境。

5、按F2,输入源程序名↙(省

单片机实验20

1、多字节十进制加法。

(1)了解DAA指令的使用方法。

(2)掌握子程序的使用方法。

ORG 0000H

LJMP MAIN

ORG 1000H

MAIN: MOV 81H, #50H

MOV R0, #20H

MOV @R0, #45H

INC R0

MOV @R0, #74H

MOV R1, #30H

MOV @R1, #67H

INC R1

MOV @R1, #28H

CLR C

MOV R2, #02H

L2: ACALL L1

DEC R0

DEC R1

DJNZ R2, L2

CLR A

MOV ACC.0, C

NOP

MOV @R0,A

L3:

单片机答案

单片机基础编程题答案:第4章 1、把长度为10H的字符串从内部RAM的输入缓冲区inbuf向设在外部RAM 输出缓冲区outbuf 进行传送,一直进行到遇见回车符CR或整个字符传送完毕。

ORG 0030H

MOV R0,#inbuf

MOV R1,#outbuf

MOV R4,#10H

LOOP:MOV A,@R0;从内部RAM取数

CJNE A,#0DH,LL;是否为回车符CR

SJMP STOP;是转停止传送

LL: MOVX @R1,A;不是则传送到外部RAM

INC R0

INC R1

DJNZ R4,LL;沒传送完则循环

STOP: SJMP $

2、内部RAM从list单元开始存放一正数表,表中之数作无序排列,并以“-1”作结束标志。编程实现在表中找出最小数。ORG 0030H

MOV R0,#list

MOV A,@R0;取第一个正数

LOOP: INC R0;指向下一个正数

MOV 3AH,@R0

CJNE A,3AH,CHK;前一个数与后一个数比较

CHK: JC LOOP1;前一个数小,则转

MOV A,@R0;前一个数大,取后一个数

LOOP1: XCH A,3AH

CJNE A,#0FFH,LOOP

XCH A,3AH;取最小数

MOV 3BH,A

SJMP $

3、求8个数的平均值,这8个数以表格形式存放在从table开始的单元中。

ORG 0030H

MOV R0,#table

MOV R6,#07H

MOV R3,#00H

MOV A,@R0

CLR C

LOOP:INC R0

ADD A,@R0;累加

JNC LOOP1

INC R3

LOOP1: DJNZ R6,LOOP

CLR C

MOV R5,#03H

MOV R2,A

LOOP2: MOV A,R3;除8

RRC A

MOV R3,A

MOV A, R2

RRC A

MOV R2,A

DJNZ R5,LOOP2

4、把一个8位二进制数的各位用ASCII码表示之(亦即为“0”的位用30H表示,为“1”的位用31H表示)。该数存放在内部RAM中byte

相关文档