ORG 0100 TABLE: DB 0C0h,0F9H,0A4H,0b0H,99H,92H,82H,0F8H,80H,90H ;表:共阳数码管 0-9 ORG 0000H LJMP MAIN ORG 0200H MAIN: MOV DPTR,#TABLE M1: SETB P3.3 SETB P3.4 ;选择千位数码管 MOV A,#1 ;千位显示1,显示数值可以自己改,0-9 MOVC A,@A+DPTR ;查表输出定义好的数码管段值到P1口,显示相应的0-9 MOV P1,A LCALL DELAY ;延时,停留一会,让人眼感触到它的亮度 MOV P1,#0FFH ;清除数码管显示,因是共阳型,所以不是0 CLR P3.3 ;关闭千位数码管,选择百位数码管 MOV A,#2 ;百位显示2,显示数值可以自己改,0-9 MOVC A,@A+DPTR ;查表输出定义好的数码管段值到P1口,显示相应的0-9 MOV P1,A LCALL DELAY ;延时,停留一会,让人眼感触到它的亮度 MOV P1,#0FFH ;清除数码管显示,因是共阳型,所以不是0 CLR P3.4 SETB P3.3 ;关闭百位数码管,选择十位数码管 MOV A,#3 ;十位显示3,显示数值可以自己改,0-9 MOVC A,@A+DPTR ;查表输出定义好的数码管段值到P1口,显示相应的0-9 MOV P1,A LCALL DELAY ;延时,停留一会,让人眼感触到它的亮度 MOV P1,#0FFH ;清除数码管显示,因是共阳型,所以不是0 CLR P3.3 ;关闭十位数码管;选择个位数码管 MOV A,#4 ;个位显示4 MOVC A,@A+DPTR ;查表输出定义好的数码管段值到P0口,显示相应的0-9 MOV P1,A LCALL DELAY ;延时,停留一会 MOV P1,#0FFH ;清除数码管显示 LJMP M1 ;循环扫描输出,不扫描则不显示或显示不正确,即为动态显示, DELAY: MOV R5,#10 ;此次延时子程序不用很长时间 DJNZ R5,$ RET END
|