日韩床上生活一级视频|能看毛片的操逼网站|色悠悠网站在线观看视频|国产免费观看A淫色免费|国产av久久久久久久|免费A级视频美女网站黄|国产毛片av日韩小黄片|热久久免费国产视频|中文字幕无码色色|成人在线视频99久久久

機電之家資源網(wǎng)
單片機首頁|單片機基礎(chǔ)|單片機應(yīng)用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
測試實時時鐘s3530
測試實時時鐘s3530
 更新時間:2008-7-26 20:02:58  點擊數(shù):2
【字體: 字體顏色
;===============================================================================;  S3530 VER3.0;    本程序用于測試實時時鐘s3530;    程序功能如下:;    1. 關(guān)閉/INT1及/INT2的中斷輸出;    2. 初始化時間(寫時間數(shù)據(jù));    3. 在BREAKPOINT1設(shè)斷點時,讀時間循環(huán);    4. 全速執(zhí)行時,LED四位分別顯示小時和分鐘的值;;       注: 單片機是AT89C51,外晶振為12Mhz,在興威帆公司的S3530評估板上運行;       Last update:2003/05/13;       本程序僅供參考,如有問題請聯(lián)系:陳工?0755-83246178,83220794,fax:83225561;       13922865036   chendw@whwave.com.cn  http://www.whwave.com.cn;===============================================================================;define the general register;時間寄存器        YEAR    EQU     20H             ;年        MONTH   EQU     21H             ;月        DAY     EQU     22H             ;星期        DATE    EQU     23H             ;日        HOUR    EQU     24H             ;小時        MINUTE  EQU     25H             ;分鐘        SECOND  EQU     26H             ;秒        FLAG    EQU     27H             ;通用標(biāo)志寄存器                                        ;BIT0=1, ACK ERR                                        ;BIT0=0 ,ACK OK;LED顯示寄存器DATA_SEG EQU40H;顯示數(shù)據(jù)寄存器        DIS_REG EQU     41H             ;顯示數(shù)碼位置寄存器:1-4        STACK_A EQU     42H             ;顯示中斷時A的緩存器;單片機與實時時鐘間通信寄存器        TIMETEMP        EQU     2FH     ;時間標(biāo)志寄存器        TIMETX          EQU     47H     ;時間數(shù)據(jù)發(fā)送寄存器        TIMERX          EQU     48H     ;時間數(shù)據(jù)接收寄存器;---------------------------------------------------------------------------;define port bit;各通信口位代號        SDA     EQU     P3.4            ;IIC的SDA口線        SCL     EQU     P3.5            ;IIC的SCL口線;===========================================================================        ORG     0000H                   ;RESET        LJMP    START        ORG     000BH        LJMP    LED_DISPLAY             ;T0中斷入口;---------------------------------------------------------------------------        ORG     0100HSTART:        CLR     A                       ;開始初始化各寄存器        MOV     IE,A                    ;關(guān)中斷        MOV     P1,A        MOV     P2,A                    ;PORT1,PORT2置0        MOV     P3,#0FFH                ;PORT3置1        MOV     SP,#60H                 ;定義堆棧        MOV     TMOD,#01H               ;定時器0為16位定時器,        MOV     TH0,#0F0H               ;中斷周期為4096us        MOV     TL0,#0H                 ;        MOV     DIS_REG,#00H            ;        CLR     FLAG                    ;清除標(biāo)志位        LCALL   LONGDELAY               ;延時300ms        LCALL   LONGDELAY               ;延時300ms        LCALL   TIMESTATUS_INT12        ;設(shè)置S3530時間狀態(tài)寄存器        SETB    EA                      ;開AT89C51中斷        SETB    TR0                     ;T0開始計數(shù)INTI_TIME:MOVYEAR,#02H        ;設(shè)定各時間寄存器初始時間MOVMONTH,#07HMOVDAY,#15HMOVDATE,#01HMOVHOUR,#17HMOVMINUTE,#59HMOVSECOND,#50H        CLR     ET0                     ;關(guān)閉AT89C51的TIME0中斷        LCALL   WRITE_TIME              ;將初始時間值寫入時鐘內(nèi)        SETB    ET0                     ;允許AT89C51的TIME0中斷;-----------------------------------------------------------------GET_TIME:        CLR     ET0                     ;關(guān)閉AT89C51的TIME0中斷        LCALL   READ_TIME               ;讀S3530內(nèi)的實時時鐘數(shù)據(jù)        SETB    ET0                     ;允許AT89C51的TIME0中斷BREAKPOINT1:    NOP                     ;設(shè)斷點        LCALL   LONGDELAY               ;延時300ms,這里可以是你的程序JMPGET_TIME;=======================定時/計數(shù)器中斷子程序==============================;功能:在四位LED上顯示數(shù)據(jù)                                                |;入口:顯示數(shù)據(jù)在DATA1,DATA2,DATA3,DATA4中                             |;出口:NONE                                                               |;影響資源:A,TEMP,P1,P3,PSW                                            |;==========================================================================LED_DISPLAY:        MOV     STACK_A,A        CLR     EA                        ;關(guān)中斷COMPARE:        MOV     A,DIS_REG        CJNE    A,#01H,COM1        JMP     DISBIT1COM1:        CJNE    A,#02H,COM2        JMP     DISBIT2COM2:        CJNE    A,#03H,COM3        JMP     DISBIT3COM3:        MOV     DIS_REG,#00H        JMP     DISBIT4DISBIT1:MOVA,HOURSWAPAANLA,#0FHMOVDATA_SEG,A        MOV     A,#0FFH        MOV     P3,AMOVA,DATA_SEGMOVDPTR,#TABLEMOVCA,@A+DPTR;查表取字型碼MOVP1,ACLRP3.0;顯示第一位數(shù)據(jù)        LJMP    DISENDDISBIT2:        MOVA,HOUR                  ;小時ANLA,#0FHMOVDATA_SEG,A        MOV     A,#0FFH        MOV     P3,AMOVA,DATA_SEGMOVDPTR,#TABLEMOVCA,@A+DPTRMOVP1,A        MOV     C,SECOND.0              ;秒閃爍        MOV     P1.7,CCLRP3.1;顯示第二位數(shù)據(jù)        LJMP    DISENDDISBIT3:MOVA,MINUTESWAPAANLA,#0FHMOV     DATA_SEG,A        MOV     A,#0FFH        MOV     P3,AMOVA,DATA_SEGMOVDPTR,#TABLEMOVCA,@A+DPTRMOVP1,ACLRP3.2;顯示第三位數(shù)據(jù)        LJMP    DISENDDISBIT4:MOVA,MINUTE                ;顯示分鐘ANLA,#0FHMOVDATA_SEG,A        MOV     A,#0FFH        MOV     P3,AMOVA,DATA_SEGMOVDPTR,#TABLEMOVCA,@A+DPTRMOVP1,ACLRP3.3;顯示第四位數(shù)據(jù)DISEND:        INC     DIS_REG        MOVTH0,#0F0H;重裝定時器0初值MOVTL0,#000H               ;        SETB    EA                      ;開中斷        MOV     A,STACK_A        RETITABLE:  DB      0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H        DB      80H,90H,88H,83H,0A7H,0A1H,86H,8EH;==================讀實時時鐘實時數(shù)據(jù)寄存器子程序==========================;功能:從實時時鐘讀入當(dāng)前時間數(shù)據(jù)                                         |;入口:NONE                                                               |;出口:接收數(shù)據(jù)放在年、月、日、星期、時、分、秒各寄存器                   |;影響資源:A,R0,R3,TIMETX,TIMERX,YEAR,MONTH,DAY,WEEK,HOUR,MINUTE,SECOND  |;==========================================================================READ_TIME:LCALLIICSTART        JB      FLAG.1,ERR_IICSTOP      ;如SDA線被箝位為低電平則退出MOVTIMETX,#65H             ;發(fā)送讀時鐘數(shù)據(jù)命令LCALLSENDH_L        JB      FLAG.0,ERR_IICSTOP      ;ACK信號不正常則退出.MOVR0,#YEARMOVR3,#07HRDTIME1:LCALLRXL_HMOVA,TIMERXMOV@R0,AINCR0 DJNZR3,RDTIME2              ;讀完一個字節(jié)數(shù)據(jù)后確認數(shù)據(jù)傳輸        JMP     RDTIME3                 ;若為最后一個字節(jié)數(shù)據(jù)則為NOACKRDTIME2:        CALL    ACK        JMP     RDTIME1RDTIME3:        CALL    NOACK        LCALL   IICSTOP        CLR     HOUR.7                  ;小時的最高位在24小時制時沒有用,如果是12小時制請刪掉此行.        CLR     SECOND.7                ;秒的最高位屏蔽為0RDTIME_RET:        RETERR_IICSTOP:        LCALL   IICSTOP        RET;======================寫實時時鐘內(nèi)部實時數(shù)據(jù)寄存器程序=====================;功能:將設(shè)定年、月、日、星期、時、分、秒數(shù)據(jù)寫入實時時鐘                  |;入口:發(fā)送數(shù)據(jù)放在年、月、日、星期、時、分、秒各寄存器                   |;出口:NONE                                                               |;影響資源:A,R0,R1,TXBUF,YEAR,MONTH,DATE,DAY,HOUR,MINUTE,SECOND        |;==========================================================================WRITE_TIME:LCALLIICSTART        JNB     FLAG.1,TIME_WRITE_1        LJMP    ERR_IICSTOP             ;SDA線被箝位為低電平則退出TIME_WRITE_1:MOVTIMETX,#64H;發(fā)送寫實時數(shù)據(jù)1命令,#64HLCALLSENDH_L        JNB     FLAG.0,TIME_WRITE_2        LJMP    ERR_IICSTOP             ;ACK信號不正常則退出?TIME_WRITE_2:MOVR0,#YEARMOVR1,#07HWRTIME1:MOVA,@R0MOVTIMETX,ALCALLSENDL_HINCR0DJNZR1,WRTIME1LCALLIICSTOPRET;============================ACK===========================================;功能:延時         肟冢篘ONE             出口:NONE                     |;影響資源:                                                               |;==========================================================================ACK:    CLR      TIMETEMP.1        LCALL    BITOUT        RET;============================ACK===========================================;功能:延時         入口:NONE             出口:NONE                     |;影響資源:                                                               |;==========================================================================NOACK:  SETB     TIMETEMP.1        LCALL    BITOUT        RET;===============================保存錯誤代碼===============================;功能:保存MCU與IIC接口通信時的錯誤狀態(tài)                                   |;入口:TIMETEMP.0=ACK位值?                                               |;出口:FLAG.0 =錯誤代碼                                                   |;==========================================================================ACK_ERR:        JNB     TIMETEMP.0,ACK_ERR_RET  ;檢查ACK信號是否正常        SETB    FLAG.0                  ;置ACK出錯標(biāo)志位ACK_ERR_RET:        RET;===============================啟用IIC總線================================;功能:開啟實時時鐘的IIC總線;入口:NONE       出口:NONE;影響資源:NONE;==========================================================================IICSTART:        CLR     FLAG.1SETBSDASETBSCLLCALLDELAY        JB      SDA,IIC_SDAHI        SETB    FLAG.1IIC_SDAHI:CLRSDA        LCALL   DELAYCLRSCL        LCALL    DELAY        RET;===============================關(guān)閉IIC總線================================;功能:關(guān)閉實時時鐘IIC總線;入口:NONE       出口:NONE;影響資源:NONE;==========================================================================IICSTOP:CLRSDASETBSCLLCALLDELAYSETBSDALCALLDELAYRET;============================發(fā)送一個字節(jié),由高位到低位發(fā)送================;功能:從MCU發(fā)送一個字節(jié)給實時時鐘,由高位到低位發(fā)送                        |;入口:發(fā)送數(shù)據(jù)放在TIMETX          出口:NONE                              |;影響資源:A,R2,TIMETX                                                   |;==========================================================================SENDH_L:MOVA,TIMETXMOVR2,#08H        CLR     FLAG.0SENDH_L1:        MOVC,ACC.7        MOVTIMETEMP.1,CLCALLBITOUTRLADJNZR2,SENDH_L1        LCALL   BITIN        LCALL   ACK_ERR        RET;==========================發(fā)送一個字節(jié),由低位到高位發(fā)送==================;功能:從MCU發(fā)送一個字節(jié)給實時時鐘,由低位到高位發(fā)送                        |;入口:發(fā)送數(shù)據(jù)放在TIMETX          出口:NONE                              |;影響資源:A,R2,TIMETX                                                   |;==========================================================================SENDL_H:MOVA,TIMETXMOVR2,#08H        CLR     FLAG.0SENDL_H1:        MOVC,ACC.0        MOVTIMETEMP.1,C        LCALLBITOUTRRADJNZR2,SENDL_H1        LCALL   BITIN        LCALL   ACK_ERRRET;=================================接收一個字節(jié)=============================;功能:MCU從IIC總線接收一個字節(jié),MSB在前,LSB在后                           |;入口:NONE          出口:接收數(shù)據(jù)放在RXBUF中                            |;影響資源:A,R2,TIMEBIT,RXBUF                                          |;==========================================================================RXH_L:MOVR2,#08HRXH_L1: LCALLBITIN        MOVC,TIMETEMP.0        MOVACC.7,CRLCADJNZR2,RXH_L1        MOV     TIMERX,A        RET;=================================接收一個字節(jié)=============================;功能:MCU從IIC總線接收一個字節(jié),LSB在前,MSB在后                           |;入口:NONE          出口:接收數(shù)據(jù)放在RXBUF中                            |;影響資源:A,R2,TIMEBIT,RXBUF                                          |;==========================================================================RXL_H:MOVR2,#08HRXL_H1: LCALLBITIN        MOVC,TIMETEMP.0RRCADJNZR2,RXL_H1        MOV     TIMERX,A        RET;================================送出一位數(shù)================================;功能:從MCU發(fā)送一位數(shù)給實時時鐘                                          |;入口:發(fā)送位數(shù)放在EEPREM.1       出口:NONE                              |;影響資源:A,TIMETEMP                                                    |;==========================================================================BITOUT:        MOVC,TIMETEMP.1MOVSDA,CLCALLDELAYSETBSCLLCALLDELAYCLRSCL        LCALL   DELAYRET;=================================讀入一位數(shù)===============================;功能:MCU從實時時鐘接收一位數(shù)                                            |;入口:NONE       出口:接收位數(shù)放在TIMETEMP.0                            |;影響資源:A,TIMETEMP                                                    |;==========================================================================BITIN:        SETBSDA        SETB    SCLLCALLDELAYMOVC,SDA        MOVTIMETEMP.0,CCLRSCL        CLR     SDA        LCALL   DELAYRET;============================短延時子程序==================================;功能:延時         入口:NONE             出口:NONE                     |;影響資源:R7,PSW                                                         |;==========================================================================DELAY:MOVR7,#05HDELAY1:NOPDJNZR7,DELAY1RETLONGDELAY:                     ;DELAY 300MS        MOV     R6,#240LD0:    MOV     R7,#250        ;5*250*240LD1:    NOP        NOP        NOP        DJNZ    R7,LD1        DJNZ    R6,LD0        RET;============================寫狀態(tài)寄存器程序==============================;功能:讀/寫實時時鐘狀態(tài)寄存器,對其進行設(shè)置                              |;入口:NONE           出口:NONE                                          |;影響資源: A,TIMETX                                                     |;==========================================================================TIMESTATUS_INT12:        LCALL   IICSTART        JNB     FLAG.1,TIME_SETMODE_1        LJMP    ERR_IICSTOP             ;SDA線被箝位為低電平則退出TIME_SETMODE_1:MOVTIMETX,#62H             ;發(fā)送寫時鐘狀態(tài)寄存器命令LCALLSENDH_L        JNB     FLAG.0,TIME_SETMODE_2        LJMP    ERR_IICSTOP             ;ACK信號不正常則退出?TIME_SETMODE_2:MOVTIMETX,#40H             ;24小時進制,LCALLSENDL_H        ;關(guān)閉/INT1及/INT2腳的輸出        LCALL   IICSTOP                 ;        RET        END
  • 上一篇: C51語言應(yīng)用編程的若干問題
  • 下一篇: 測試72段LCD驅(qū)動器SD0418
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術(shù)支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設(shè)備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負責(zé)信息內(nèi)容的真實性、準(zhǔn)確性和合法性。
    機電之家對此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請聯(lián)系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學(xué)會
    中國行業(yè)電子商務(wù)100強網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1