USB总线接口芯片CH371及其应用
;CH371_PAGE EQU 00H;CH371所在的页面地址,地址译码后自动片选
;CH371_SYSTEM EQU 02H;CH371系统功能设定寄存器的地址偏移
;CH371_CONFIG EQU 02H;CH371设备配置信息寄存器的地址偏移
;CH371_INT_SET EQU 06H;CH371中断数据设定寄存器的地址偏移
;CH371_STATUS EQU 06H;CH371传输状态信息寄存器的地址偏移
;CH371_LENGTH EQU 07H;CH371数据长度寄存器的地址偏移
;CH371_BUFFER EQU 08H;CH371O数据缓冲区的起始地址偏移
;SAVE_STATUS DATA 29H;保存传输状态信息,根据需要可选
;SAVE_LENGTH DATA 2AH;当前数据缓冲区中的长度,用于保存下传长度
;SAVE_BUFFER DATA 30H;数据缓冲区,用于保存接收到的下传数据
;* * * * * * * * * * * * * * * * * * * * *
;初始化子程序
;USE:ACC,DPTR
CH371_INIT:MOV DPH,#CH371_PAGE
;CH371所在的页面地址,地址译码后自动片选MOV DPL,#CH371_LENGTH;CH371数据长度寄存器的地址偏移
图3
MOV A,#OFH
MOVX @DPTR,A;置上传数据长度寄存器为15,暂时没有数据上传
CLR A;尚未有数据下传
MOV SAVE_LENGTH,A;保存下传数据长度
SETB ITO;置外部信号为下降沿触发
CLR IEO;清中断标志
SETB PXO;置高优先级
SETB EXO;允许中断
RET
;上传数据子程序
;ENTRY:RO指向存放了准备上传数据的缓冲区,R7准备上传的数据长度0至8
;USE:ACC,B,R0,R7,DPTR
CH371_UPLOAD:MOV B,R7;将数据长度暂存到B中
MOV DPH,#CH371_PAGE;CH371所在的页面地址,地址译码后自动片选
MOV DPL,#CH371_BUFFER;CH371数据缓冲区的起始地址偏移
MOV A,R7;上传数据长度
JZ CH371_UPLOAD_O;数据长度为0则不必写入
CH371_UPLOAD_1:MOV A,@RO;读取一字节的数据
INC RO;指向下一个数据的地址
MOVX @DPTR,A;写
《USB总线接口芯片CH371及其应用(第3页)》