新聞中心

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

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

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

        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.104case.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 ;識別碼定義,每個識別碼對應一個數(shù)據(jù)
        MOV DATA3,#02H
        MOV DATA5,#03H
        LP1: CLR WB ;AD口選擇:000位通道0數(shù)據(jù)
        CLR WA
        CLR WC
        CLR ST
        SETB ST
        CLR ST
        JNB EOC,$
        SETB OE
        MOV DATA2,P0 ;將臨時存儲器上的數(shù)據(jù)送給數(shù)據(jù)1
        LP2: CLR WC ;AD口選擇:001位通道1數(shù)據(jù)
        CLR WB
        SETB WA
        CLR ST
        SETB ST
        CLR ST
        JNB EOC,$
        SETB OE
        MOV DATA4,P0 ;將檢測的數(shù)據(jù)送給數(shù)據(jù)2
        CLR OE
        LP3: CLR WC ;AD口選擇:010位通道2數(shù)據(jù)
        SETB WB
        CLR WA
        CLR ST
        SETB ST
        CLR ST
        JNB EOC,$
        SETB OE
        MOV DATA6,P0 ;將檢測的數(shù)據(jù)送給數(shù)據(jù)3
        CLR OE
        LCALL TT0 ;調(diào)用串口數(shù)據(jù)傳輸程序
        LP: LCALL LEDSHOW ;調(diào)用顯示程序
        CLR WC
        CLR WB
        CLR WA
        CLR ST
        SETB ST
        CLR ST
        JNB EOC,$
        SETB OE
        MOV LDATA,P0 ;將通道0的檢測數(shù)據(jù)送送給臨時存儲器
        CLR OE
        MOV A,LDATA
        CJNE A,DATA2,DADA ;數(shù)據(jù)1不等于臨時數(shù)據(jù),跳轉到數(shù)據(jù)比較,
        AJMP LP ;如果相等,執(zhí)行這條指令;
        DADA:JC XIXI ;臨時數(shù)據(jù)小于數(shù)據(jù)1,跳轉到小值指令;
        AJMP LP1 ;臨時數(shù)據(jù)大于數(shù)據(jù)1,跳到重新判斷三個數(shù)據(jù)值
        XIXI:AJMP LP ;數(shù)據(jù)1小于臨時數(shù)據(jù),執(zhí)行這條指令,繼續(xù)判斷;
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        TT0: MOV SBUF,DATA1 ;編碼1送入串口SBUF
        SENT0: JBC TI,SENWT1 ;判斷發(fā)送是否完成,完成則跳到SENWT1,沒有完成,執(zhí)行下一條指令
        LCALL LEDSHOW ;調(diào)用數(shù)據(jù)顯示程序
        SJMP SENT0 ;返回繼續(xù)檢測發(fā)送完成指令
        SENWT1: CLR TI ;關閉發(fā)送
        MOV SBUF ,DATA2;將數(shù)據(jù)1送入串口SBUF
        SENWT2: JBC TI,SENWT3 ;判斷發(fā)送是否完成,完成則跳到SENWT3,沒有完成,執(zhí)行下一條指令
        LCALL LEDSHOW ;
        AJMP SENWT2 ;返回繼續(xù)檢測發(fā)送完成指令
        SENWT3: CLR TI ;關閉發(fā)送
        ;以下程序相同功能,發(fā)送另外兩組數(shù)據(jù)
        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 ;數(shù)據(jù)發(fā)送完成,退出子程序
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

        ;數(shù)據(jù)顯示
        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
        ;;;;;;;;;;;;;;數(shù)碼管顯示
        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ū)

        關閉
        主站蜘蛛池模板: 岳阳县| 黄平县| 慈溪市| 彭州市| 中江县| 常山县| 昭觉县| 城固县| 肃宁县| 衡阳市| 五华县| 孝昌县| 平昌县| 灌阳县| 上饶市| 阿尔山市| 西丰县| 芷江| 屯门区| 咸阳市| 威海市| 长治县| 达孜县| 芦山县| 原平市| 新田县| 南投县| 巴彦淖尔市| 陈巴尔虎旗| 四川省| 海原县| 吴江市| 商水县| 乌恰县| 油尖旺区| 依兰县| 铅山县| 连城县| 厦门市| 古田县| 张家口市|