单片机实验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