单片机实验-双字节无符号整数乘法程序DUMUL
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机实验
实验一 双字节无符号整数乘法程序DUMUL
被乘数
乘数
积数
(R5)(R4) (R3)(R2) (23H)(22H)(21H)(20H)
FF FF
FF FF
FF
FE
00
01
单片机实验
被乘数
乘数
积数
(R5)(R4) (R3)(R2) (23H)(22H)(21H)(20H)
FF FF
FF FF
单片机实验
;熄灭一秒 LP24: MOV TH1,#0FBH
MOV TL1,#0FBH SETB TR1 SETB P1.0 LP25: MOV TH0,#3CH MOV TL0,#0B0H SETB TR0 LP26: JBC TF0,LP27 SJMP LP26 LP27: CPL P1.7 JBC TF1,LP20 SJMP LP25 END
MOV A, R2 MOV B, R4 ;(R2)×(R4) MUL AB ;积的高位→(B),积的低位→(A) LCALL ADDM ;调将部分积累加到部分积存放单元子程序 MOV A, R2 MOV B, R5 ;(R2)×(R5) MUL AB DEC R0 LCALL ADDM MOV A, R3 MOV B, R4 MUL AB ;(R3)×(R4) DEC R0 DEC R0 LCALL ADDM MOV A, R3 MOV B, R5 MUL AB ;(R3)×(R5) DEC R0 LCALL ADDM 光二极管LED,点亮两秒,熄灭 一秒,周而复始。 2.用T0作为定时器,T1作为T0溢出的计数器,完成延 时2秒和1秒的任务。
晶振6MHz,定时器/计数器0用于100ms定时,在 P1.7产生200ms周期的方波,定时器/计数器1通过P1.7 进行计数。
100ms定时,计数初值3CB0H ORG 0150H SETB P1.0 CLR P1.7 MOV TMOD,#61H 下面程序实现先点亮两秒, 然后熄灭一秒,周而复始。
FF
FE
00
01
实验参考程序:
ORG 0000H
LJMP MAIN
ORG 0400H
MAIN: MOV SP, #60H
MOV R2, #0FFH ; 乘数为FFFFH
MOV R3, #0FFH
MOV R4, #0FFH ; 被乘数为FFFFH
MOV R5, #0FFH
MOV R0, #20H ;置积存放单元的首址
单片机实验
延时子程序LO36: LO36: MOV R7, #00H LO35: DJNZ R7,LO35
DJNZ R6,LO36 RET END
单片机实验
实验三 定时、计数器实验 实验线路:
1.在P1.0引脚接一个发光二极管LED,点亮两秒,熄灭 一秒,周而复始。 2.用T0作为定时器,T1作为T0溢出的计数器,完成延 时2秒和1秒的任务。
单片机实验
2.实验参考程序: ORG 0100H MOV P1, #0FFH MOV P3, #0FFH
LP11: JB P1.7,LP12 MOV A,P3 ORL A,#0C0H MOV P1,A SJMP LP11
LP12: MOV A,#0FEH LP13: MOV P1,A
MOV R6,#00H LCALL LO36 JNB Acc.5, LP11 RL A SJMP LP13
单片机实验
ADDM: ADD A, @R0 ;将部分积累加到部分积存放单元子程序 MOV @R0, A MOV A, B INC R0 ADDC A, @R0 MOV @R0, A INC R0 MOV A, @R0 ADDC A, #00H MOV @R0, A RET END
单片机实验
实验二 彩灯控制器实验 1.实验线路:
单片机实验
;点亮两秒 LP20: MOV TH1,#0F6H
MOV TL1,#0F6H SETB TR1 CLR P1.0 LP21: MOV TH0,#3CH MOV TL0,#0B0H SETB TR0 LP22: JBC TF0,LP23 SJMP LP22 LP23: CPL P1.7 JBC TF1,LP24 SJMP LP21 LP24: ……… ;熄灭一秒
MOV R7, #04H ;积存放单元清0
CLEAR: MOV @R0, #00H
INC R0
DJNZ R7, CLEAR
LCALL DUMUL ;调双字节无符号整数乘法子程序
LOOP: SJMP LOOP
;程序踏步
单片机实验
ORG 0500H DUMUL: MOV R0, #20H ;置积的首址
实验一 双字节无符号整数乘法程序DUMUL
被乘数
乘数
积数
(R5)(R4) (R3)(R2) (23H)(22H)(21H)(20H)
FF FF
FF FF
FF
FE
00
01
单片机实验
被乘数
乘数
积数
(R5)(R4) (R3)(R2) (23H)(22H)(21H)(20H)
FF FF
FF FF
单片机实验
;熄灭一秒 LP24: MOV TH1,#0FBH
MOV TL1,#0FBH SETB TR1 SETB P1.0 LP25: MOV TH0,#3CH MOV TL0,#0B0H SETB TR0 LP26: JBC TF0,LP27 SJMP LP26 LP27: CPL P1.7 JBC TF1,LP20 SJMP LP25 END
MOV A, R2 MOV B, R4 ;(R2)×(R4) MUL AB ;积的高位→(B),积的低位→(A) LCALL ADDM ;调将部分积累加到部分积存放单元子程序 MOV A, R2 MOV B, R5 ;(R2)×(R5) MUL AB DEC R0 LCALL ADDM MOV A, R3 MOV B, R4 MUL AB ;(R3)×(R4) DEC R0 DEC R0 LCALL ADDM MOV A, R3 MOV B, R5 MUL AB ;(R3)×(R5) DEC R0 LCALL ADDM 光二极管LED,点亮两秒,熄灭 一秒,周而复始。 2.用T0作为定时器,T1作为T0溢出的计数器,完成延 时2秒和1秒的任务。
晶振6MHz,定时器/计数器0用于100ms定时,在 P1.7产生200ms周期的方波,定时器/计数器1通过P1.7 进行计数。
100ms定时,计数初值3CB0H ORG 0150H SETB P1.0 CLR P1.7 MOV TMOD,#61H 下面程序实现先点亮两秒, 然后熄灭一秒,周而复始。
FF
FE
00
01
实验参考程序:
ORG 0000H
LJMP MAIN
ORG 0400H
MAIN: MOV SP, #60H
MOV R2, #0FFH ; 乘数为FFFFH
MOV R3, #0FFH
MOV R4, #0FFH ; 被乘数为FFFFH
MOV R5, #0FFH
MOV R0, #20H ;置积存放单元的首址
单片机实验
延时子程序LO36: LO36: MOV R7, #00H LO35: DJNZ R7,LO35
DJNZ R6,LO36 RET END
单片机实验
实验三 定时、计数器实验 实验线路:
1.在P1.0引脚接一个发光二极管LED,点亮两秒,熄灭 一秒,周而复始。 2.用T0作为定时器,T1作为T0溢出的计数器,完成延 时2秒和1秒的任务。
单片机实验
2.实验参考程序: ORG 0100H MOV P1, #0FFH MOV P3, #0FFH
LP11: JB P1.7,LP12 MOV A,P3 ORL A,#0C0H MOV P1,A SJMP LP11
LP12: MOV A,#0FEH LP13: MOV P1,A
MOV R6,#00H LCALL LO36 JNB Acc.5, LP11 RL A SJMP LP13
单片机实验
ADDM: ADD A, @R0 ;将部分积累加到部分积存放单元子程序 MOV @R0, A MOV A, B INC R0 ADDC A, @R0 MOV @R0, A INC R0 MOV A, @R0 ADDC A, #00H MOV @R0, A RET END
单片机实验
实验二 彩灯控制器实验 1.实验线路:
单片机实验
;点亮两秒 LP20: MOV TH1,#0F6H
MOV TL1,#0F6H SETB TR1 CLR P1.0 LP21: MOV TH0,#3CH MOV TL0,#0B0H SETB TR0 LP22: JBC TF0,LP23 SJMP LP22 LP23: CPL P1.7 JBC TF1,LP24 SJMP LP21 LP24: ……… ;熄灭一秒
MOV R7, #04H ;积存放单元清0
CLEAR: MOV @R0, #00H
INC R0
DJNZ R7, CLEAR
LCALL DUMUL ;调双字节无符号整数乘法子程序
LOOP: SJMP LOOP
;程序踏步
单片机实验
ORG 0500H DUMUL: MOV R0, #20H ;置积的首址