<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > stc單片機(jī)1TMCU控制DS1302程序

          stc單片機(jī)1TMCU控制DS1302程序

          作者: 時(shí)間:2013-05-11 來源:網(wǎng)絡(luò) 收藏
          SCLKBITP1.0;時(shí)鐘口P1.0
          IOBITP1.1;數(shù)據(jù)口P1.1

          RSTBITP1.2;片選口P1.2 NOWDATA40H ORG0
          JMPReset ORG100H
          Reset:
          CALLDS1302_Initial;初始化DS1302
          MOV DPTR,#INIT
          CALLDS1302_SetTime;設(shè)置初始時(shí)間
          MOV R0,#NOW
          CALLDS1302_GetTime;讀取當(dāng)前時(shí)間 JMP$ INIT://秒分時(shí)日月星期年
          DB00H,00H,20H,01H,01H,05H,10H
          ;**************************************
          ;延時(shí)X微秒(STC12C5A60S2@12M)
          ;不同的工作環(huán)境,需要調(diào)整此函數(shù)
          ;入口參數(shù):R7
          ;出口參數(shù):無
          ;**************************************
          Delay:;6此延時(shí)函數(shù)是使用1T的指令周期進(jìn)行計(jì)算,與傳統(tǒng)的12T的MCU不同
          NOP;1
          NOP;1
          RET;4
          ;**************************************
          ;從DS1302讀1字節(jié)數(shù)據(jù)
          ;入口參數(shù):無
          ;出口參數(shù):ACC
          ;**************************************
          DS1302_ReadByte:
          CLRA
          PUSH0
          MOV 0,#8;8位計(jì)數(shù)器
          ReadNext:
          CLRSCLK;時(shí)鐘線拉低
          CALLDelay;延時(shí)等待
          MOV C,IO;讀取數(shù)據(jù)
          RRCA;保存數(shù)據(jù)
          SETBSCLK;時(shí)鐘線拉高
          CALLDelay;延時(shí)等待
          DJNZ0,ReadNext
          POP0
          RET ;**************************************
          ;向DS1302寫1字節(jié)數(shù)據(jù)
          ;入口參數(shù):ACC
          ;出口參數(shù):無
          ;**************************************
          DS1302_WriteByte:
          PUSH0
          MOV 0,#8;8位計(jì)數(shù)器
          WriteNext:
          CLRSCLK;時(shí)鐘線拉低
          CALLDelay;延時(shí)等待
          RRCA;移出數(shù)據(jù)
          MOV IO,C;送出到端口
          SETBSCLK;時(shí)鐘線拉高
          CALLDelay;延時(shí)等待
          DJNZ0,WriteNext
          POP0
          RET ;**************************************
          ;讀DS1302某地址的的數(shù)據(jù)
          ;入口參數(shù):ACC(地址)
          ;出口參數(shù):ACC(讀出的數(shù)據(jù))
          ;**************************************
          DS1302_ReadData:
          CLRRST;拉低片選
          CALLDelay;延時(shí)等待
          CLRSCLK;時(shí)鐘線拉低
          CALLDelay;延時(shí)等待
          SETBRST;使能片選
          CALLDelay;延時(shí)等待
          CALLDS1302_WriteByte;寫地址
          CALLDS1302_ReadByte;讀數(shù)據(jù)
          RET ;**************************************
          ;往DS1302的某個(gè)地址寫入數(shù)據(jù)
          ;入口參數(shù):ACC(地址)B(需寫入的數(shù)據(jù))
          ;出口參數(shù):無
          ;**************************************
          DS1302_WritEDAta:
          CLRRST;拉低片選
          CALLDelay;延時(shí)等待
          CLRSCLK;時(shí)鐘線拉低
          CALLDelay;延時(shí)等待
          SETBRST;使能片選
          CALLDelay;延時(shí)等待
          CALLDS1302_WriteByte;寫地址
          MOV A,B;地址數(shù)據(jù)送入ACC
          CALLDS1302_WriteByte;寫數(shù)據(jù)
          RET ;**************************************
          ;寫入初始時(shí)間
          ;入口參數(shù):DPTR(初始值地址)
          ;出口參數(shù):無
          ;**************************************
          DS1302_SetTime:
          MOV A,#8EH
          MOV B,#0
          CALLDS1302_WriteData;允許寫操作
          MOV R7,#80H;從寄存器80開始
          MOV R6,#7;連續(xù)寫7次
          SetNext:
          CLRA
          MOV CA,@A+DPTR
          MOV B,A;數(shù)據(jù)
          MOV A,R7;地址
          CALLDS1302_WriteData;寫數(shù)據(jù)
          INCR7
          INCR7;寄存器地址+2
          INCDPTR;數(shù)據(jù)地址+1
          DJNZR6,SetNext
          MOV A,#8EH
          MOV B,#80H
          CALLDS1302_WriteData;寫保護(hù)
          RET ;**************************************
          ;讀取當(dāng)前時(shí)間
          ;入口參數(shù):R0(數(shù)據(jù)緩沖區(qū)首地址)
          ;出口參數(shù):無
          ;**************************************
          DS1302_GetTime:
          MOV R7,#81H;從寄存器81開始
          MOV R6,#7;連續(xù)讀7次
          GetNext:
          MOV A,R7;地址
          CALLDS1302_ReadData;讀數(shù)據(jù)
          MOV @R0,A;保存數(shù)據(jù)
          INCR7
          INCR7;寄存器地址+2
          INCR0;數(shù)據(jù)地址+1
          DJNZR6,GetNext
          RET ;**************************************
          ;初始化DS1302
          ;**************************************
          DS1302_Initial:
          CLRRST
          CLRSCLK
          MOV A,#8EH
          MOV B,#0
          CALLDS1302_WriteData;允許寫操作
          MOV A,#80H
          MOV B,#0
          CALLDS1302_WriteData;時(shí)鐘啟動(dòng)
          MOV A,#90H
          MOV B,#0A6H
          CALLDS1302_WriteData;一個(gè)二極管+4K電阻充電
          MOV A,#8EH
          MOV B,#80H
          CALLDS1302_WriteData;寫保護(hù)
          RET END


          關(guān)鍵詞: stc單片機(jī) 1TMCU DS1302

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();