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

来源:互联网 发布:软件测试例子 编辑:程序博客网 时间:2024/06/18 08:26

串行控制七段数码管  ORG00H                           START:MOV30H,#1; 低位七段数码管DS0显示数据MOV31H,#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所指的地址中INCR1; R1自增1INCR0; R0自增1DJNZR2,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:   RLCA              ; 段码数据向左移动一位MOVP2.0,C          ; 串行输出一位段码数据CLRP2.1            ; 发送位移脉冲SETBP2.1; 形成上升沿DJNZR2,DP12; 判断是否输出8位段码INCR0; R0自增1DJNZR1,DP11; 判断是否输出两个显示数据JMP$ TABLE:;七段数码管显示数据表(段码)DB40H,79H,24H,30H,19H ;0,1,2,3,4DB12H,02H,78H,00H,10H ;5,6,7,8,9END