汇编语言编程实例---串行控制七段数码管

时间:2021-11-05 01:27:32
 

串行控制七段数码管  ORG	00H                           START:MOV	30H,#1	; 低位七段数码管DS0显示数据MOV	31H,#5	; 高位七段数码管DS1显示数据MOV     	R0,#30H	; R0=30HMOV     	R1,#40H	; R1=40HMOV     	R2,#2	; R2=2DP10:   MOV      DPTR,#TABLE   	; 装表MOV     	A,@R0	; 将R0所指的数据载入AMOVC    	A,@A+DPTR      	; 取表MOV     	@R1,A	; 把数据暂时保存在R1所指的地址中INC	R1	; R1自增1INC	R0	; R0自增1DJNZ	R2,DP10	; 如果R2不等于0,说明没有取完两个段码,跳回DP10循环MOV     	R0,#40H       	; R0=40H,指向刚才保存段码的空间MOV     	R1,#2          	; R1=2,段码共有2个字节数DP11:   MOV     	R2,#8          	; R2=8,每位显示数据共有8个段码,R2作计数器 MOV     	A,@R0         	; 把R0指向的段码数据载入ADP12:   RLC	A              	; 段码数据向左移动一位MOV	P2.0,C          	; 串行输出一位段码数据CLR	P2.1            	; 发送位移脉冲SETB	P2.1	; 形成上升沿DJNZ	R2,DP12	; 判断是否输出8位段码INC	R0	; R0自增1DJNZ	R1,DP11	; 判断是否输出两个显示数据JMP	$ TABLE:	;七段数码管显示数据表(段码)DB	40H,79H,24H,30H,19H ;0,1,2,3,4DB	12H,02H,78H,00H,10H ;5,6,7,8,9END