;=============================================================================== ; SD7218M VER1.0 ; ±¾³ÌÐòÓÃÓÚ²âÊÔLEDÏÔʾ/¼üÅÌоƬSD7218µÄ¹¦ÄÜ ; ³ÌÐò¹¦ÄÜÈçÏ£º ; ; ×¢: µ¥Æ¬»úÊÇAT89C51£¬Íâ¾§ÕñΪ12Mhz,ÔÚÐËÍþ·«¹«Ë¾µÄSD7218ÆÀ¹À°åÉÏÔËÐÐ ; Last update:2003/05/09 ; ±¾³ÌÐò½ö¹©²Î¿¼£¬ÈçÓÐÎÊÌâÇëÁªÏµ£º³Â¹¤³ 0755-83246178,83220794,fax:83225561 ; 13922865036 chendw@whwave.com.cn http://www.whwave.com.cn ;=============================================================================== ;define the general register ;LED¼Ä´æÆ÷ DIG1 EQU 20H ;LEDµÚһλ»º³åÆ÷ DIG2 EQU 21H ; DIG3 EQU 22H ; DIG4 EQU 23H ; DIG5 EQU 24H ; DIG6 EQU 25H ; DIG7 EQU 26H ; DIG8 EQU 27H FLAG EQU 28H ;ͨÓñêÖ¾¼Ä´æÆ÷ ;BIT0=1, ACK ERR ;BIT0=0 ,ACK OK YEAR EQU 30H ;Äê MONTH EQU 31H ;Ô DAY EQU 32H ;ÈÕ WEEK EQU 33H ;ÐÇÆÚ HOUR EQU 34H ;Сʱ MINUTE EQU 35H ;·ÖÖÓ SECOND EQU 36H ;Ãë ;µ¥Æ¬»úÓëʵʱʱÖÓ¼äͨÐżĴæÆ÷ TIMETEMP EQU 2EH ;ʱ¼äÊý¾Ý»º´æÆ÷ TIMETX EQU 43H ;ʱ¼äÊý¾Ý·¢ËͼĴæÆ÷ TIMERX EQU 44H ;ʱ¼äÊý¾Ý½ÓÊռĴæÆ÷ ;µ¥Æ¬»úÓëIICͨÐżĴæÆ÷ IICTEMP EQU 2FH ;IIC±êÖ¾¼Ä´æÆ÷ SLAVE_ADD EQU 40H ;SD7218µØÖ·¼Ä´æÆ÷ DATAI1 EQU 41H DATAI2 EQU 42H TXBUF EQU 47H ;IICÊý¾Ý·¢ËͼĴæÆ÷ RXBUF EQU 48H ;IICÊý¾Ý½ÓÊռĴæÆ÷ KEYBUF EQU 49H ;¼üÅÌÊý¾Ý»º³åÆ÷ ;--------------------------------------------------------------------------- ;define port bit ;¸÷ͨÐÅ¿Úλ´úºÅ SDA EQU P2.3 ;IICµÄSDA¿ÚÏß SCL EQU P2.4 ;IICµÄSCL¿ÚÏß KEY EQU P2.5 ;¼üÅÌÖжÏÐźÅÏß T_SDA EQU P1.1 ;sd2000µÄSDA¿ÚÏß T_SCL EQU P1.0 ;sd2000µÄSCL¿ÚÏß ;=========================================================================== ; *** IICÃüÁÒå *** ;=========================================================================== COMMAND_RESET EQU 68H COMMAND_TEST EQU 6AH COMMAND_SHIFT_LEFT EQU 61H COMMAND_SHIFT_RIGHT EQU 62H COMMAND_SHIFT_ROUND_LEFT EQU 63H COMMAND_SHIFT_ROUND_RIGHT EQU 64H COMMAND_UPDATE_DISP_DECODE EQU 40H COMMAND_UPDATE_DISP EQU 50H COMMAND_FLASH_CONTROL EQU 78H COMMAND_HIDE_CONTROL EQU 79H COMMAND_SEGMENT_ON EQU 08H COMMAND_SEGMENT_OFF EQU 09H COMMAND_READ_KEY_VALUE EQU 10H COMMAND_RW_RAM_VALUE EQU 80H COMMAND_LED_HEXS_WR EQU 40H ;=========================================================================== ; *** ³£Êý¶¨Òå *** ;=========================================================================== SLAVE1_RD EQU 57H SLAVE1_WR EQU 56H SLAVE2_RD EQU 51H SLAVE2_WR EQU 50H ;=========================================================================== ORG 0000H ;RESET LJMP START ;--------------------------------------------------------------------------- ORG 0100H START: CLR A ;¿ªÊ¼³õʼ»¯¸÷¼Ä´æÆ÷ MOV IE,A ;¹ØÖÐ¶Ï MOV SP,#60H ;¶¨Òå¶ÑÕ» CLR FLAG ;Çå³ý±ê־λ LCALL INIT_LEDBUF ;³õʼ»¯LEDÊý¾Ý»º³åÆ÷ LED_TIME: MOV SLAVE_ADD,#SLAVE2_WR LCALL WRITE_LED8 ;д8¸ö16½øÖÆÊýÖÁsd7218(ÃüÁî2:¶à×Ö½ÚÏÂÔØÊý¾ÝÇÒÒëÂë) WAIT_KEY: LCALL READ_TIME LCALL BCD_LED NOP SETB KEY NOP JB KEY,LED_TIME ;µÈ´ýSD7218µÄ¼üÅÌÊäÈëÐźŠ;----------------------------------------------------------------- GET_KEY: MOV SLAVE_ADD,#SLAVE1_RD LCALL READ_KEY ;¶ÁSD7218ÄڵļüÖµ MOV A,KEYBUF CJNE A,#31H,SHIFT_ROUND_LEFT_KEY MOV SLAVE_ADD,#SLAVE1_WR MOV DATAI1,#COMMAND_SHIFT_ROUND_RIGHT LCALL WRITE_BYTE SHIFT_ROUND_LEFT_KEY: MOV A,KEYBUF CJNE A,#32H,WAIT_KEY_RELEASE MOV SLAVE_ADD,#SLAVE1_WR MOV DATAI1,#COMMAND_SHIFT_ROUND_LEFT LCALL WRITE_BYTE WAIT_KEY_RELEASE: JNB KEY,WAIT_KEY_RELEASE BREAKPOINT1: NOP ;Éè¶Ïµã JMP WAIT_KEY ;==================¶Á¼üÖµ×Ó³ÌÐò=========================================== ;¹¦ÄÜ£º | ;Èë¿Ú£ºNONE | ;³ö¿Ú£º | ;Ó°Ïì×ÊÔ´£º | ;========================================================================== READ_KEY: LCALL IICSTART JB FLAG.1,ERR_IICSTOP ;ÈçSDAÏß±»óéλΪµÍµçƽÔòÍ˳ö MOV A,SLAVE_ADD MOV TXBUF,A ;ËÍSD7218µØÖ· LCALL SENDH_L JB FLAG.0,ERR_IICSTOP ;ACKÐźŲ»Õý³£ÔòÍ˳ö. MOV TXBUF,#COMMAND_READ_KEY_VALUE LCALL SENDH_L ;ËͶÁ¼üÃüÁî RD_KEY1: LCALL RXH_L MOV A,RXBUF MOV KEYBUF,A RD_KEY2: CALL NOACK LCALL IICSTOP RD_KEY_RET: RET ERR_IICSTOP: LCALL IICSTOP RET ;======================д8¸öLED8Êý¾Ý³ÌÐò==================================== ;¹¦ÄÜ£º | ;Èë¿Ú£º | ;³ö¿Ú£ºNONE | ;Ó°Ïì×ÊÔ´£º | ;=========================================================================== WRITE_LED8: LCALL IICSTART JNB FLAG.1,LED8_WRITE_1 LJMP ERR_IICSTOP ;SDAÏß±»óéλΪµÍµçƽÔòÍ˳ö LED8_WRITE_1: MOV A,SLAVE_ADD MOV TXBUF,A ;ËÍSD7218µØÖ· LCALL SENDH_L JNB FLAG.0,LED8_WRITE_2 LJMP ERR_IICSTOP ;ACKÐźŲ»Õý³£ÔòÍ˳ö´. LED8_WRITE_2: MOV TXBUF,#COMMAND_LED_HEXS_WR LCALL SENDH_L ;ËͶà×Ö½ÚÏÂÔØÊý¾ÝÇÒÒëÂëÃüÁî MOV R0,#DIG1 MOV R1,#08H LED8_WRITE_3: MOV A,@R0 MOV TXBUF,A LCALL SENDH_L INC R0 DJNZ R1,LED8_WRITE_3 LCALL IICSTOP RET ;======================дµ¥¸öBYTEÊý¾Ý³ÌÐò================================= ;¹¦ÄÜ£º | ;Èë¿Ú£º | ;³ö¿Ú£ºNONE | ;Ó°Ïì×ÊÔ´£º | ;========================================================================= WRITE_BYTE: LCALL IICSTART JNB FLAG.1,BYTE_WRITE_1 LJMP ERR_IICSTOP ;SDAÏß±»óéλΪµÍµçƽÔòÍ˳ö BYTE_WRITE_1: MOV A,SLAVE_ADD MOV TXBUF,A ;ËÍSD7218µØÖ· LCALL SENDH_L JNB FLAG.0,BYTE_WRITE_2 LJMP ERR_IICSTOP ;ACKÐźŲ»Õý³£ÔòÍ˳ö´. BYTE_WRITE_2: MOV A,DATAI1 MOV TXBUF,A LCALL SENDH_L ;Ë͵¥×Ö½ÚÃüÁî LCALL IICSTOP RET ;============================ACK=========================================== ;¹¦ÄÜ£ºÑÓʱ Èë¿Ú£ºNONE ³ö¿Ú£ºNONE | ;Ó°Ïì×ÊÔ´£º | ;========================================================================== ACK: CLR IICTEMP.1 LCALL BITOUT RET ;============================ACK=========================================== ;¹¦ÄÜ£ºÑÓʱ Èë¿Ú£ºNONE ³ö¿Ú£ºNONE | ;Ó°Ïì×ÊÔ´£º | ;========================================================================== NOACK: SETB IICTEMP.1 LCALL BITOUT RET ;===============================±£´æ´íÎó´úÂë=============================== ;¹¦ÄÜ£º±£´æMCUÓëIIC½Ó¿ÚͨÐÅʱµÄ´íÎó״̬ | ;Èë¿Ú£ºIICTEMP.0=ACKλֵ½ | ;³ö¿Ú£ºFLAG.0 =´íÎó´úÂë | ;========================================================================== ACK_ERR: JNB IICTEMP.0,ACK_ERR_RET ;¼ì²éACKÐźÅÊÇ·ñÕý³£ SETB FLAG.0 ;ÖÃACK³ö´í±ê־λ ACK_ERR_RET: RET ;===============================ÆôÓÃIIC×ÜÏß================================ ;¹¦ÄÜ£º¿ªÆôʵʱʱÖÓµÄIIC×ÜÏß ;Èë¿Ú£ºNONE ³ö¿Ú£ºNONE ;Ó°Ïì×ÊÔ´£ºNONE ;========================================================================== IICSTART: CLR FLAG.1 SETB SDA SETB SCL LCALL DELAY JB SDA,IIC_SDAHI SETB FLAG.1 IIC_SDAHI: CLR SDA LCALL DELAY CLR SCL LCALL DELAY RET ;===============================¹Ø±ÕIIC×ÜÏß================================ ;¹¦ÄÜ£º¹Ø±ÕʵʱʱÖÓIIC×ÜÏß ;Èë¿Ú£ºNONE ³ö¿Ú£ºNONE ;Ó°Ïì×ÊÔ´£ºNONE ;========================================================================== IICSTOP:CLR SDA SETB SCL LCALL DELAY SETB SDA LCALL DELAY RET ;============================·¢ËÍÒ»¸ö×Ö½Ú£¬Óɸßλµ½µÍλ·¢ËÍ================ ;¹¦ÄÜ£º´ÓMCU·¢ËÍÒ»¸ö×Ö½Ú¸øÊµÊ±Ê±ÖÓ,Óɸßλµ½µÍλ·¢ËÍ | ;Èë¿Ú£º·¢ËÍÊý¾Ý·ÅÔÚTXBUF ³ö¿Ú£ºNONE | ;Ó°Ïì×ÊÔ´£ºA£¬R2£¬TXBUF | ;========================================================================== SENDH_L:MOV A,TXBUF MOV R2,#08H CLR FLAG.0 SENDH_L1: MOV C,ACC.7 MOV IICTEMP.1,C LCALL BITOUT RL A DJNZ R2,SENDH_L1 LCALL BITIN LCALL ACK_ERR RET ;=================================½ÓÊÕÒ»¸ö×Ö½Ú============================= ;¹¦ÄÜ£ºMCU´ÓIIC×ÜÏß½ÓÊÕÒ»¸ö×Ö½Ú,MSBÔÚǰ,LSBÔÚºó | ;Èë¿Ú£ºNONE ³ö¿Ú£º½ÓÊÕÊý¾Ý·ÅÔÚRXBUFÖÐ | ;Ó°Ïì×ÊÔ´£ºA£¬R2£¬TIMEBIT£¬RXBUF | ;========================================================================== RXH_L: MOV R2,#08H RXH_L1: LCALL BITIN MOV C,IICTEMP.0 MOV ACC.7,C RLC A DJNZ R2,RXH_L1 MOV RXBUF ,A RET ;=================================½ÓÊÕÒ»¸ö×Ö½Ú============================= ;¹¦ÄÜ£ºMCU´ÓIIC×ÜÏß½ÓÊÕÒ»¸ö×Ö½Ú,LSBÔÚǰ,MSBÔÚºó | ;Èë¿Ú£ºNONE ³ö¿Ú£º½ÓÊÕÊý¾Ý·ÅÔÚRXBUFÖÐ | ;Ó°Ïì×ÊÔ´£ºA£¬R2£¬TIMEBIT£¬RXBUF | ;========================================================================== RXL_H: MOV R2,#08H RXL_H1: LCALL BITIN MOV C,IICTEMP.0 RRC A DJNZ R2,RXL_H1 MOV RXBUF ,A RET ;================================ËͳöһλÊý================================ ;¹¦ÄÜ£º´ÓMCU·¢ËÍһλÊý¸øÊµÊ±Ê±ÖÓ | ;Èë¿Ú£º·¢ËÍλÊý·ÅÔÚEEPREM.1 ³ö¿Ú£ºNONE | ;Ó°Ïì×ÊÔ´£ºA£¬IICTEMP | ;========================================================================== BITOUT: MOV C,IICTEMP.1 MOV SDA,C LCALL DELAY SETB SCL LCALL DELAY CLR SCL LCALL DELAY RET ;=================================¶ÁÈëһλÊý=============================== ;¹¦ÄÜ£ºMCU´ÓʵʱʱÖÓ½ÓÊÕһλÊý | ;Èë¿Ú£ºNONE ³ö¿Ú£º½ÓÊÕλÊý·ÅÔÚIICTEMP.0 | ;Ó°Ïì×ÊÔ´£ºA£¬IICTEMP | ;========================================================================== BITIN: SETB SDA SETB SCL LCALL DELAY MOV C,SDA MOV IICTEMP.0,C CLR SCL CLR SDA LCALL DELAY RET ;============================¶ÌÑÓʱ×Ó³ÌÐò================================== ;¹¦ÄÜ£ºÑÓʱ Èë¿Ú£ºNONE ³ö¿Ú£ºNONE | ;Ó°Ïì×ÊÔ´£ºR7,PSW | ;========================================================================== DELAY: MOV R7,#15 DELAY1: NOP DJNZ R7,DELAY1 RET LONGDELAY: ;DELAY 300MS MOV R6,#240 LD0: MOV R7,#250 ;5*250*240 LD1: NOP NOP NOP DJNZ R7,LD1 DJNZ R6,LD0 RET ;============================д°ËλLEDÊý¾Ý»º³åÆ÷³ÌÐò======================= ;¹¦ÄÜ£ºÐ´°ËλLEDÊý¾Ý»º³åÆ÷ ò à | ;Èë¿Ú£ºNONE ³ö¿Ú£ºNONE | ;Ó°Ïì×ÊÔ´£º A | ;========================================================================== INIT_LEDBUF: MOV R0,#DIG8 MOV R3,#8 INIT_LEDBUF_LOOP: MOV A,R3 DEC A MOV DPTR,#TABLE MOVC A,@A+DPTR ;²é±íÈ¡LEDÏÔʾÊý¾Ý MOV @R0,A DEC R0 DJNZ R3,INIT_LEDBUF_LOOP ;¸³ÖµÍê°Ë¸öLEDÊý¾Ý? RET TABLE: DB 01H,02H,03H,04H,05H,06H,07H,08H ;==================¶ÁʵʱʱÖÓʵʱÊý¾Ý¼Ä´æÆ÷×Ó³ÌÐò========================== ;¹¦ÄÜ£º´ÓʵʱʱÖÓ¶ÁÈ뵱ǰʱ¼äÊý¾Ý | ;Èë¿Ú£ºNONE | ;³ö¿Ú£º½ÓÊÕÊý¾Ý·ÅÔÚÄê¡¢Ô¡¢ÈÕ¡¢ÐÇÆÚ¡¢Ê±¡¢·Ö¡¢Ãë¸÷¼Ä´æÆ÷ | ;Ó°Ïì×ÊÔ´£ºA£¬R0,R3,TIMETX,TIMERX,YEAR,MONTH,DAY,WEEK,HOUR,MINUTE,SECOND | ;========================================================================== READ_TIME: RDTIME_LOOP: LCALL T_IICSTART JB FLAG.1,T_ERR_IICSTOP ;ÈçSDAÏß±»óéλΪµÍµçƽÔòÍ˳ö MOV TIMETX,#65H ;·¢ËͶÁʱÖÓÊý¾ÝÃüÁî LCALL T_SENDH_L JB FLAG.0,T_ERR_IICSTOP ;ACKÐźŲ»Õý³£ÔòÍ˳ö. MOV R0,#YEAR MOV R3,#07H T_RDTIME1: LCALL T_RXL_H MOV A,TIMERX MOV @R0,A INC R0 DJNZ R3,RDTIME2 ;¶ÁÍêÒ»¸ö×Ö½ÚÊý¾ÝºóÈ·ÈÏÊý¾Ý´«Êä JMP RDTIME3 ;ÈôΪ×îºóÒ»¸ö×Ö½ÚÊý¾ÝÔòΪNOACK RDTIME2: CALL T_ACK JMP T_RDTIME1 RDTIME3: CALL T_NOACK LCALL T_IICSTOP CLR DIG6 ;СʱµÄ×î¸ßλÔÚ24Ð¡Ê±ÖÆÊ±Ã»ÓÐÓÃ,Èç¹ûÊÇ12Ð¡Ê±ÖÆÇëɾµô´ËÐÐ. RDTIME_RET: RET T_ERR_IICSTOP: LCALL T_IICSTOP RET ;============================ACK=========================================== ;¹¦ÄÜ£ºÑÓʱ Èë¿Ú£ºNONE ³ö¿Ú£ºNONE | ;Ó°Ïì×ÊÔ´£º | ;========================================================================== T_ACK: CLR TIMETEMP.1 LCALL T_BITOUT RET ;============================ACK=========================================== ;¹¦ÄÜ£ºÑÓʱ Èë¿Ú£ºNONE ³ö¿Ú£ºNONE | ;Ó°Ïì×ÊÔ´£º | ;========================================================================== T_NOACK: SETB TIMETEMP.1 LCALL T_BITOUT RET ;===============================±£´æ´íÎó´úÂë=============================== ;¹¦ÄÜ£º±£´æMCUÓëIIC½Ó¿ÚͨÐÅʱµÄ´íÎó״̬ | ;Èë¿Ú£ºTIMETEMP.0=ACKÎ»çÆ½ | ;³ö¿Ú£ºFLAG.0 =´íÎó´úÂë | ;========================================================================== T_ACK_ERR: JNB TIMETEMP.0,T_ACK_ERR_RET ;¼ì²éACKÐźÅÊÇ·ñÕý³£ SETB FLAG.0 ;ÖÃACK³ö´í±ê־λ T_ACK_ERR_RET: RET ;===============================ÆôÓÃIIC×ÜÏß================================ ;¹¦ÄÜ£º¿ªÆôʵʱʱÖÓµÄIIC×ÜÏß ;Èë¿Ú£ºNONE ³ö¿Ú£ºNONE ;Ó°Ïì×ÊÔ´£ºNONE ;========================================================================== T_IICSTART: CLR FLAG.1 SETB T_SDA SETB T_SCL LCALL DELAY JB T_SDA,T_IIC_SDAHI SETB FLAG.1 T_IIC_SDAHI: CLR T_SDA LCALL DELAY CLR T_SCL LCALL DELAY RET ;===============================¹Ø±ÕIIC×ÜÏß================================ ;¹¦ÄÜ£º¹Ø±ÕʵʱʱÖÓIIC×ÜÏß ;Èë¿Ú£ºNONE ³ö¿Ú£ºNONE ;Ó°Ïì×ÊÔ´£ºNONE ;========================================================================== T_IICSTOP:CLR T_SDA SETB T_SCL LCALL DELAY SETB T_SDA LCALL DELAY RET ;============================·¢ËÍÒ»¸ö×Ö½Ú£¬Óɸßλµ½µÍλ·¢ËÍ================ ;¹¦ÄÜ£º´ÓMCU·¢ËÍÒ»¸ö×Ö½Ú¸øÊµÊ±Ê±ÖÓ,Óɸßλµ½µÍλ·¢ËÍ | ;Èë¿Ú£º·¢ËÍÊý¾Ý·ÅÔÚTIMETX ³ö¿Ú£ºNONE | ;Ó°Ïì×ÊÔ´£ºA£¬R2£¬TIMETX | ;========================================================================== T_SENDH_L:MOV A,TIMETX MOV R2,#08H CLR FLAG.0 T_SENDH_L1: MOV C,ACC.7 MOV TIMETEMP.1,C LCALL T_BITOUT RL A DJNZ R2,T_SENDH_L1 LCALL T_BITIN LCALL T_ACK_ERR RET ;==========================·¢ËÍÒ»¸ö×Ö½Ú£¬ÓɵÍλµ½¸ßλ·¢ËÍ================== ;¹¦ÄÜ£º´ÓMCU·¢ËÍÒ»¸ö×Ö½Ú¸øÊµÊ±Ê±ÖÓ,ÓɵÍλµ½¸ßλ·¢ËÍ | ;Èë¿Ú£º·¢ËÍÊý¾Ý·ÅÔÚTIMETX ³ö¿Ú£ºNONE | ;Ó°Ïì×ÊÔ´£ºA£¬R2£¬TIMETX | ;========================================================================== T_SENDL_H:MOV A,TIMETX MOV R2,#08H CLR FLAG.0 T_SENDL_H1: MOV C,ACC.0 MOV TIMETEMP.1,C LCALL T_BITOUT RR A DJNZ R2,T_SENDL_H1 LCALL T_BITIN LCALL T_ACK_ERR RET ;=================================½ÓÊÕÒ»¸ö×Ö½Ú============================= ;¹¦ÄÜ£ºMCU´ÓIIC×ÜÏß½ÓÊÕÒ»¸ö×Ö½Ú,MSBÔÚǰ,LSBÔÚºó | ;Èë¿Ú£ºNONE ³ö¿Ú£º½ÓÊÕÊý¾Ý·ÅÔÚRXBUFÖÐ | ;Ó°Ïì×ÊÔ´£ºA£¬R2£¬TIMEBIT£¬RXBUF | ;========================================================================== T_RXH_L:MOV R2,#08H T_RXH_L1: LCALL T_BITIN MOV C,TIMETEMP.0 MOV ACC.7,C RLC A DJNZ R2,T_RXH_L1 MOV TIMERX,A RET ;=================================½ÓÊÕÒ»¸ö×Ö½Ú============================= ;¹¦ÄÜ£ºMCU´ÓIIC×ÜÏß½ÓÊÕÒ»¸ö×Ö½Ú,LSBÔÚǰ,MSBÔÚºó | ;Èë¿Ú£ºNONE ³ö¿Ú£º½ÓÊÕÊý¾Ý·ÅÔÚRXBUFÖÐ | ;Ó°Ïì×ÊÔ´£ºA£¬R2£¬TIMEBIT£¬RXBUF | ;========================================================================== T_RXL_H:MOV R2,#08H T_RXL_H1: LCALL T_BITIN MOV C,TIMETEMP.0 RRC A DJNZ R2,T_RXL_H1 MOV TIMERX,A RET ;================================ËͳöһλÊý================================ ;¹¦ÄÜ£º´ÓMCU·¢ËÍһλÊý¸øÊµÊ±Ê±ÖÓ | ;Èë¿Ú£º·¢ËÍλÊý·ÅÔÚEEPREM.1 ³ö¿Ú£ºNONE | ;Ó°Ïì×ÊÔ´£ºA£¬TIMETEMP | ;========================================================================== T_BITOUT: MOV C,TIMETEMP.1 MOV T_SDA,C LCALL DELAY SETB T_SCL LCALL DELAY CLR T_SCL LCALL DELAY RET ;=================================¶ÁÈëһλÊý=============================== ;¹¦ÄÜ£ºMCU´ÓʵʱʱÖÓ½ÓÊÕһλÊý | ;Èë¿Ú£ºNONE ³ö¿Ú£º½ÓÊÕλÊý·ÅÔÚTIMETEMP.0 | ;Ó°Ïì×ÊÔ´£ºA£¬TIMETEMP | ;========================================================================== T_BITIN: SETB T_SDA SETB T_SCL LCALL DELAY MOV C,T_SDA MOV TIMETEMP.0,C CLR T_SCL CLR T_SDA LCALL DELAY RET BCD_LED: MOV A,DAY SWAP A ANL A,#0FH MOV DIG8,A MOV A,DAY ANL A,#0FH MOV DIG7,A MOV A,HOUR SWAP A ANL A,#0FH MOV DIG6,A MOV A,HOUR ANL A,#0FH MOV DIG5,A MOV A,MINUTE SWAP A ANL A,#0FH MOV DIG4,A MOV A,MINUTE ANL A,#0FH MOV DIG3,A MOV A,SECOND SWAP A ANL A,#0FH MOV DIG2,A MOV A,SECOND ANL A,#0FH MOV DIG1,A RET END