新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > PIC單片機adc轉換并顯示

        PIC單片機adc轉換并顯示

        作者: 時間:2016-11-29 來源:網絡 收藏
        CL04 BTFSS 57H,2;判斷標志是否有進位
        GOTO CL4;否
        MOVLW 6H;
        ADDWF 53H,1;自身加6H
        CL4 BTFSS 57H,5;判斷標志是否有進位
        GOTO CL05;
        INCF 51H,1;是進位
        MOVLW 60H;
        ADDWF 52H,1;自身加60H
        CL05 BTFSS 57H,1;判斷標志是否有進位
        GOTO CL5;否
        MOVLW 6H;
        ADDWF 52H,1;自身加6H
        CL5
        CLRF 57H;清標志
        DECFSZ 56H,1;
        GOTO CL2;
        RETURN;
        ;;;**************************************************************
        ;;; 十進制數調整
        ;;;**************************************************************
        DA1 MOVWF 60H;將W里的數保存到60H里
        MOVLW B00001111;
        ANDWF 60H,0;將60H的數與00001111去除高4位
        MOVWF 62H;將去除高位后的數保存到62H
        MOVLW 0AH;
        SUBWF 62H,0;去除高位的數減0AH
        BTFSS STATUS,DC;判斷是否比0AH大
        GOTO DA2 ;否則跳轉
        ADDLW B10000;比0AH大則進位
        MOVWF 62H;高4位加1
        DA2 MOVLW B11110000;
        ANDWF 60H,1;將60H的數與11110000去除低4位
        MOVLW 0A0H;
        SUBWF 60H,0;高4位的數減0A0H
        BTFSS STATUS,C;判斷是否比0A0H大
        GOTO DA3;否
        ADDWF 62H,1;是則將差加上低位
        BSF STATUS,C;是則置位
        GOTO DA4;
        DA3 MOVFW 60H;
        ADDWF 62H,1;否則將高4位加上低4位
        MOVFW 62H;
        ANDLW B11110000;
        SUBLW 0A0H ;加后判斷是否大于或等于0A0H
        BCF STATUS,C;
        BTFSS STATUS,Z;
        GOTO DA4;否則退出
        MOVLW B00001111;是
        ANDWF 62H,1;則去掉高4位并進位
        BSF STATUS,C;置進位標志
        DA4 MOVFW 62H;
        RETURN;
        ;**************************************************************
        ; 定時中斷數碼管顯示程序
        ;**************************************************************
        ZD01 BTFSS INTCON,T0IF;判斷是否產生定時中斷
        GOTO ZD03;否跳出是繼續執行
        MOVWF W_TEMP;W備份到W_TEMP中
        SWAPF STATUS,0;STATUS半字交換后送W
        CLRF STATUS;選擇體0為當前體備份
        MOVWF STATUS_TEMP;將原來的STATUS送體0上的
        MOVF PCLATH,0;PCLATH送W
        MOVWF PCLATH_TEMP;W送備份寄存器中
        CLRF PCLATH ;設置為0頁
        BCF INTCON,T0IF
        BSF STATUS,RP0;體1
        BCF STATUS,RP1;
        MOVLW 0;
        MOVWF TRISB;RB口設為輸出口
        MOVWF TRISD;RD口設為輸出口
        BCF STATUS,RP0;體0
        BCF STATUS,RP1;
        MOVLW 0FFH;
        MOVWF PORTB;RB口輸出高電平
        MOVLW 0
        MOVWF PORTD;RD口輸出低電平起清屏作用
        MOVFW INDF;間接尋址顯示數據
        CALL Q1;查數據表
        MOVWF PORTB;顯示斷碼輸出到RB口
        INCF FSR,1;間接尋址地址加1
        MOVFW 41H ;位碼
        MOVWF PORTD;位碼輸出到RD口
        RLF 41H,0;處理C
        RLF 41H,1;左移位碼
        DECFSZ 40H,1;判斷是否顯示完4位
        GOTO ZD02;否則繼續顯示
        MOVLW 5;顯示位數
        MOVWF 40H;
        MOVLW B00000001;位碼
        MOVWF 41H;
        MOVLW 5AH;
        MOVWF FSR ;間接尋址
        ZD02
        MOVLW 0FFH;
        MOVFW TMR0;重裝初值
        ; 恢復現場
        CLRF STATUS;恢復到體0
        MOVF PCLATH_TEMP,0;開始恢復數據
        MOVWF PCLATH;恢復PCLATH
        SWAPF STATUS_TEMP,0
        MOVWF STATUS;恢復STATUS
        SWAPF W_TEMP,1;半字交換后放回
        SWAPF W_TEMP,0;再半字交換后送W
        ZD03
        RETFIE ;中斷返回
        ADC1 BSF STATUS,RP0;體1
        BCF STATUS,RP1
        MOVLW 0FFH
        MOVWF TRISA;設置A口為輸入口
        MOVLW B10001110;設置ADC轉換格式為右對齊并選RA0位AD口
        MOVWF ADCON1
        BCF STATUS,RP0;選擇體0
        BCF STATUS,RP1
        MOVLW B11000001 ;選擇ADC時鐘頻率選擇RA0位AD通道使能ADC
        MOVWF ADCON0
        BSF ADCON0,GO;開始AD轉換
        BTFSC ADCON0,GO;判斷是否轉換完成
        GOTO $-1
        BSF ADCON0,GO;清完成標志
        MOVFW ADRESH;將轉換完成高位數存到50H
        MOVWF 50H
        BSF STATUS,RP0;體1
        BCF STATUS,RP1
        MOVFW ADRESL;將轉換完成數存到51H
        BCF STATUS,RP0;體0
        BCF STATUS,RP1
        MOVWF 51H
        RETURN
        M001 MOVLW 1
        MOVWF 30H
        M002 MOVLW D24
        MOVWF 31H
        M003 MOVLW D250
        MOVWF 32H
        DECFSZ 32H,1
        GOTO $-1
        DECFSZ 31H,1
        GOTO M003
        DECFSZ 30H,1
        GOTO M002
        RETURN
        END
        上一頁 1 2 下一頁

        關鍵詞: PIC單片機adc轉

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 定襄县| 阆中市| 搜索| 婺源县| 射阳县| 绥阳县| 广德县| 永顺县| 临安市| 安宁市| 榆社县| 平泉县| 成武县| 肥城市| 施秉县| 泸西县| 聂拉木县| 西昌市| 镇雄县| 栾川县| 乌海市| 轮台县| 平果县| 张家港市| 松阳县| 军事| 安岳县| 长岭县| 屯门区| 厦门市| 宜兰市| 太和县| 曲麻莱县| 镇安县| 大石桥市| 兴宁市| 西安市| 陇西县| 承德市| 江都市| 诏安县|