已知图8-16并入串出电路 VRXD VTXD PIOX2分别为P1.0~P1.2 试利用单
问题详情
已知图8-16并入串出电路,VRXD、VTXD、PIOX2分别为P1.0~P1.2,试利用单字节虚拟串行输入子程序VUARTI编制程序,每隔1秒(运用T0中断,fosc=6MHz)从74HC165并行口输入状态数据,并存入内RAM 30H。
参考答案
编程如下:
ORG 0000H ;复位地址
LJMP STAT ;转初始化程序
ORG 000BH ;T0中断入口地址
LJMP IT0 ;转T0中断服务子程序
ORG 0100H ;初始化程序首地址
STAT:MOV TMOD,#01H ;置T0定时器方式1
MOV TH0,#3CH ;置T0定时初值100ms
MOV TL0,#0B0H ;
SETB TR0 ;启动T0
SETB ET0 ;T0开中
SETB EA ;CPU开中
MOV R7,#10 ;置100ms计数器初值
LJMP MAIN ;转执行主程序并等待T0中断
VRXD EQU P1.0 ;伪指令定义VRXD
VTXD EQU P1.1 ;伪指令定义VTXD
PIOX1 EQU P1.2 ;伪指令定义PIOX1
ORG 1000H ;T0中断入口首地址
IT0:MOV TH0,#3CH ;置T0定时初值100ms
MOV TL0,#0B0H ;
DJNZ R7,GRET ;1s未到,转返回
MOV R7,#10 ;1s到,重置100ms计数器初值
PUSH Acc ;保护现场
PUSH PSW ;
LCALL VUARTI ;调用单字节虚拟串行输入子程序
MOV 30H,A ;存状态数据
POP PSW ;恢复现场
PUSH Acc ;
GRET:RETI ;返回