【原创】简易数字万用表设计_毕业论文设计 联系客服

发布时间 : 星期日 文章【原创】简易数字万用表设计_毕业论文设计更新完毕开始阅读

DELAY_5ms2: mov R7,#70h ;设置R7初始计数值 DELAY_5ms3: djnz R7,DELAY_5ms3 ;延时时间为 Time=( ( (R7*2)+2+1 )*R6+2+1 )*R5+1 djnz R6,DELAY_5ms2 ; djnz R5,DELAY_5ms1 ; ret

SEGMENT7: DB 3Fh ;7段数码管字符0的abcdefg的值,a在最低位,最高位始终保留为0 DB 06h DB 5Bh DB 4Fh DB 66h DB 6Dh DB 7Dh DB 07h DB 7Fh DB 6Fh DISPLAY: mov DPTR,#0fEffh mov r1,#40h mov A,@r1 movx @DPTR,A setb C mov P1.4,C clr C mov P1.4,C call DELAY_5ms setb C mov P1.4,C inc r1 mov A,@r1 movx @DPTR,A setb C mov P1.5,C clr C mov P1.5,C call DELAY_5ms setb C mov P1.5,C inc r1 mov A,@r1 movx @DPTR,A setb C

;写第一位数码管 ;写第二位数码管 ;写第三位数码管

mov P1.6,C clr C mov P1.6,C call DELAY_5ms setb C mov P1.6,C inc r1 mov A,@r1 ;写第四位数码管 movx @DPTR,A setb C mov P1.7,C clr C mov P1.7,C call DELAY_5ms setb C mov P1.7,C ret

;双字节二进制无符号数乘法

;被乘数在R2(高位)、R3(低位)中,乘数在R6(高位)、R7(低位)中。 ;乘积在R2(高位)、R3、R4、R5(低位)中。 ;用到累加器A,B,PSW,R2~R7。 ;永远不会产生进位。 ;在出口时总是清除C。

;若结果超出2个字节范围则OV=1。 MULD2: MOV A,R3 MOV B,R7 MUL AB MOV R4,B MOV R5,A MOV A,R3 MOV B,R6 MUL AB ADD A,R4 MOV R4,A CLR A ADDC A,B MOV R3,A MOV A,R2 MOV B,R7 MUL AB ADD A,R4

MOV R4,A MOV A,R3 ADDC A,B MOV R3,A CLR A RLC A XCH A,R2 MOV B,R6 MUL AB ADD A,R3 MOV R3,A MOV A,R2 ADDC A,B MOV R2,A ORL A,R3 JZ MULD21 SETB OV RET MULD21: CLR OV RET

;四字节无符号数除法

;R0存放被除数,除数,商数的地址。

;从R0开始的连续四个字节为结果的余数,入口时可以为任意,但在出口时发生变化。 ;其后的连续4个字节在入口时是被除数,出口时是商数。 ;再其后的连续四个字节在入口时是除数,出口时保持不变。 ;用到累加器A,B,PSW,R0~R7。

;如果除数为零,则置OV=1标志,否则清零。 ;在出口时总是清除C。 DIVD4: MOV A,R0 MOV B,A ADD A,#08h MOV R1,A MOV A,#00h ORL A,@R1 INC R1 ORL A,@R1 INC R1 ORL A,@R1 INC R1

ORL A,@R1 JZ DIVD45 MOV R1,B MOV R2,#04h DIVD41: MOV @R1,#00h INC R1 DJNZ MOV DIVD42: MOV MOV MOV ADD MOV CLR C DIVD43: MOV RLC A MOV DEC DJNZ MOV ADD MOV MOV ADD MOV MOV SUBB MOV DEC DEC MOV SUBB MOV DEC DEC MOV SUBB MOV DEC DEC MOV

R2,DIVD41 R3,#20h R2,#08h A,B R0,A A,#07h R1,A A,@R1 @R1,A R1 R2,DIVD43 A,R0 A,#03h R1,A A,R0 A,#0Bh R0,A A,@R1 A,@R0 R4,A R1 R0 A,@R1 A,@R0 R5,A R1 R0 A,@R1 A,@R0 R6,A R1 R0 A,@R1