/*--------------------------------------------------------------------------------- 93c46 管脚定义 功能 : 管脚定义 入口 : void 出口 : void ---------------------------------------------------------------------------------*/ ioport_93c46 == 0x06 ; DIO at Port port_93c46 == 0x06 ; 93c46 管脚 CS == 0 ; 片选 CLK == 1 ; 时钟CLK DIO == 2 ; 数据IO
HigByte == temp3 LowByte == temp2 Addr == temp4 ;---------------------------------------------------------------------------------- START MACRO bc port_93c46,CLK bs port_93c46,DIO bs port_93c46,CS nop bs port_93c46,CLK ENDM ;---------------------------------------------------------------------------------- STOP MACRO bc port_93c46,CS ENDM ;---------------------------------------------------------------------------------- EWEN MACRO START mov a,@0x30 ; WRITE ENABLE call SendByte STOP ENDM ;---------------------------------------------------------------------------------- EWDS MACRO START mov a,@0x00 ; WRITE DISABLE call SendByte STOP ENDM
/*--------------------------------------------------------------------------------- 写“字”(双字节)到 93c46程序 功能 : 写一个字到93C46,占用2层堆栈,千万注意!!!!!!!!! 入口 : a: 地址 temp2: low bit data temp3: hig bit data 出口 : void ---------------------------------------------------------------------------------*/
WriteWord_93c46: ;--------------------------------- EWEN ;--------------------------------- START mov a,Addr or a,@0x40 ; 01 + addr(6bit) call SendByte ; WRITE COMMAND nop mov a,HigByte call SendByte nop mov a,LowByte call SendByte STOP call delay ;--------------------------------- EWDS ;--------------------------------- ret
;---------------------------------------------------------------------------------- delay: mov a,@0xff mov temp0,a mov a,@15 mov temp1,a delay_loop: djz temp0 jmp delay_loop mov a,@0xff mov temp0,a djz temp1 jmp delay_loop ret
/*--------------------------------------------------------------------------------- 读 93c46 程序 功能 : 读一个字到93C46 入口 : a :地址 出口 : temp1:数据低地址 temp2:数据高地址 ---------------------------------------------------------------------------------*/ ReadWord_93c46: START mov a,Addr or a,@0x80 call SendByte ; 10 + addr(6bit) nop ;------------------------------------- ior ioport_93c46 or a,@(1<<DIO) ; 0x04 iow ioport_93c46 ;------------------------------------- clr LowByte clr HigByte mov Temp0,@16 ; count read_loop: bc port_93c46,CLK nop bs port_93c46,CLK bc psw,c jbc port_93c46,DIO bs psw,c rlc LowByte rlc HigByte djnz Temp0,read_loop ;-------------------------------------- ior ioport_93c46 and a,@~(1<<DIO) ;0xfb iow ioport_93c46 ;-------------------------------------- STOP nop ret
/*--------------------------------------------------------------------------------- 93c46送数据/命令程序 功能 : 送命令或者数据到93C46(单字节数据) 调用格式 mov a,@ call SendByte 或者 call SendByte 入口 : a 出口 : void 局部变量: Temp0,Temp1 ---------------------------------------------------------------------------------*/
SendByte: mov Temp0,a mov Temp1,@8 ; 循环8次 send_loop: bc port_93c46,CLK rlc Temp0 jbs psw,c jmp $+3 bs port_93c46,DIO jmp $+2 bc port_93c46,DIO nop bs port_93c46,CLK nop djnz Temp1,send_loop ret
|