⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch372

📁 汇编程序
💻
字号:
※ [原创]CH372汇编程序   
DEF_USBCMD_RST        EQU    05H
DEF_USBCMD_CHKEXT     EQU    06H
DEF_USBCMD_SETID      EQU    12H
DEF_USBCMD_SETMOD     EQU    15H
DEF_USBCMD_SETENDP6   EQU    1cH
DEF_USBCMD_SETENDP7   EQU    1dH
DEF_USBCMD_UNLOCK     EQU    23H
DEF_USBCMD_GETSTA     EQU    22H
DEF_USBCMD_RD         EQU    28H 
DEF_USBCMD_WR7        EQU    2bH  
DEF_USBCMD_WR5        EQU    2aH 
DEF_USBCMD_ENTSLE     EQU    03H
DEF_USBCMD_GETVER     EQU    01H
DEF_USBCMD_CHKSUP     EQU    0bH
DEF_USBCMD_RD0        EQU    27H 
DEF_USBCMD_OK         EQU    51H
DEF_USBCMD_ERR        EQU    5fH
; 需要主程序定义的参数
CH375_CMD_PORT EQU    0FEFFH         ;CH375命令口的地址,地址译码后自动片选
CH375_DAT_PORT EQU    0FCFFH         ;CH375命令口的地址,地址译码后自动片选
RC500_CS        BIT    P2.7
CH372_CS        BIT    P2.0

         ORG 0000H
         LJMP MIAN
         ORG 0013H
         LJMP CH372INT1

         ORG 0030H

;此程序用高的(也就是地址大128)RAM来做发送接收缓冲区
MIAN:
         MOV SP,#30H
 SETB EA
 LCALL CH372_INIT

         SJMP $
    
CH372_CMD:
         SETB RC500_CS
 CLR CH372_CS
         MOV DPTR,#CH375_CMD_PORT
 MOVX @DPTR,A
 RET
CH372_DATA:
         SETB RC500_CS
 CLR CH372_CS
         MOV DPTR,#CH375_DAT_PORT
 MOVX @DPTR,A
 RET
CH372_READ:
         CLR CH372_CS
         MOV DPTR,#CH375_DAT_PORT
 MOVX A,@DPTR
 RET
CH372_INIT:
         SETB RC500_CS
 CLR  CH372_CS
 MOV A,#DEF_USBCMD_RST
 LCALL CH372_CMD
 LCALL DEL50MS
 MOV A,#DEF_USBCMD_SETMOD
 LCALL CH372_CMD
 MOV A,#02H
 LCALL CH372_DATA
 LCALL DEL10
    LOOP:LCALL CH372_READ
         ;CJNE A,#DEF_USBCMD_OK,LOOP
 XRL A,#DEF_USBCMD_OK 
 ;CJNE A,#00H,LOOP
 JNZ LOOP
 CLR IE1
         CLR IT1 
         SETB EX1 
 RET
CH372INT1:
         PUSH ACC ;保护现场 
         PUSH PSW 
         PUSH DPL 
         PUSH DPH 
         CLR  EA ;关中断 
 SETB RC500_CS
 CLR  CH372_CS
 MOV A,#DEF_USBCMD_GETSTA
 LCALL CH372_CMD
 LCALL CH372_READ

 CJNE A,#02H,LULI_1
 MOV A,#DEF_USBCMD_RD
 LCALL CH372_CMD
 LCALL CH372_READ
 MOV R2,A
 MOV R3,A
         MOV R0,#80H
    READ:LCALL CH372_READ
         MOV @R0,A
 INC R0
 DJNZ R2,READ
 MOV A,#2BH
 LCALL CH372_CMD

         MOV A,R3
         LCALL CH372_DATA
 MOV R1,#80H
   WRITE:MOV A,@R1
         LCALL CH372_DATA
 INC R1
 DJNZ R3,WRITE
         
  LULI_1:CJNE A,#0AH,LULI_2
         MOV A,#DEF_USBCMD_UNLOCK    
         LCALL CH372_CMD

  LULI_2:MOV A,#DEF_USBCMD_UNLOCK    
         LCALL CH372_CMD
 POP DPH ;恢复现场 
         POP DPL 
         POP PSW 
         POP ACC 
 SETB  EA ;KAI中断 
         RETI 

         
         
;******延时10us子程序:  T=两个机器周期(2*1us)*R5(4)*R6(256)*R7(256)us=0.524288s
DEL10:
         NOP
 NOP
 NOP
 NOP
 NOP
 NOP
 NOP
 NOP
 NOP
 NOP
 NOP
 NOP
 NOP
 NOP
 NOP
 NOP
 RET
DEL100:
         LCALL DEL10
 LCALL DEL10
 LCALL DEL10
 LCALL DEL10
 LCALL DEL10
 LCALL DEL10
 LCALL DEL10
 LCALL DEL10
 LCALL DEL10
 LCALL DEL10
 RET
DEL1MS:
         LCALL DEL100
 LCALL DEL100
 LCALL DEL100
 LCALL DEL100
 LCALL DEL100
 LCALL DEL100
 LCALL DEL100
 LCALL DEL100
 LCALL DEL100
 LCALL DEL100
 RET
DEL10MS:
         LCALL DEL1MS
 LCALL DEL1MS
 LCALL DEL1MS
 LCALL DEL1MS
 LCALL DEL1MS
 LCALL DEL1MS
 LCALL DEL1MS
 LCALL DEL1MS
 LCALL DEL1MS
 LCALL DEL1MS
 RET
DEL50MS: 
         LCALL DEL10MS
 LCALL DEL10MS
 LCALL DEL10MS
 LCALL DEL10MS
 LCALL DEL10MS
 RET
 END
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -