串行控制七段数码管 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