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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)串口通信試驗(yàn)匯編程序

          51單片機(jī)串口通信試驗(yàn)匯編程序

          作者: 時(shí)間:2016-12-01 來源:網(wǎng)絡(luò) 收藏
          (今天是硬生生的把它給摳出來了):PC 通過串口助手向單片機(jī)系統(tǒng)傳遞命令和數(shù)據(jù):以A5開始,以5A結(jié)束;中間是數(shù)據(jù),長(zhǎng)度不一,要求把數(shù)據(jù)部分用led燈顯示出來;并且要求循環(huán)顯示;

          //This is my x_Edprogramcode
          //we use it as the pc communicated with themcu
          //At the same time,we want to see the result by LCD;
          STFLAG BIT 00H //收到起始碼標(biāo)志,1為收到起始碼
          EDFLAG BIT 01H //到結(jié)束碼標(biāo)志,1為收到結(jié)束碼
          TMFLAG BIT 02H //定時(shí)時(shí)間到標(biāo)志,1為定時(shí)時(shí)間到
          ORG 0000H
          SJMP Initialize//主程序入口 (初始化程序)
          ORG 000BH //定時(shí)器0入口
          LJMP TIMER0 //定時(shí)器0中斷
          ORG 0023H //串口中斷程序的入口地址
          LJMP Transfer //跳轉(zhuǎn)到接受中斷入口
          ///////////////////////////////////////////////////////////////
          ORG 0050H
          Initialize:
          MOV SP,#70H //設(shè)置堆棧
          MOV TMOD,#21H //T1工作方式2 T0工作
          MOV TH1,#0FDH //波特率9600
          MOV TL1,#0FDH //波特率9600 自動(dòng)重裝載
          MOV TH0,#3CH //定時(shí)50ms
          MOV TL0,#0BH //定時(shí)50ms
          MOV SCON,#50H //串口工作方式1
          MOV R6,#00H //定時(shí)次數(shù)計(jì)數(shù)器20一秒
          MOV R5,#00H //接收數(shù)據(jù)長(zhǎng)度計(jì)數(shù)器
          MOV R4,#00H //控制輸出控制寄存器
          MOV R0,#30H //數(shù)據(jù)存儲(chǔ)地址
          MOV R1,#30H //控制輸出的數(shù)據(jù)緩存
          CLR STFLAG //清起始標(biāo)志位
          CLR EDFLAG //清結(jié)束標(biāo)志位
          CLR TMFLAG //清時(shí)鐘標(biāo)志位
          SETB PS //提高串口中斷的優(yōu)先級(jí)
          SETB TR1 //打開定時(shí)器1;
          SETB ES //打開串口中斷允許位
          SETB ET0 //定時(shí)器0中斷允許位
          SETB EA //打開全局中斷允許位
          /////////////////等待接受命令////////////////////////
          Main: JB STFLAG,NODE3 //已經(jīng)收到起始位
          SJMP Main //未起始繼續(xù)等待
          NODE3: JB EDFLAG,NODE4 //已經(jīng)收到結(jié)束位
          SJMP Main //未結(jié)束繼續(xù)等待
          NODE4: SETB TR0 //打開定時(shí)器0;
          NODE5: JB TMFLAG,OUTPUT
          SJMP NODE5
          ///////////////////等待上位機(jī)傳送數(shù)據(jù)并記錄////////
          Transfer: CLR ES
          MOV A,SBUF
          CJNE A,#0A5H,NODE0 //檢測(cè)到起始位
          SETB STFLAG
          SJMP JIEDIAN
          NODE0: CJNE A,#05AH,NODE1 //檢測(cè)到結(jié)束位
          SETB EDFLAG
          MOV DPH,R5
          MOV R4,DPH
          clr ES //打開串口中斷允許位
          SJMP ret00
          NODE1: MOV @R0,A //既非起始碼,又非結(jié)束碼,則為數(shù)據(jù)
          INC R0
          INC R5
          MOV SBUF,#055H
          JIEDIAN: CLR TI
          CLR RI
          SETB ES
          ret00: RETI
          TIMER0: CLR TR0
          MOV TH0,#3CH
          MOV TL0,#0B0H
          INC R6
          CJNE R6,#20,RTN
          SETB TMFLAG
          MOV R6,#00H
          RTN: SETB TR0
          RETI

          本文引用地址:http://www.ex-cimer.com/article/201612/324121.htm

          OUTPUT: CLR TR0
          clr TMFLAG
          MOV A,@R1
          MOV P1,A
          INC R1
          DJNZ R4,NODE4
          MOV R1,#30H
          CLR TMFLAG
          MOV DPH,R5
          MOV R4,DPH
          SJMP NODE4
          RETI
          END



          評(píng)論


          技術(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); })();