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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 51單片機驅動ADC0808電路圖C51及匯編程序

          51單片機驅動ADC0808電路圖C51及匯編程序

          作者: 時間:2016-11-30 來源:網絡 收藏

          void ad3(void)
          {
          WA=0; //通道1
          WB=1;
          WC=0;
          START=1;
          START=0; //啟動轉換
          while(EOC==0); //轉換結束信號,為0則說明轉換結束
          OE=1; //輸出允許信號,為真,可以輸出
          data6=P0; //P0口的測量值送到TVDATE
          OE=0; //關輸出允許
          }
          void main(void)
          {
          data1=0X01;
          data3=0X02;
          data5=0X03;
          ad1();
          ad2();
          ad3();
          loop:
          ledxianshi();
          ad1();
          if ((data7-data2)>0)
          {
          data2=data7;
          ad2();
          ad3();
          csh();
          goto loop ;
          }
          else
          goto loop ;

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

          }

          ----------------------------------------------------------------------------------
          A51匯編程序:

          ;;;;;;;;;;;;;;;;;;;;;;;;;;;
          DATA1 DATA 60H
          DATA2 DATA 61H
          DATA3 DATA 62H
          DATA4 DATA 63H
          DATA5 DATA 64H
          DATA6 DATA 65H
          DATA7 DATA 66H
          DATA8 DATA 67H
          ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
          LDATA DATA 54H
          ;;;;;;;;;;;;;;;;;;;;;;;
          EOC BIT P3.7 ;接口定義
          ST BIT P3.6
          OE BIT P3.5
          WC BIT P3.4
          WB BIT P3.3
          WA BIT P3.2
          K1 BIT P2.4
          K2 BIT P2.5
          K3 BIT P2.6
          K4 BIT P2.7
          ORG 0000H
          AJMP SEND
          ORG 0030H
          SEND: MOV TMOD,#20H ;串口初始化
          MOV TH1,#0F3H ;傳輸波特率2400
          MOV TL1,#0F3H
          MOV SCON,#50H
          MOV PCON,#00H
          SETB TR1
          MOV DATA1,#01H ;識別碼定義,每個識別碼對應一個數據
          MOV DATA3,#02H
          MOV DATA5,#03H
          LP1: CLR WB ;AD口選擇:000位通道0數據
          CLR WA
          CLR WC
          CLR ST
          SETB ST
          CLR ST
          JNB EOC,$
          SETB OE
          MOV DATA2,P0 ;將臨時存儲器上的數據送給數據1
          LP2: CLR WC ;AD口選擇:001位通道1數據
          CLR WB
          SETB WA
          CLR ST
          SETB ST
          CLR ST
          JNB EOC,$
          SETB OE
          MOV DATA4,P0 ;將檢測的數據送給數據2
          CLR OE
          LP3: CLR WC ;AD口選擇:010位通道2數據
          SETB WB
          CLR WA
          CLR ST
          SETB ST
          CLR ST
          JNB EOC,$
          SETB OE
          MOV DATA6,P0 ;將檢測的數據送給數據3
          CLR OE
          LCALL TT0 ;調用串口數據傳輸程序
          LP: LCALL LEDSHOW ;調用顯示程序
          CLR WC
          CLR WB
          CLR WA
          CLR ST
          SETB ST
          CLR ST
          JNB EOC,$
          SETB OE
          MOV LDATA,P0 ;將通道0的檢測數據送送給臨時存儲器
          CLR OE
          MOV A,LDATA
          CJNE A,DATA2,DADA ;數據1不等于臨時數據,跳轉到數據比較,
          AJMP LP ;如果相等,執(zhí)行這條指令;
          DADA:JC XIXI ;臨時數據小于數據1,跳轉到小值指令;
          AJMP LP1 ;臨時數據大于數據1,跳到重新判斷三個數據值
          XIXI:AJMP LP ;數據1小于臨時數據,執(zhí)行這條指令,繼續(xù)判斷;
          ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
          TT0: MOV SBUF,DATA1 ;編碼1送入串口SBUF
          SENT0: JBC TI,SENWT1 ;判斷發(fā)送是否完成,完成則跳到SENWT1,沒有完成,執(zhí)行下一條指令
          LCALL LEDSHOW ;調用數據顯示程序
          SJMP SENT0 ;返回繼續(xù)檢測發(fā)送完成指令
          SENWT1: CLR TI ;關閉發(fā)送
          MOV SBUF ,DATA2;將數據1送入串口SBUF
          SENWT2: JBC TI,SENWT3 ;判斷發(fā)送是否完成,完成則跳到SENWT3,沒有完成,執(zhí)行下一條指令
          LCALL LEDSHOW ;
          AJMP SENWT2 ;返回繼續(xù)檢測發(fā)送完成指令
          SENWT3: CLR TI ;關閉發(fā)送
          ;以下程序相同功能,發(fā)送另外兩組數據
          TT0_2: MOV SBUF,DATA3 ;
          SENT0_2: JBC TI,SENWT1_2;
          LCALL LEDSHOW ;
          SJMP SENT0_2 ;
          SENWT1_2: CLR TI ;
          MOV SBUF ,DATA4;
          SENWT2_2: JBC TI,SENWT3_2;
          LCALL LEDSHOW ;
          AJMP SENWT2_2 ;
          SENWT3_2: CLR TI ;
          ;
          TT0_3: MOV SBUF,DATA5 ;
          SENT0_3: JBC TI,SENWT1_3;
          LCALL LEDSHOW ;
          SJMP SENT0_3 ;
          SENWT1_3: CLR TI ;
          MOV SBUF ,DATA6;
          SENWT2_3: JBC TI,SENWT3_3;
          LCALL LEDSHOW ;
          AJMP SENWT2_3 ;
          SENWT3_3: CLR TI ;
          RET ;數據發(fā)送完成,退出子程序
          ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

          ;數據顯示
          LEDSHOW: MOV R1,#60H
          MOV P2,#0F0H
          LEDSHOW_1:
          MOV A,@R1
          MOV B,#16
          DIV AB
          LCALL LED
          INC P2
          MOV A,B
          LCALL LED
          INC P2

          INC R1
          MOV A,R1
          CJNE A,#66H,LEDSHOW_1
          RET
          ;;;;;;;;;;;;;;數碼管顯示
          LED: MOV DPTR,#TABLE
          MOVC A,@A+DPTR
          MOV P1,A
          LCALL DELAY1
          RET
          TABLE:
          DB 0C0H ;"0"
          DB 0F9H ;"1"
          DB 0A4H ;"2"
          DB 0B0H ;"3"
          DB 99H ;"4"
          DB 92H ;"5"
          DB 82H ;"6"
          DB 0F8H ;"7"
          DB 80H ;"8"
          DB 90H ;"9"
          DB 0C8H ;"A"
          DB 083H ;"B"
          DB 0C6H ;"C"
          DB 0A1H ;"D"
          DB 086H ;"E"
          DB 08EH ;"F"
          DB 0BFH ;"-"
          DELAY1:
          MOV R7,#10
          L1: MOV R6,#50
          DJNZ R6,$
          DJNZ R7,L1
          RET
          DELAY:
          MOV R5,#250
          D1: MOV R6,#200
          D2: DJNZ R6,D2
          DJNZ R5,D1
          RET
          END


          上一頁 1 2 下一頁

          評論


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