天堂草原最受欢迎的角色,天堂动漫,天堂在线,色天堂下载,天堂中文在线资源,亚洲男人天堂

技術熱線: 4007-888-234
設計開發

專注差異化嵌入式產品解決方案 給智能產品定制注入靈魂給予生命

開發工具

提供開發工具、應用測試 完善的開發代碼案例庫分享

技術支持

從全面的產品導入到強大技術支援服務 全程貼心伴隨服務,創造無限潛能!

新品推廣

提供新的芯片及解決方案,提升客戶產品競爭力

新聞中心

提供最新的單片機資訊,行業消息以及公司新聞動態

用本站實驗板顯示8位AD值

更新時間: 2019-03-23
閱讀量:1612

十年專注單片機方案開發的方案公司英銳恩,分享用本站實驗板顯示8位AD值。英銳恩現提供服務產品涉及主控芯片:8位單片機、16位單片機、32位單片機及各類運算放大器等。

;****************list p=16f877A ; list directive to define processor#include ; processor specific variable definitions__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF;---------------------COUNTER EQU 20H ;計數寄存器COUNT1 EQU 21HCOUNT2 EQU 22HTABADD EQU 23H ;查表地址寄存器DISPBUF EQU 24H ;顯示值暫存DISPBUF_H EQU 25H ;顯示器高位DISPBUF_L EQU 26H ;顯示器低位BUFFER EQU 27H ;BCD十進制結果存放BUFFER1 EQU 28H ;BCD轉換緩存SUM EQU 29H ;校正+3緩存DIGIT EQU 2AH ;數據顯示寄存器HB EQU 2BH ;百位寄存器;-------------------- ORG 0000H NOP GOTO MAIN ORG 0005HMAIN;********************** 初始化程序 

********************************* CLRF PORTA CLRF PORTC ;初始化IO口 BSF STATUS,RP0 ;設置寄存器體1 MOVLW 0EH ;轉換結果左對齊,只選1個A/D通道RA0/AN0 MOVWF ADCON1 ;選擇VDD和VSS作參考源 MOVLW 01H ;RA0為模擬輸入 MOVWF TRISA ;RA1~5為輸出 MOVLW 00H ;RC為LED段輸出 MOVWF TRISC BCF STATUS,RP0 ;恢復寄存器體0 MOVLW 0FFH ;先讓數碼管全部不顯示 MOVWF PORTC MOVWF PORTA MOVLW 81H ;選擇:時鐘時鐘源為FOSC/8,允許ADC工作 MOVWF ADCON0 ;通道AN0,暫時不啟動轉換過程 CLRF DISPBUF ;清顯示值 ;******************************************************************************** ADC BSF ADCON0,GO ;開啟A/D轉換過程 BTFSS PIR1,ADIF ;等待A/D轉換過程結束,檢測ADC中斷標志位 GOTO ADC ;如果沒有轉換結束,則返回循環檢測 MOVF ADRESH,W ;僅取高8位,把A/D結果讀到W MOVWF DIGIT ;注入顯示寄存器 ;******************************** BCD 

******************************** LOOP1 CALL DISP ;調用顯示子程序 MOVLW 8 MOVWF COUNTER ;循環左移計數器置8 CLRF BUFFER ;清除緩沖器 MOVF DIGIT,W MOVWF BUFFER1 LOOP2 RLF BUFFER1,1 ;二進制數轉換成BCD碼(以便顯示) RLF BUFFER,1 DECFSZ COUNTER,1 ;左移8次 GOTO ADJUST ; MOVFW BUFFER MOVWF DISPBUF ;是否有進位(即已達100),如已計數到100則 GOTO ADC ;GOTO MAINADJUST MOVLW 3 ;二進制轉BCD的調整 ADDWF BUFFER,W ;每次移位后都檢查低四位LSD+3是否大于7 MOVWF SUM BTFSC SUM,3 MOVWF BUFFER MOVLW 30H ADDWF BUFFER,W ;如果是則再加3,否則不加。 MOVWF SUM BTFSC SUM,7 MOVWF BUFFER ;接著再將高四位MSD作相同處理 GOTO LOOP2;******************************** 顯示程序 

*************************** DISP CLRF HB MOVLW 0C8H ; 送入199至W, SUBWF DIGIT,W ; F-W BTFSC STATUS,C ; 檢測C是否出現借位 GOTO HB200 ; F>199,百位數顯示2 MOVLW 64H ; F<199,再送99至W SUBWF DIGIT,W ; F-W BTFSC STATUS,C ; 檢測C是否出現借位 GOTO HB100 ; 199>F>99,百位數顯示1 GOTO DISP10 ; F<99,百位不顯示HB200 MOVLW 2H MOVWF HB ;百位顯示數移入寄存器 GOTO DISP100HB100 MOVLW 1H MOVWF HB ;百位顯示數移入寄存器 DISP100 MOVLW 0FFH ;顯示百位 MOVWF PORTC BCF PORTA,2 ;RA2為百位顯示 BSF PORTA,5 BSF PORTA,4 MOVLW TABLE ;查表 MOVWF TABADD MOVF HB,W ADDWF TABADD,W CALL CONVERT MOVWF PORTC ;顯示內容送RC CALL DELAYDISP10 MOVF DISPBUF,W ;顯示值低位處理 ANDLW 0FH ;屏蔽掉高位 MOVWF DISPBUF_L ;存入寄存器 SWAPF DISPBUF,W ;顯示值高低位交換,先處理高位 ANDLW 0FH ;屏蔽掉高位 MOVWF

DISPBUF_H ;存入寄存器 MOVF HB,W ADDWF DISPBUF_H,W ;如果百位和十位同為零不顯示 BTFSC STATUS,Z GOTO DISP01 MOVLW 0FFH ;顯示十位 MOVWF PORTC ;先熄滅數碼管以免閃爍 BCF PORTA,5 ;先顯示低位 BSF PORTA,2 BSF PORTA,4 MOVLW TABLE MOVWF TABADD ;將轉換表的首地址存入TABADD MOVFW DISPBUF_H ;計數值(W)與轉換表的起始地址相加 ADDWF TABADD,W CALL CONVERT ;存入W后調用轉換表子程序 MOVWF PORTC ;送RB口顯示 CALL DELAY ;廷時4。7MSDISP01 MOVLW 0FFH ;同樣方法顯示個位 MOVWF PORTC BCF PORTA,4 BSF PORTA,2 BSF PORTA,5 MOVLW TABLE MOVWF TABADD MOVFW DISPBUF_L ADDWF TABADD,W CALL 

CONVERT MOVWF PORTC CALL DELAY RETLW 0 ;****************************** 查表顯示 *****************************************CONVERT MOVWF PCL ;將W寄存器內的7段顯示碼地址放入PC TABLE ;PC執行新地址指令, 跳到相對的地址執行? RETLW 0C0H ;0 RETLW 0F9H ;1 RETLW 0A4H ;2 RETLW 0B0H ;3 RETLW 099H ;4 RETLW 092H ;5 RETLW 082H ;6 RETLW 0D8H ;7 RETLW 080H ;8 RETLW 090H ;9;*************************** 延時程序 ************************************DELAY ;顯示廷時常數,廷時時間為3*255*6+6us+4us=4.6ms MOVLW 06H;6H; MOVWF COUNT1L2 MOVLW 0FFH;0FFH; MOVWF COUNT2L3 DECFSZ COUNT2,1 GOTO L3 DECFSZ COUNT1,1 GOTO L2 RETLW 0 ;*********************************************************************** END

联系我们: 贺兰县| 华阴市| 新河县| 永福县| 新营市| 吐鲁番市| 乌鲁木齐市| 安塞县| 舟山市| 仲巴县| 蚌埠市| 望谟县| 广河县| 乐昌市| 河西区| 大宁县| 江华| 柳州市| 永宁县| 新民市| 古浪县| 广平县| 滕州市| 汪清县| 清远市| 双鸭山市| 怀安县| 石城县| 泾阳县| 依兰县| 阳东县| 定陶县| 东阿县| 中阳县| 富顺县| 四平市| 通道| 邯郸县| 板桥市| 广元市| 阜康市|