单片机的两位计数器
;运行结果:数码管从00一直加到99
;ANL 0FH就是把数据与00001111相与那么遇1得原来的数遇0则为0,结果是前面的4位变0, 后面的4位保留
;P2.1 , P2.2分别是数码管控制位.CLR 则点亮
ORG 0000H;程序开始
LJMP MAIN;
ORG 030H;
MAIN:MOV 20H,#00H;20H单元送00
MOV A,20H;
GOON:CLR C;进位CY置0这里的作用是当数字超过9要求进位时屏蔽进位, 意思永不进位
ANL A,#0FH;屏蔽A中的高4位
MOV DPTR,#TAB;查表
MOVC A,@A+DPTR;
PP:CLR P2.2;打开个位数码管
MOV P0,A;输出到P0
ACALL DEL;延时以便观察结果
SETB P2.2;关断显示
MOV A,20H;20H再送A
SWAP A;交换A的高低4位
ANL A,#0FH;屏蔽A中的高4位
MOVC A,@A+DPTR;查表
CLR P2.1;打开十位数码管
MOV P0,A;输出到P0
ACALL DEL ;延时
SETB P2.1 ;关断显示
MOV A,20H;20H送A
INC A; 加1
DA A;2-10进制调整
MOV 20H,A;调整后送20H
AJMP GOON;重新开始
DEL:MOV R7,#0FFH;延时子程序
DEL1:MOV R6,#01FH;
DEL2:MOV R5,#01FH;
DEL3: DJNZ R5,DEL3;
DJNZ R6,DEL2;
DJNZ R7,DEL1;
RET;
ORG 0100H;从100H开始存放数据表0,1,2,3,4,5,6,7,8,9
TAB: db 28h,7eh,0a2h,62h,74h,61h,21h,7ah,20h,60h
;0 1 2 3 4 5 6 7 8 9
END
程序在倚天版运行的状态瞬间第一个数码管显示2
程序在倚天版运行的状态瞬间第数码管显示34
评论