8051单片机典型接口电路——串行扩展静态显现电路如下图所示:
例1:按上图编制显现子程序,显现字段码已别离存在32H~30H内RAM中。
程序1:
DIR2: MOV SCON,#00H ;置串口方法0
CLR ES ;串口禁中
SETB P1.0 ;“与”门开,答应TXD发移位脉冲
MOV SBUF,30H ;串行输出个位显现字段码
JNB TI,$ ;等候串行发送结束
CLR TI ;清串行中止标志
MOV SBUF,31H ;串行输出十位显现字段码
JNB TI,$ ;等候串行发送结束
CLR TI ;清串行中止标志
MOV SBUF,32H ;串行输出百位显现字段码
JNB TI,$ ;等候串行发送结束
CLR TI ;清串行中止标志
CLR P1.0 ;“与”门关,制止TXD发移位脉冲
RET ;
例2:依据上图编写经过串行口和74LS164驱动共阳LED数码管查表显现的子程序。条件:体系有6个LED数码管,待显数据(00H—09H)已放在35H—30H单元中(别离对应十万位→个位)
程序2:
DSPLY:MOV DPTR, #TABLE ;共阳LED数码管译码表首址
MOV R0,#30H ;待显数据缓冲区的个位地址
REDO:MOV A, @R0 ;经过R0完成寄存器直接寻址
MOVC A, @A+DPTR ;查表
MOV SBUF, A ;经串行口发送到74LS164
JNB TI, $ ;查询送完一个字节的第8位?
CLR TI ;为下一字节发送作预备
INC R0 ;R0指向下一个数据缓冲单元
CJNE R0,#36H,REDO ;判别是否发完6个数?
RET ;发完6个数就回来
TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H ;共阳LED译码表
DB 92H, 82H, 0F8H, 80H,90H