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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 一種基于51單片機控制的數(shù)字視頻混合器

          一種基于51單片機控制的數(shù)字視頻混合器

          作者: 時間:2011-11-18 來源:網(wǎng)絡 收藏

          3 軟件設計

          根據(jù)單片機控制功能的要求,軟件有主程序和串口中斷子程序兩部分,主程序流程圖如圖3所示。編程側重點是:混合器初始化;鍵控功能;對PC命令的判斷和執(zhí)行;更新系統(tǒng)配置及對數(shù)據(jù)的保存。

          3.1 訪問EEPROM和看門狗設置

          AT89S8252有看門狗和EEPROM控制寄存器WMCON。

          ;寫一字節(jié)

          SETB WMCON.3 ;訪問EEPROM使能

          SETB WMCON.4 ;寫EEPROM使能

          MOVX @DPTR,A ;寫一字節(jié),尋址范圍0000H~07FFH

          JNB WMCON.1$ ;WMCON.1,準備下一次訪問

          CLR WMCON.4

          CLR WMCON.3 ;MOVX指令可以訪問外部數(shù)據(jù)存儲器

          從EEPROM讀字節(jié)與寫過程相似。

          WMCON.0是看門狗使能位,WMCON.1是看門狗復位位(單片機復位后為1),WMCON.5~7可以設定看門狗的時鐘周期(16~2048ms)。如果在看門狗的時鐘周期內(nèi),沒有設置看門狗復位位或者沒有關閉看門狗,內(nèi)部復位信號會復位單片機。

          3.2 與PC串行通信

          PC與單片機通信的數(shù)據(jù)格式有三種:命令長度+命令號;命令長度+命令號+讀數(shù)據(jù)字節(jié)數(shù)N+首地址+校驗和;命令長度+命令號+寫數(shù)字字節(jié)數(shù)N+首地址+數(shù)據(jù)1+…+數(shù)據(jù)N+校驗和。命令長度、命令號、讀u20889寫數(shù)據(jù)字節(jié)數(shù)N、首地址和數(shù)據(jù)n(1≤n≤N)都是一字節(jié),用16進制表示。命令長度整個命令格式字節(jié)數(shù)。校驗和=命令號+讀數(shù)據(jù)字節(jié)數(shù)N+首地址,或者校驗和=命令中+寫數(shù)據(jù)字節(jié)數(shù)N+首地址+數(shù)據(jù)1+…+數(shù)據(jù)N。例如:顯示附加數(shù)字信號1并且1號LED亮,PC發(fā)送0x02 0x01;讀1號TMC2081的00~03控制存儲器,PC發(fā)送0x5 0xB 0x4 0x0 0xF;寫0x0 0x21 0x1D 0x0到SAA7121的27~2A存儲器,PC發(fā)送0x9 0xC 0x4 0x27 0x0 0x21 0x1D 0x0 0x13。

          在單片機的串口中斷子程序中,根據(jù)接收到的命令長度判斷是否接收到一個完整的命令格式。如果接收到一個完整命令格式就設置標志位FLG1根據(jù)這個標志位進入主程序中處理PC命令的程序,由接收到的命令號識別各種PC發(fā)送命令。例如,1號命令是顯示附加數(shù)字信號1并且點亮1號LED,0xC號命令是寫SAA7121存儲器等。依據(jù)接收到的校驗和,可以判斷接收PC數(shù)據(jù)的正確性,防止對混合器的錯誤操作。

          用VB6.0設計軟件,讀寫PC的串行口。本文波特率為9600bps,單片機的定時器/計數(shù)器2(T2)設定在波特率發(fā)生器的工作方式。



          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁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); })();