• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > PIC單片機(jī)AD轉(zhuǎn)換匯編程序

    PIC單片機(jī)AD轉(zhuǎn)換匯編程序

    作者: 時(shí)間:2012-12-11 來(lái)源:網(wǎng)絡(luò) 收藏

    ;此實(shí)現(xiàn)A/D轉(zhuǎn)換功能,應(yīng)用于pic單片機(jī)上,A/D采用中斷方式。該程序通過(guò)單片機(jī)的RA2模擬通道送入
    ;一直流電壓,當(dāng)送入的直流電壓大于2.5V時(shí),8個(gè)LED閃動(dòng),當(dāng)直流電壓恢復(fù)到2.5V以下
    ;時(shí),LED停止閃動(dòng)。為了防止干擾,本程序?qū)χ绷麟妷翰蓸?0次后再作判斷,中間的采樣結(jié)
    ;果用間接尋址的方式存取。

    LIST P=18F458
    INCLUDE "P18F458.INC"

    TIMES EQU 0X20
    DEY EQU TIMES+1
    ACCALO EQU TIMES+2 ;ACCA為雙精度加數(shù)寄存器
    ACCAHI EQU TIMES+3
    ACCBLO EQU TIMES+4 ;ACCB為雙精度加法的結(jié)果寄存器
    ACCBHI EQU TIMES+5
    FLAG EQU TIMES+6
    DEYH EQU TIMES+7
    DEYL EQU TIMES+9
    BEGFSR EQU 0X30 ;間接尋址FSR的起始值(宏定義方式給出)

    ORG 0X0000
    GOTO MAIN
    ORG 0X0008
    GOTO INTSERVE ;轉(zhuǎn)向中斷服務(wù)子程序
    ORG 0X30

    ;***雙字節(jié)減法子程序,入口地址ACCB-ACCA,出口地址ACCB***
    D_SUB
    CALL NEG_A ;求ACCA的補(bǔ)碼

    ;***雙字節(jié)加法子程序,入口地址ACCB+ACCA,出口地址ACCB***
    D_ADD
    MOVF ACCALO,0 ;ACCB和ACCA低半字節(jié)相加
    ADDWF ACCBLO
    BTFSC STATUS,C ;有進(jìn)位否?
    INCF ACCBHI ;有,ACCB高字節(jié)加1,再加ACCAHI
    MOVF ACCAHI,0 ;ACCA、ACCB高半字節(jié)相加
    ADDWF ACCBHI
    RETURN ;子程序返回

    ;************** ACCA取補(bǔ)子程序*****************
    NEG_A
    COMF ACCALO ;ACCALO取反加1
    INCF ACCALO
    BTFSC STATUS,Z ;低8位有進(jìn)位嗎?
    DECF ACCAHI ;有,ACCAHI減1,再取反
    COMF ACCAHI ;否則ACCAHI直接取反
    RETURN ;子程序返回

    ;*********初始化子程序***************
    INITIAL
    CLRF INTCON ;禁止總中斷和外圍中斷
    MOVLW 0X51
    MOVWF ADCON0 ;選擇AD通道為RA2,且打開(kāi)A/D轉(zhuǎn)換器
    ;在工作狀態(tài),且使時(shí)鐘為8Tosc
    MOVLW 0X80
    MOVWF ADCON1 ;轉(zhuǎn)換結(jié)果右移,即ADRESH寄存器的高6
    ;位為"0",且把RA2口設(shè)置為模擬量輸入式
    ;(注意后面要把RA5改成數(shù)據(jù)I/O方式,以
    ;輸出顯示瑣存信號(hào))
    BCF PIR1,ADIF ;清除A/D轉(zhuǎn)換標(biāo)志
    BSF PIE1,ADIE ;A/D轉(zhuǎn)換中斷允許
    BSF INTCON,PEIE ;外圍中斷允許
    BSF IPR1,ADIP ;B口變位中斷高優(yōu)先級(jí)
    BSF RCON,7 ;使能中斷優(yōu)先級(jí)
    BSF TRISA,2 ;設(shè)置RA2為輸入方式
    BCF TRISA,5 ;置RA5為輸出方式,以輸出鎖存信號(hào)
    BCF TRISC,5
    BCF TRISC,3 ;設(shè)置SCK與SDO為輸出方式
    MOVLW 0XC0
    MOVWF SSPSTAT ;設(shè)置SSPSTAT寄存器
    MOVLW 0X30
    MOVWF SSPCON1 ;設(shè)置SPI的控制方式,允許SSP方式,并
    ;且時(shí)鐘下降沿發(fā)送,與"74HC595當(dāng)其
    ;SCLK從低到高電平跳變時(shí),串行輸入數(shù)據(jù)
    ;(DI)移入寄存器"的特點(diǎn)相應(yīng)
    CLRF FLAG
    RETURN

    單片機(jī)相關(guān)文章:單片機(jī)教程


    單片機(jī)相關(guān)文章:單片機(jī)視頻教程


    單片機(jī)相關(guān)文章:單片機(jī)工作原理



    上一頁(yè) 1 2 下一頁(yè)

    評(píng)論


    相關(guān)推薦

    技術(shù)專(zhuān)區(qū)

    關(guān)閉
    主站蜘蛛池模板: 利辛县| 志丹县| 兴义市| 余庆县| 遂川县| 石台县| 图们市| 合水县| 崇义县| 修文县| 吉安市| 新野县| 榆树市| 铜山县| 巴中市| 张家界市| 集贤县| 波密县| 集贤县| 江山市| 丹江口市| 江山市| 清苑县| 鄂托克前旗| 巫山县| 哈密市| 略阳县| 鹤岗市| 金山区| 亚东县| 商洛市| 平乡县| 织金县| 桃园县| 襄垣县| 皮山县| 罗定市| 汪清县| 布拖县| 乡宁县| 临朐县|