www.pudn.com > sd7218av10.zip > SD7218v10.ASM


;=============================================================================== 
;  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