CH375 HOST串口在19200波特率时就不稳定呀,通信时数据丢失或错误。 ch375 晶振12M,8051晶振11.0592M。 设置为9600时没有问题,但为了速度要求,设置为19200时就不对了。初始化都完成不了,什么意思?
程序如下:
MAIN: NOP MOV TCON,#00H MOV SP,#0CFH MOV IE,#098H INIT_COM: MOV SCON,#0D0H ;串口方式1工作,8位数据位,1位停止位,有奇偶校验 ORL PCON,#080H ;SMOD=1,波特率增倍 ORL TMOD,#020H ;波特率设置,fOSC=11.0592MHz,波特率=9600,N=0FDH MOV TH1,#0FAH ;先用CH375的默认波特率进行工作 MOV TL1,#0FAH SETB TR1 ;启动定时器T1
MOV DATAIN_OUT,#CMD_SET_BAUDRATE CALL WRITEADDRESS NOP MOV DATAIN_OUT,#002H ;写入分频系数 CALL WRITEDATA MOV DATAIN_OUT,#0D9H ;写入分频常数 CALL WRITEDATA NOP CLR TR1 MOV TH1,#0FDH ;更改CH375的波特率 MOV TL1,#0FDH SETB TR1 CALL DELAY2 CH375_BAUD_WT: CALL READDATA ;返回操作状态 MOV A,DATAIN_OUT XRL A,#CMD_RET_SUCCESS JNZ CH375_BAUD_WT ;等待操作成功,通常需要等待10uS-20uS
CALL CH375_INIT
。。。。。。。
;********初始化子程序**********
CH375_INIT: MOV DATAIN_OUT,#CMD_RESET_ALL CALL WRITEADDRESS CALL DELAY3 ;测试CH375是否正常工作,可选操作 MOV DATAIN_OUT,#CMD_CHECK_EXIST CALL WRITEADDRESS MOV DATAIN_OUT,#055H ;写入测试数据 CALL WRITEDATA MOV A,DATAIN_OUT CPL A MOV R0,A ;取反数据 CALL READDATA MOV A,DATAIN_OUT ;返回数据应该是测试数据取反 XRL A,R0 JZ CH375_INIT_OK ;测试通过 MOV DATAIN_OUT,#CMD_RESET_ALL MOV R1,#050H ;多次重复发命令 CH375_INIT_HR: CALL WRITEADDRESS DJNZ R1,CH375_INIT_HR MOV R1,#0A0H ;160*256uS=40mS CH375_INIT_D2: CLR A CH375_INIT_D1: DJNZ ACC,CH375_INIT_D1 ;延时1uS DJNZ R1,CH375_INIT_D2 ;延时256uS SJMP CH375_INIT ;再次测试 CH375_INIT_OK: ;设置外部自定义的USB设备VID和PID,可选操作,不执行该命令则使用默认的VID和PID MOV DATAIN_OUT,#CMD_SET_USB_ID CALL WRITEADDRESS MOV DATAIN_OUT,#USB_VENDOR_ID_L CALL WRITEDATA MOV DATAIN_OUT,#USB_VENDOR_ID_H CALL WRITEDATA MOV DATAIN_OUT,#USB_PRODUCT_ID_L CALL WRITEDATA MOV DATAIN_OUT,#USB_PRODUCT_ID_H CALL WRITEDATA MOV DATAIN_OUT,#CMD_SET_USB_MODE CALL WRITEADDRESS MOV DATAIN_OUT,#06H ;设置为使用外部固件的USB设备方式 CALL WRITEDATA NOP NOP CH375_INIT_WT: CALL READDATA ;返回操作状态 MOV A,DATAIN_OUT XRL A,#CMD_RET_SUCCESS JNZ CH375_INIT_WT ;等待操作成功,通常需要等待10uS-20uS RET RET
;*********写指令子程序*********
WRITEADDRESS: SETB TB8 MOV SBUF,DATAIN_OUT JNB TI,$ CLR TI RET
;*********写数据子程序*********
WRITEDATA: CLR TB8 MOV SBUF,DATAIN_OUT JNB TI,$ CLR TI RET
;*********读数据子程序*********
READDATA: JNB RI,$ MOV DATAIN_OUT,SBUF CLR RI RET
[Emot]27[/Emot][Emot]27[/Emot][Emot]27[/Emot][Emot]27[/Emot][Emot]27[/Emot]