实验02_Proteus仿真数码管显示报告

一、原理总结??利用两个寄存器 R4 和 R5 来存储两个数码管的显示数字,R4 用来存储前一个数码管显示数字,而 R5 用来存储后一个数码管显示数字,利用左移操作 RLC 取 A 中首位放入 C 中,然后将 C 输入到数码管中,使用 R0 来控制循环,对于 R4 和 R5 重复上述过程各自重复8次,使得当数码管中每位都有数据时,数码管便会显示,之后使用停顿函数使数码管上数字停留一段时间 。
二、程序分析图示部分:代码部分:    ; Reset Vector        org   0000h        jmp   Start    ;====================================================================    ; CODE SEGMENT    ;====================================================================        org   0100h    TAB : DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H    ;是用来存储0-15这16个数据,之后使用A来寻址    PAUSE: ;停顿函数    ;R1是第一层嵌套循环,R2是第二层嵌套循环,当R2不为0时跳转,为0时不跳转,执行DJNZ R1,D1使得R1- -,当R1不为0时跳转,为0时不跳转 。            MOV R1,#255 ;R1是第一层嵌套循环    D1:MOV R2,#255 ;R2是第二层嵌套循环    D2:DJNZ R2,D2 ;当R2不为0时跳转,为0时不跳转,执行DJNZ R1,D1使得R1- -            DJNZ R1,D1 ;当R1不为0时跳转,为0时不跳转    RET    LED:    ;数码管亮灯函数            MOV R0,#8   ;将8赋值给R0,8位左移            MOV A,R5    ;R5代表右边的LED的数            MOVC A,@A+DPTR  ;A是偏移地址,是从DPTR中寻址    LOOP1:            RLC A       ;A左移,将A中高位放入C中            CLR P1.4    ;传输C到数码管中            MOV P1.5,C            SETB P1.4            DJNZ R0,LOOP1   ;若R0为0,也即是执行完8次循环,不跳转,否则跳转            MOV R0,#8   ;和上面同理            MOV A,R4            MOVC A,@A+DPTR    LOOP2:            RLC A            CLR P1.4            MOV P1.5,C            SETB P1.4            DJNZ R0,LOOP2            MOV R6,#0   ;使用停顿函数,构成3层循环,使停顿时间延迟    S1:LCALL PAUSE            INC R6            CJNE R6,#10,S1  ;循环次数为10次    RET    START:            MOV p0,A    ;将p0置为0,使上面的数码管不显示            MOV DPTR,#TAB   ;将TAB首地址赋给DPTR            MOV R4,#0   ;赋初值为0            MOV R5,#0   ;赋初值为0            JMP XUNHUAN    A1:MOV C,P1.0  ;当开关不闭合时,持续显示一个数字            JC XUNHUAN            MOV C,9     ;当9号接口传输数据时,复位            JC FUWEI            INC R5      ;R5++            CJNE R5,#16,XUNHUAN ;当R5为16时要对R4++,而R5<16时跳转            MOV R5,#0            INC R4            CJNE R4,#16,XUNHUAN ;当R4为16时重新执行START,而R5<16时跳转            JMP FUWEI    XUNHUAN:            LCALL LED            JMP A1    FUWEI:            MOV R4,#0            MOV R5,#0            JMP A1    JMP START    ;====================================================================        END

经验总结扩展阅读