新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > STC12C2052單片機制作數(shù)字電壓表匯編程序

        STC12C2052單片機制作數(shù)字電壓表匯編程序

        作者: 時間:2016-12-02 來源:網(wǎng)絡(luò) 收藏
        STC12C2052單片機芯片自帶的ad進行采樣得到電壓并顯示在數(shù)碼管上面,下面是匯編語言源程序:

        ;===================數(shù)字電壓表模擬采樣===================================

        本文引用地址:http://www.104case.com/article/201612/324642.htm

        P1M0 EQU 91H ;端口設(shè)置寄存器
        P1M1 EQU 92H ;端口設(shè)置寄存器
        AK EQU 0C5H ;A/D轉(zhuǎn)換控制寄存器
        ADATA EQU 0C6H ;保存轉(zhuǎn)換數(shù)據(jù)的高8位
        ADATAD EQU 0BEH ;保存轉(zhuǎn)換數(shù)據(jù)的低2位
        ORG 00H
        JMP MAIN

        ;==================================================
        MAIN: MOV P1,#00H
        MOV P3,#00H
        MOV TMOD,#01H
        MOV TH0,#0FCH
        MOV TL0,#17H
        MOV 30H,#01
        MOV 32H,#03H
        MOV 33H,#04H
        MOV 31H,#02H
        MOV 8EH,#00H
        MOV PCON,#00H
        MOV P1,#0FFH
        MOV P3,#0FFH
        MOV P1M0,#4H ;設(shè)置端口為A/D模式
        MOV P1M1,#4H ;設(shè)置端口為A/D模式
        MOV ADATA,#00H
        MOV AK,#80H ;打開A/D電源
        CALL DIP
        CALL DIP
        CALL DIP
        CALL DIP
        CALL DIP
        CALL DIP
        ;==================================================
        MOV AK,#0E2H ;選擇通道P1。2為A/D輸入端
        ;===============================================
        LOOP_22: ORL Ak,#08H ;啟動轉(zhuǎn)換
        LOOP_0: MOV A,#10H
        ANL A,AK ;判斷是否轉(zhuǎn)換完成
        JZ LOOP_0
        ;==============================================
        ANL AK,#0E7H ;把標志位清零
        MOV A,ADATA ;讀取轉(zhuǎn)換后的高8值
        ;==============================================
        MOV B,#100
        DIV AB
        MOV 30H,A
        MOV A,B
        MOV B,#10
        DIV AB
        MOV 31H,A
        MOV 32H,B
        ;================================================
        MOV 66H,#50
        LOOP: CALL DIP
        DJNZ 66H,LOOP
        JMP LOOP_22
        ;=================================================
        DIP: MOV A,30H
        CALL TABLE
        MOV P3,A
        SETB P1.0
        MOV 65H,#1
        CALL T2MS
        CLR P1.0
        ;=================
        MOV A,31H
        CALL TABLE
        MOV P3,A
        SETB P1.1
        MOV 65H,#1
        CALL T2MS
        CLR P1.1
        ;===============
        MOV A,32H
        CALL TABLE
        MOV P3,A
        SETB P1.7
        MOV 65H,#1
        CALL T2MS
        CLR P1.7
        ;================
        MOV A,33H
        CALL TABLE
        MOV P3,A
        SETB P1.4
        MOV 65H,#1
        CALL T2MS
        CLR P1.4
        RET
        ;=================================================
        T2MS:
        MOV TH0,#0FCH
        MOV TL0,#17H
        SETB TR0
        JNB TF0,$
        CLR TF0
        DJNZ 65H,T2MS
        RET
        ;=============================================
        TABLE: INC A
        MOVC A,@A+PC
        RET
        DB 3FH,06H,9BH,8FH,0A6H,0ADH,0BDH,7H,0BFH,0AFH
        ;0 1 2 3 4 5 6 7 8 9
        ;==============================================
        END

        成功啦 更愛上我的單片機設(shè)計



        評論


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

        關(guān)閉
        主站蜘蛛池模板: 辉南县| 四子王旗| 黄平县| 锡林郭勒盟| 呼玛县| 昭通市| 元江| 济南市| 嘉祥县| 满洲里市| 赤水市| 嘉义市| 拉萨市| 凤冈县| 革吉县| 信宜市| 万载县| 休宁县| 深泽县| 云阳县| 吉安市| 襄垣县| 都匀市| 霞浦县| 若羌县| 婺源县| 巴林左旗| 凤庆县| 新河县| 油尖旺区| 沈丘县| 朝阳区| 涟源市| 靖边县| 建平县| 突泉县| 阿荣旗| 卢龙县| 呼伦贝尔市| 永登县| 浪卡子县|