;*************************************************************************** ;MCS-51 Microcontroller Development Board ;Display Test program ;Circuit Description: 4 digit Common Cathode Display is driving by a 74164 ; DsDat-p1.4;DsClk-p1.5;Gw-p1.0;Sw-p1.1;Bw-p1.2;Qw-p1.3 ;*************************************************************************** xsdat bit p1.4 xsclk bit p1.5 gw bit p1.0 sw bit p1.1 bw bit p1.2 qw bit p1.3 sjgw equ 30h sjsw equ 31h sjbw equ 32h sjqw equ 33h ;-------------------------------- mov sp,#40h mov p1,#0fh mov p0,#55h main : mov sjgw,#4 mov sjsw,#3 mov sjbw,#2 mov sjqw,#1 abc: lcall display ljmp abc ;************************************************************************ ;74164 Display subroutine, use RS1=1,RS0=0 ;--------------------------------------------------------- display: PUSH ACC push psw clr rs1 setb rs0 mov dptr,#xstab mov a,sjgw movc a,@a+dptr acall dsout clr gw acall ds1ms setb gw mov a,sjsw movc a,@a+dptr acall dsout clr sw acall ds1ms setb sw mov a,sjbw movc a,@a+dptr acall dsout clr bw acall ds1ms setb bw mov a,sjqw movc a,@a+dptr acall dsout clr qw acall ds1ms setb qw pop psw POP ACC ret ;---Display output---------- dsout: MOV R0,#8 dSLOOP: RLC A MOV xsdat,C SETB xsclk CLR xsclk DJNZ R0,dSLOOP RET ;---Display delay ---------- ds1ms: mov r1,#10 ds1lo: mov r2,#100 djnz r2,$ djnz r1,ds1lo ret ;************************************************************************ ;Display character (Common Cathode) xstab: DB 3FH,06H,5BH,4FH ;"0","1","2","3" DB 66H,6DH,7DH,07H ;"4","5","6","7" DB 7FH,6FH,77H,7cH ;"8","9","A","B" DB 39H,5eh,79h,71h ;"C","D","E","F" end