;========================================; ; DRIVER for SPC KEYMATIC ; ;----------------------------------------; ;File Name : KEYMATIC.INC ; ;Date : 28 Juni 2003 ; ;========================================; K8_Int BIT P1.2 DSEG K8_Command EQU BufferOut0 K8_Mode EQU BufferOut1 K8_Data EQU BufferIn0 K8_Status EQU BufferIn1 CSEG ;-------------------------- ;Keymatic Set Mode Routine ;-------------------------- ;Input : AddressI2C,Mode ;Output : FAck ;-------------------------- K8_SetMode: PUSH ACC MOV K8_Command,#00H ACALL StartCon MOV A,AddressI2C ANL A,#0FEH CLR FAck ACALL MTx JNB FAck,EOK8_SetMode MOV A,K8_Command CLR FAck ACALL MTx JNB FAck,EOK8_SetMode MOV A,K8_Mode CLR FAck ACALL MTx EOK8_SetMode: ACALL StopCon POP ACC RET ;-------------------------- ;Get Data Keymatic Routine ;-------------------------- ;Input : AddressI2C ;Output : K8_Data ;-------------------------- K8_GetData: PUSH ACC MOV K8_Command,#10H ACALL StartCon MOV A,AddressI2C ANL A,#0FEH CLR FAck ACALL MTx JNB FAck,EOK8_GetData MOV A,K8_Command CLR FAck ACALL MTx JNB FAck,EOK8_GetData ACALL StopCon ACALL StartCon MOV A,AddressI2C ORL A,#01H CLR FAck ACALL MTx JNB FAck,EOK8_GetData SETB FLB ACALL MRx MOV K8_Data,A EOK8_GetData: ACALL StopCon ACALL StopCon POP ACC RET ;---------------------------- ;Get Status Keymatic Routine ;---------------------------- ;Input : AddressI2C ;Output : K8_Status ;---------------------------- K8_GetStatus: PUSH ACC MOV K8_Command,#20H ACALL StartCon MOV A,AddressI2C ANL A,#0FEH CLR FAck ACALL MTx JNB FAck,EOK8_GetStatus MOV A,K8_Command CLR FAck ACALL MTx JNB FAck,EOK8_GetStatus ACALL StopCon ACALL StartCon MOV A,AddressI2C ORL A,#01H CLR FAck ACALL MTx JNB FAck,EOK8_GetStatus SETB FLB ACALL MRx MOV K8_Status,A EOK8_GetStatus: ACALL StopCon ACALL StopCon POP ACC RET