| The Datasheet Archive - 100 Million Datasheets from 7500 Manufacturers. |
Interfacing X9241 XDCPs 8051 Microcontrollers followed "dummy" in
Top Searches for this datasheetX9241 variety different instructions that provide flexibility designer. Additionally, nonvolatile nature device allows stored wiper positions that retrieved after power cycles. following code implements available X9241 instructions using standard bi-directional protocol. Although routines occupy less than bytes program memory, designers won't need implement X9241 instructions shorten code removing unnecessary routines. However, this will necessitate reassembly code. those instructions which program nonvolatile data registers (XFR_WCR, GXFR_WCR, WRITE_DR), acknowledge polling been implemented determine early completion internal write cycle. Although this automatically handled routines, word regarding procedure order. After issuing start condition, master sends slave address receives acknowledge. then issues instruction byte X9241 again receives acknowledge. necessary, transmits data byte receives final acknowledge. master must then initiate stop condition which will cause X9241 begin internal write cycle. X9241 pins high impedance until this internal cycle complete. master begin acknowledge polling successively sending start conditions Interfacing X9241 XDCPs 8051 Microcontrollers followed "dummy" instructions. When X9241 finally answers with acknowledge, internal write cycle been completed master must initiate stop condition. After next start condition, X9241 ready receive further instructions. code listing, assumption made that code would execute upon reset microcontroller. code also loaded into memory, however this changed with assembler directive. simple MAIN program exercise these routines included next page. this listing, commands cause X9241 A3A2A1A0 0000) accessed XDCP rewritten with value (for wiper position #43). Then pulse decrement wiper initiated, causing selected reduced value (for wiper position #28). issuing other commands follows same general procedure. Figure representative hardware connection between X9241 8051 family microcontroller shown. pull-up resistors lines determined total capacitance devices connected bus, which about 18pF this case, however these necessary since port pins 8051 family devices have internal pull-ups. June, 2000 www.xicor.com PSEN Figure Typical connection between 80C31 X9241 (with A3A2A1A0 0000) Code Listing Sample MAIN Code Listing Using Following Interface Routines MAIN: ADDR_BYTE,#01010000b ID,#00001000b COMMAND,#4 DATA_BYTE,#00101011b call INTERPRET ID,#00001000b PULSES,#00001111b COMMAND,#32 call INTERPRET LOAD SLAVE ADDRESS BYTE LOAD BYTE (EEPOT WRITE D5D4D3D2D1D0 101011 RELOAD BYTE (EEPOT PULSES INCREMENT/DECREMENT WIPER Code Listing 80C31 Microcontroller Routines Manipulating X9241 0090 0091 80C31 MICROCONTROLLER ROUTINES MANIPULATING X9241 QUAD XDCP XICOR INC. 1993 TEMP COUNT p1.0 p1.1 80C31 USED 80C31 USED SCRATCH REGISTER LOOP COUNTING REGISTER June, 2000 www.xicor.com 0000 0000 0003 0006 0007 0008 000B 000C 000F 0010 0013 0014 0017 0018 001B 001C 001F 0020 0023 0024 0027 0028 002B PULSES COMMAND ADDR_BYTE DATA_BYTE BITS X###### INSTRUCTION (I.E. 0,4,8,12,16,.) BITS BITS BITS INSERT "JUMP MAIN" INSTRUCTION INTO 80C31 RESET VECTOR POSITION 0000h MAIN RESET VECTOR HANDLER THIS ADDRESS NAME: INTERPRET FUNCTION: DETERMINES WHICH X9241 INSTRUCTION ISSUED, THEN EXECUTES INPUTS: COMMAND OUTPUTS: NONE CALLS: READ WCR, READ_DR, WRITE_WCR, WRITE_DR, XFR_DR, XFR_WCR, GXFR_DR, GXFR_WCR,INC_WIPER AFFECTED: DPTR,A INTERPRET: call call call call call call call call call dptr,#FIRST a,COMMAND @a+dptr READ_WCR WRITE_WCR READ_DR WRITE_DR XFR_DR XFR_WCR GXFR_DR GXFR_WCR INC_WIPER BASE ADDRESS OFFSET JUMP INSTRUCTION HANDLER COMMAND FIRST: COMMAND COMMAND COMMAND COMMAND COMMAND COMMAND COMMAND COMMAND June, 2000 www.xicor.com 002C 002D 002F 0030 FOLLOWING ROUTINES HANDLE EACH X9241 INSTRUCTIONS. THESE CALLED INTERPRET ROUTINE STRAIGHT FORWARD READ_WCR READS RETURNS ITS' VALUE DATA_BYTE WRITE_WCR WRITES VALUE DATA_BYTE READ_DR READS DATA REGISTER RETURNS ITS' VALUE DATA_BYTE WRITE_DR WRITES VALUE DATA_BYTE DATA REGISTER XFR_DR TRANSFERS VALUE DATA REGISTER ITS' XFR_WCR TRANSFERS VALUE ITS' DATA REGISTERS GXFR_DR GLOBAL TRANSFER LIKE DATA REGISTERS THEIR WCRS GXFR_WCR GLOBAL TRANSFER WCRS THEIR LIKE DATA REGISTERS INC_WIPER SINGLE STEP INCREMENT/DECREMENT WIPER POSITION FUNCTION: APPENDS BITS P1,P0,R1,R0 APPROPRIATE INSTRUCTION CODE PASSES INSTRUCTION BYTE INSTRUCTION GENERATOR INPUTS: OUTPUTS: NONE CALLS: INSTR_GEN AFFECTED: ID,A,DPTR READ_WCR: a,ID a,#090h ID,a dptr,#CASE1 BITS APPEND READ_WCR INSTRUCTION CODE SAVE RESULT BASE ADDRESS THIS INSTRUCTION 0033 0036 0037 0038 003A 003B 003E 0041 0042 0043 0045 0046 WRITE_WCR: call call INSTR_GEN a,ID a,#0A0h ID,a dptr,#CASE2 INSTR_GEN a,ID a,#0B0h ID,a dptr,#CASE1 BITS APPEND READ_DR INSTRUCTION CODE SAVE RESULT BASE ADDRESS THIS BITS APPEND WRITE_WCR INSTRUCTION CODE SAVE RESULT BASE ADDRESS THIS INSTRUCTION READ_DR: June, 2000 www.xicor.com 0049 004C 004D 004E 0050 0051 0054 0057 0058 0059 005B 005C 005F 0062 0063 0064 INSTRUCTION call INSTR_GEN a,ID a,#0C0h dptr,#CASE3 WRITE_DR: BITS APPEND WRITE_DR INSTRUCTION CODE SAVE RESULT BASE ADDRESS THIS INSTRUCTION call INSTR_GEN XFR_DR: a,ID a,#0D0h dptr,#CASE4 BITS APPEND XFR_DR INSTRUCTION CODE SAVE RESULT BASE ADDRESS THIS INSTRUCTION XFR_WCR: call INSTR_GEN a,ID a,#0E0h dptr,#CASE5 0066 0067 006A 006D 006E 006F BITS APPEND XFR_WCR INSTRUCTION CODE SAVE RESULT BASE ADDRESS THIS INSTRUCTION GXFR_DR: call INSTR_GEN a,ID a,#010h dptr,#CASE4 0071 0072 0075 0078 0079 007A BITS APPEND GXFR_DR INSTRUCTION CODE SAVE RESULT BASE ADDRESS THIS INSTRUCTION GXFR_WCR: call INSTR_GEN a,ID a,#080h dptr,#CASE5 007C 007D 0080 0083 0084 0085 BITS APPEND GXFR_WCR INSTRUCTION CODE SAVE RESULT BASE ADDRESS THIS INSTRUCTION INC_WIPER: call INSTR_GEN a,ID a,#020h ID,a dptr,#CASE6 0087 0088 008B 008E BITS APPEND INC_WIPER INSTRUCTION CODE SAVE RESULT BASE ADDRESS THIS INSTRUCTION call INSTR_GEN June, 2000 www.xicor.com 008F 0092 0093 0096 0097 009A 009B 009C 009D 009F 00A0 00A1 00A3 00A6 [00A3] 00A8 00AB 00AC 00AF 00B2 00B5 00B8 00B9 00BC 00BF 00C2 00C5 00C8 00CB 00CE NAME: INSTR_GEN (INSTRUCTION GENERATOR) FUNCTION: ISSUES APPROPRIATE PROTOCOL EACH X9241 INSTRUCTION INPUTS: OUTPUTS: DATA_BYTE CALLS: START_COND, STOP_COND, SEND_BYTE, SEND_BIT, GET_BYTE, POLLING AFFECTED: DATA_BYTE,A,COUNT INSTR_GEN: call START_COND a,ADDR_BYTE call SEND_BYTE a,ID call SEND_BYTE CASE6: WIPER_LOOP: call djnz CASE4: CASE2: call call call call call call call call NAME: SEND_BYTE +dptr a,PULSES a,#00111111b COUNT, a,PULSES a,#10000000b ISSUE START CONDITION SEND X9241 ADDRESS BYTE SEND X9241 INSTRUCTION BYTE OFFSET (DON'T NEED OFFSET) JUMP VARIOUS INSTRUCTION CASES BITS BITS SAVE NUMBER PULSES CASE1: CASE3: CASE5: STOP_GEN: BITS SEND_BIT SEND SINGLE PULSE) COUNT,WIPER_LOOP CONTINUE UNTIL PULSES SENT STOP_GEN PROGRAM GETS HERE, THEN IT'S DONE a,DATA_BYTE SEND X9241 DATA BYTE SEND_BYTE STOP_GEN GET_BYTE RECEIVE X9241 DATA BYTE STOP_GEN a,DATA_BYTE SEND X9241 DATA BYTE SEND_BYTE STOP_COND ISSUE STOP CONDITION POLLING BEGIN ACKNOWLEDGE POLLING STOP_GEN STOP_COND ISSUE STOP CONDITION POLLING BEGIN ACKNOWLEDGE POLLING STOP_COND TRANSMISSION OVER! June, 2000 www.xicor.com 00CF 00D1 00D2 00D3 00D5 00D8 00D9 00DA 00DB 00DD 00E0 [00D2] 00E1 00E3 00E5 00E7 00EA [00E7] FUNCTION: SENDS BITS (FROM LSB) READS FROM INPUTS: OUTPUTS: NONE CALLS: SEND_BIT,GET_BIT AFFECTED: COUNT,TEMP,A SEND_BYTE: BIT_LOOP: COUNT,#8 TEMP,a a,TEMP a,#10000000b LOOP REPETITIONS STORE SHIFTED BYTE SHIFT) RETRIEVE LAST SAVED SHIFTED BYTE MASK (MOST SIGNIFICANT BIT) PLACE THIS RETRIEVE LAST SAVED SHIFTED BYTE ROTATE BITS POSITION LEFT STORE THIS UPDATED SHIFTED BYTE NEXT_BIT: call SEND_BIT a,TEMP TEMP,a djnz COUNT,BIT_LOOP call CLOCK WHEN DONE BITS, READ LINE NAME: SEND_BIT FUNCTION: PLACES INITIATES CLOCK PULSE INPUTS: OUTPUTS: NONE CALLS: CLOCK AFFECTED: SEND_BIT: setb SENT_ZERO: call SENT_ZERO CLOCK PULL SHOULD REALLY LOW? NOT, PULL HIGH INITIATE CLOCK PULSE NAME: CLOCK FUNCTION: ISSUES LOW-HIGH-LOW CLOCK PULSE SUFFICIENT DURATION READS DURING HIGH PHASE, JUST CASE IT'S NEEDED INPUTS: NONE OUTPUTS: June, 2000 www.xicor.com 00EB 00EC 00EE 00EF 00F0 00F1 00F3 00F5 00F6 00F8 00FA [00EB] 00FC 00FD [00FA] 00FF 0100 0101 [00E1] 0103 0104 0106 0108 0109 CALLS: NONE AFFECTED: SCL,C CLOCK: setb c,SDA SET-UP PULL HIGH HOLD MOVE INTO CARRY FLAG PULL NAME: GET_BYTE FUNCTION: RECEIVES BITS FROM (MSB LSB) SENDS INPUTS: NONE OUTPUTS: DATA_BYTE CALLS: CLOCK,SEND_BIT AFFECTED: COUNT,SDA,A,DATA_BYTE RECEIVER SHOULDN'T DRIVE COUNT,#8 LOOP COUNTER REPETITIONS GET_LOOP: call CLOCK CLOCK CURRENT RECONSTRUCT BYTE USING LEFT SHIFTS djnz COUNT,GET_LOOP DATA_BYTE,a STORE RETRIEVED BYTE USER (SENDING call END_BIT SEND ACKNOWLEDGE NAME: START_COND (START CONDITION) FUNCTION: ISSUES START CONDITION INPUTS: NONE OUTPUTS: NONE CALLS: NONE AFFECTED: SDA,SCL START_COND: setb setb PULL HIGH ALLOW SET-UP PULL HIGH HOLD GET_BYTE: setb June, 2000 www.xicor.com 010A 010B 010C 010E 010F 0110 0111 0112 0114 0115 0117 0119 011A 011B 011C 011D 011F 0120 0121 [00E1] 0123 PULL (SCL=HIGH) HOLD COMPLETE CLOCK PULSE NAME: STOP_COND (STOP CONDITION) FUNCTION: ISSUES STOP CONDITION INPUTS: NONE OUTPUTS: NONE CALLS: NONE AFFECTED: SDA,SCL STOP_COND: setb setb PULL HOLD PULL HIGH HOLD PULL HIGH (SCL=HIGH) NAME: ACK_SEND (SEND ACKNOWLEDGE) FUNCTION: SENDS ACKNOWLEDGE COMPLETE LINE DATA READS INPUTS: NONE OUTPUTS: NONE CALLS: SEND_BIT AFFECTED: ACK_SEND: call SEND_BIT (SENDING SEND BIT! NAME: POLLING (ACKNOWLEDGE POLLING XFR_WCR, WRITE_DR, GXFR_WCR) FUNCTION: SENDS DUMMY COMMANDS X9241 DURING INTERNAL WRITE CYCLE THAT CYCLE MARKED ACKNOWLEDGE INPUTS: ADDR_BYTE June, 2000 www.xicor.com 0124 [0104] 0126 0127 [00CF] 0129 [0124] 012B 012C OUTPUTS: NONE CALLS: START_COND,SEND_BYTE AFFECTED: POLLING: call START_COND a,ADDR_BYTE call SEND_BYTE POLLING MAIN PROGRAM HERE. MAIN: REESTABLISH PROTOCOL ATTEMPT SEND DUMMY COMMAND C=1, THEN THERE ACKNOWLEDGE AGAIN: ASSEMBLY END, ERRORS:0, LAST CODE ADDRESS:012BH, TOTAL BYTES:299 June, 2000 www.xicor.com Other recent searchesTKDD40A - TKDD40A TKDD40A Datasheet TDA9207 - TDA9207 TDA9207 Datasheet Si7110ADN - Si7110ADN Si7110ADN Datasheet MX29F040 - MX29F040 MX29F040 Datasheet MC33790 - MC33790 MC33790 Datasheet LM118 - LM118 LM118 Datasheet LM218 - LM218 LM218 Datasheet LM318 - LM318 LM318 Datasheet ISD5216 - ISD5216 ISD5216 Datasheet 2SA1879 - 2SA1879 2SA1879 Datasheet
Privacy Policy | Disclaimer |