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