亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? adc.asm

?? 、本實戰(zhàn)的目的是讓大家熟悉ADC模塊的功能以及AD轉(zhuǎn)換的方法 2、項目實現(xiàn)的功能:從芯片RA0輸入一個可以隨時變化的模擬量(通過調(diào)節(jié)DEMO板VR1實現(xiàn)) 則單片機就能夠及時地把該模擬量進行模
?? ASM
字號:
;單通道模擬量采集器+數(shù)碼管顯示

;所用資源
;1、TMRO定時器。為保證采樣精度提供所需的延時
;2、PORTA端口。AN0做為模擬輸入信號口,其他做為數(shù)碼管的位選
;3、PORTC端口。做為7段共陽極數(shù)碼管的段信號(其中PORTC7為小數(shù)點)

;功能說明
;1、本實戰(zhàn)的目的是讓大家熟悉ADC模塊的功能以及AD轉(zhuǎn)換的方法
;2、項目實現(xiàn)的功能:從芯片RA0輸入一個可以隨時變化的模擬量(通過調(diào)節(jié)DEMO板VR1實現(xiàn))
;則單片機就能夠及時地把該模擬量進行模/數(shù)轉(zhuǎn)換,并用LED顯示出來,我們可以看到轉(zhuǎn)換結(jié)果
;會隨模擬量的變化而變化,從而以讓我們了解片內(nèi)ADC模塊的工作情況。
;3、本例的軟件設計思路:利用單片機片內(nèi)硬件資源TMR0和預分頻器,為ADC提供定時啟動信號。但是
;沒有利用其中斷功能,而是采用了軟件查詢方式,轉(zhuǎn)換結(jié)果采用了右對齊方式,
;A/D轉(zhuǎn)換的時鐘源選用了系統(tǒng)周期的8倍,本例對于ADC的電壓基準要求不高,
;我們就選用了電源電壓VDD和VSS作為基準電壓,
;4、對于A/D轉(zhuǎn)換過程是否完成也沒有利用ADC模塊的中斷功能,而是以軟件方式查詢其中啟動位GO是否為0。本例中選用的模擬通道為AN0。

;硬件連接
;1、撥碼開關(guān)S13第2必須置ON以打開ANO模擬輸入通道,S13其他位可關(guān)閉
;2、撥碼開關(guān)S5數(shù)碼管位信號必須置ON,但是為了影響顯示效果,最好把第8位關(guān)閉。
;3、撥碼開關(guān)S4數(shù)碼管段信號必須置ON。

;本實例原提供者:pic16論壇會員sxwy ,在此鳴謝sxwy同志共享本實例.
;由深圳市乾龍盛電子科技有限公司(PIC單片機學習網(wǎng))技術(shù)部鐘閨田(工程師)驗正并加于整理、注釋.
;網(wǎng)站 http://www.pic16.com   討論論壇:http://pic16.com/bbs/
;版權(quán)所有,轉(zhuǎn)載請注明出處,并不能去掉或改變文件中的說明文字。
;程序文件名“ADC.ASM"

;程序清單如下:

;***************************************************************************************
#include "p16f877A.inc"
 errorlevel -302
;***********************************
__CONFIG _DEBUG_OFF&_CP_ALL&_WRT_HALF&_CPD_ON&_LVP_OFF&_BODEN_OFF&_PWRTE_ON&_WDT_OFF&_HS_OSC;
;************************************
disbuf    equ 20h            ;顯示緩沖區(qū)20,21,22
ledtemp   equ 29h
vrevh     equ 2Ah
vrevl     equ 2Bh
SOUH      equ 40h            ;子程序入口高位
SOU       equ 41h            ;子程序入口低位
RLTH      equ 42h            ;子程序入口高位
RLT       equ 43h            ;子程序入口低位
CNT       equ 44h            ;子程序用寄存器
TEMP1     equ 45h            ;子程序用
TEMP2     equ 46h            ;同上
TEMP3     equ 47h            ;同上
TEMP4     equ 48h            ;同上
  
 
;*****************************************
 org 0000h
 NOP
 goto start 
 org 0005H
start:
 banksel TRISA
 movlw B'00000001'                 ;AN0>>>>DC input DC通道上輸入,注意,這里是打開RA0,但是在ICD上RA0 控制第二個LED.RA1
 movwf TRISA                       ;對應第一個LED,這一點在顯示結(jié)果時請自已區(qū)分
 movlw B'00000000'
 movwf TRISC
 movlw B'10000111'                 ;預分頻器給TMRO,且分頻比為1:256                      
 movwf OPTION_REG
 clrf  STATUS
 movlw 0xa0                        ;TMRO初值
 movwf TMR0
 ;***** ***************ADC初始化
 ;***** *****************
ATOD:
 banksel ADCON1
 movlw B'10001110'                 ;轉(zhuǎn)換結(jié)果右對齊,除RA0為模擬輸入口外,其他RA口跟RE口均為普通數(shù)字口
 movwf ADCON1
 CLRF  STATUS
 movlw B'01000001'                 ;轉(zhuǎn)換時鐘頻率為內(nèi)部時鐘的1/8,AN0通道,允許ADC工作,暫時不開啟AD轉(zhuǎn)換
 movwf ADCON0
 ;*****  ************************
 movlw 0x00
 movwf  disbuf
 movwf  disbuf+1
 movwf  disbuf+2

 CLRF   STATUS
 BTFSS  INTCON,T0IF                ;等待和循環(huán)檢測TMR0溢出中斷標志位
 GOTO   $-1                        ;如果沒有發(fā)生TMR0溢出中斷則返回循環(huán)檢測
 BCF    INTCON,T0IF                ;保證足夠的采樣時間
 movlw 0xa0                        ;TMRO初值
 movwf TMR0                 
 bsf    ADCON0,GO                  ;開始轉(zhuǎn)換
ADWAIT:
 btfsc ADCON0,GO
 goto ADWAIT                       ;等待轉(zhuǎn)換完成
 banksel ADRESH
 movf ADRESH,w                     ;讀電壓值高2位
 CLRF STATUS
 movwf vrevh
 BANKSEL ADRESL
 movf ADRESL,w                     ;讀電壓低8位
 CLRF STATUS
 movwf vrevl                       ;裝值放入接收寄存器VERVH,VERVL,為節(jié)省時間
                                   ;采樣值可以直接放入SOUH,SOU,但運算不方便
 ;*******測試用B'1100001111'**********************
; movlw 0x03                        ;這里可以手動往VREVH,VrevL兩個寄存器輸入10位AD值,以便用來測試是否能
                                   ;在LED上顯示正確的電壓值,如:30F=B'1100001111'(10位采樣AD值);
                                   ;30F的實際值是3.823V,那么在LED上將顯示3.82,寄存器21,22,23的值分別為3,8,2
 ;movwf vrevh                       ;程序正常采樣時這四句話要屏蔽;
; movlw 0x0f
; movwf vrevl
 ;************************************************
 movf vrevh,w
 movwf SOUH                        ;將被乘數(shù)放入SOUH,SOU
 movf vrevl,w
 movwf SOU
 movlw 0x00                        ;乘數(shù)放入RLTH,RLT
 movwf RLTH
 movlw 0x05                        ;
 movwf RLT                         ;這里表示:30F*5,結(jié)果放入RLTH,RLT,SOUH,SOU;
 call DUMUL                        ;>>>>>>5*V_gather,result>>>RLTH,RLT SOUH,SOU
 
 movlw 0x04                        ;準備除1024(400),放數(shù)入RLTH,RLT!!!!關(guān)鍵所以,要理解為重.....以下三步都是這樣的操作
 movwf RLTH                        ;除法子程序用SOUH,SOU除以RLTH,RLT,因為上面的乘法程序不會超過兩個字節(jié)
 movlw 0x00                        ;5V*3FF(10位滿值)=13FB,所以在調(diào)用除法程序前不用考慮RLTH,RLT是否有其他值而被值   
 movwf RLT                         ;0X0400沖掉
 call  DUDIV                       ;調(diào)用除法程序,商在SOUH,SOU,余數(shù)在RLTH,RLT,對于余數(shù)再*0A處理.然后再除 0x0400
 movf  SOU,w                       ;這樣的話除兩次就是小數(shù)點后兩位精度
 movwf disbuf                      ;這里得到電壓整數(shù)值
 movf RLTH,w
 movwf SOUH                        ;送余數(shù)到SOUH,SOU,然后*0A,為小數(shù)點后一位的運算作準備
 movf RLT,w
 movwf SOU 
 movlw 0x00
 movwf RLTH
 movlw 0x0A
 movwf RLT
 call DUMUL;                       >>>余數(shù)*10>>>RLTH,RLT SOUH,SOU,這里一般在souh,sou兩個字節(jié),為除法作準備
 
 movlw 0x04                        ;放除數(shù)0X0400
 movwf RLTH
 movlw 0x00
 movwf RLT
 call DUDIV                        ;原來的余數(shù)再除以0X400
 movf SOU,w 
 movwf disbuf+1                    ;//取商到第二位電壓值,這里是小數(shù)點的后一位
 movf RLTH,w                       ;然后將余數(shù)放到SOUH,SOU,為下一次乘法作準備
 movwf SOUH
 movf RLT,w
 movwf SOU 
 movlw 0x00
 movwf RLTH
 movlw 0x0A                        ;SOUH,SOU,RLTH,RLT為乘法入口
 movwf RLT
 call DUMUL                        ;>>>*10>>>RLTH,RLT SOUH,SOU,再乘以0A,出口在RLTH,RLT,SOUH,SOU
 movlw 0x04
 movwf RLTH
 movlw 0x00
 movwf RLT
 call DUDIV                       ;再除以0X0400,除完這一次后就不要再除了,因為是保留小數(shù)點后兩位
 movf SOU,w 
 movwf disbuf+2                   ;取電壓值,這里是小數(shù)點后兩位值  
 call Led_scan
 call delay_same1
 goto ATOD                        ;循環(huán)轉(zhuǎn)換
 

;*********************led scan*************************
;LED掃描程序,對應于ICD,下面程序可以優(yōu)化,請自已進行優(yōu)化
Led_scan: 
 movlw ledtable                   ;取得表頭地址
 movwf ledtemp                    
 movf disbuf+2,w                  ;取得偏移量
 addwf ledtemp,w                  ;表頭地址加上偏移量做為跳轉(zhuǎn)地址
 call ledconvert                  ;查表
 movwf PORTC                      ;送數(shù)碼管顯示
 movlw B'11101111'
 movwf PORTA                      ;點亮相應的數(shù)碼管
 call delay_same                  ;延時一段時間,保證顯示足夠亮度
 movlw 0ffh
 movwf PORTC                      ;清除顯示,防止干擾其他位顯示
 
 movlw ledtable   
 movwf ledtemp    
 movf disbuf+1,w  
 addwf ledtemp,w  
 call ledconvert  
 movwf PORTC      
 movlw B'11011111'
 movwf PORTA      
 call delay_same  
 movlw 0ffh       
 movwf PORTC      
 
 movlw ledtable
 movwf ledtemp
 movf disbuf,w
 addwf ledtemp,w
 call ledconvert
 andlw b'01111111'               ;加上小數(shù)點
 movwf PORTC
 movlw B'11111011'
 movwf PORTA
 call delay_same 
 movlw 0ffh
 movwf PORTC

 movlw 0ffh                     ;關(guān)閉所有顯示
 movwf PORTA
 return
;*******end for led send***************************************
;;----------------數(shù)碼管查表程序-------------------------------
ledconvert
 movwf 2
ledtable
 RETLW 0c0h                     ;0
 RETLW 0f9h                     ;1
 RETLW 0a4h                     ;2
 RETLW 0b0h                     ;3
 RETLW 099h                     ;4
 RETLW 092h                     ;5
 RETLW 082h                     ;6
 RETLW 0F8h                     ;7
 RETLW 080h                     ;8
 RETLW 090h                     ;9
 return
delay_same                      ;延時
 movlw 0F0h
 movwf 70h
lop0 decfsz 70h,1
 goto lop0
 return 
delay_same1
 movlw 0F0h
 movwf 71h
lop1 decfsz 71h,1
 goto lop1
 return 


;********************************************************************************
;//是16*16進制,如果要十進制,則要進行BCD轉(zhuǎn)換
;********************DUMUL test Date:0808,ok*************************************
;具體可參考相關(guān)子程序庫
;最大實現(xiàn)FFFF*FFFF=FFFE0001的算法 比如:0X08 0X43 * 0X00 0X10>>>0X84 0X30
;本程序?qū)崿F(xiàn)雙字節(jié)無符號數(shù)乘法。
;入口參數(shù):被乘數(shù)在SOUH:SOU中,乘數(shù)在RLTH:RLT中。
;出口參數(shù):結(jié)果在RLTH:RLT:SOUH:SOU中。
            IFNDEF       DUMUL1
            #DEFINE     DUMUL1                
DUMUL       MOVLW       .16
            MOVWF       CNT
            MOVF        SOU,W
            MOVWF       TEMP3
            MOVF        SOUH,W
            MOVWF       TEMP4
            CLRF        SOU         ;用于暫
            CLRF        SOUH        ;存
            CLRF        TEMP1       ;結(jié)
            CLRF        TEMP2       ;果
            BCF         STATUS,C
LOOP3       RRF         TEMP4,F
            RRF         TEMP3,F     ;將被乘數(shù)的某一位送到C中
            BTFSC       STATUS,C
            CALL        DUADD       ;將RLTH:RLT中的被乘數(shù)加上
            RRF         SOUH,F
            RRF         SOU,F
            RRF         TEMP2,F
            RRF         TEMP1,F     ;被乘數(shù)右移
            DECFSZ      CNT,F
            GOTO        LOOP3
            MOVF        SOUH,W      ;保存結(jié)果
            MOVWF       RLTH
            MOVF        SOU,W
            MOVWF       RLT
            MOVF        TEMP2,W      
            MOVWF       SOUH
            MOVF TEMP1,W
            MOVWF       SOU
            RETURN
            ;INCLUDE     "DUADD.ASM"
           ENDIF


;********************DUADD*********************
;本程序?qū)崿F(xiàn)雙字節(jié)無符號數(shù)加法。
;入口參數(shù):被加數(shù)在SOUH:SOU中,加數(shù)在RLTH:RLT中。
;出口參數(shù):結(jié)果在SOUH:SOU中,進位位在STATUS:C中。
;占用資源:W,024H,025H,026H,027H,一重堆棧。
           IFNDEF       DUADD1
            #DEFINE     DUADD1

DUADD       MOVF        RLT,W 
            ADDWF       SOU,F
            MOVF        RLTH,W
            BTFSC       STATUS,C
            INCFSZ      RLTH,W
            ADDWF       SOUH,F
            RETURN
           ENDIF

;********************DUDIV*********************
;本程序?qū)崿F(xiàn)雙字節(jié)無符號數(shù)除法。
;入口參數(shù):被除數(shù)在SOUH:SOU中,除數(shù)在RLTH:RLT中。
;出口參數(shù):商在SOUH:SOU中,余數(shù)在RLTH:RLT中.
;占用資源:W,STATUS,023H,024H,025H,026H,027H,028H,029H,一重堆棧。
;說    明: 用戶在調(diào)用該子程序之前必須確定除數(shù)不為零,否則得不到正確結(jié)果.

            IFNDEF       DUDIV1
            #DEFINE     DUDIV1
                        
DUDIV       MOVLW       .16         ;循環(huán)16次
            MOVWF       CNT
            CLRF        TEMP2
            CLRF        TEMP1       ;TEMP2:TEMP1得到余數(shù)
            BCF         STATUS,C
            RLF         SOU,F
            RLF         SOUH,F
            RLF         TEMP1,F
            RLF         TEMP2,F
LOOP79      MOVF        RLTH,W
            SUBWF       TEMP2,W     ;檢測是否余數(shù)大于除數(shù)
            BTFSS       STATUS,Z
            GOTO        NOCHK
            MOVF        RLT,W
            SUBWF       TEMP1,W     ;如果高位相等則檢測低位
NOCHK       BTFSS       STATUS,C    
            GOTO        NOGO
            MOVF        RLT,W       ;余數(shù)減除數(shù)
            SUBWF       TEMP1,F
            BTFSS       STATUS,C
            DECF        TEMP2,F
            MOVF        RLTH,W
            SUBWF       TEMP2,F
            BSF         STATUS,C    ;結(jié)果中移入1
NOGO        RLF         SOU,F
            RLF         SOUH,F
            RLF         TEMP1,F
            RLF         TEMP2,F
            DECFSZ      CNT,F        
            GOTO        LOOP79
            BCF         STATUS,C
            RRF         TEMP2,W
            MOVWF       RLTH
            RRF         TEMP1,W     ;恢復余數(shù)
            MOVWF       RLT
            RETLW       0
           ENDIF
;**************************************************
 end


;    進入該實戰(zhàn)演練的工序流程如下:
;    1.創(chuàng)建源文件和編輯源文件;在此介紹一種不同于前面講的創(chuàng)建源文件的方法,用Windows附件中的”記事本”
;   這個為大家所熟知和好用的文件編輯器,并且可以方便的加入中文注釋.不過有兩點需要注意,一是注釋前面的
;   分號”;”必須用西文半角輸入;二是必須用”.asm”擴展名存儲到事先建立的一個專用子目錄下.
;    2.打開MPLAB集成開發(fā)環(huán)境:首先在WINDOWS環(huán)境下,選用開始>程序>Microchip MPLAB>MPLAB命令,啟動MPLAB
;   并進入MPLAB的桌面.
;    3.創(chuàng)建項目:選用菜單File>New或Project>New Project,在事先建立的一個專用子目錄下創(chuàng)建一個新項目,將
;   用記事本創(chuàng)建的源文件加入到該項目中.
;    4.建立項目中的目標文件:選擇菜單Project >Build All(項目>建立所有文件),MPLAB將自動調(diào)用MPASM將項目
;   文件管理下的源文件(.asm)匯編成十六進制的目標文件(.hex).

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
婷婷久久综合九色综合伊人色| 91色视频在线| 91免费视频大全| 欧美日本不卡视频| 亚洲国产精品成人综合色在线婷婷| 亚洲精品免费在线观看| 国产在线看一区| 欧美怡红院视频| 国产精品少妇自拍| 国产一区二区三区美女| 色婷婷激情综合| 国产欧美日韩综合| 麻豆精品视频在线| 欧美美女一区二区在线观看| 国产精品久久三| 国产精品影视在线观看| 在线不卡的av| 久久99最新地址| 欧美精品xxxxbbbb| 亚洲成av人**亚洲成av**| 97精品久久久久中文字幕| 国产无一区二区| 国产呦精品一区二区三区网站| 日韩一区二区三区视频| 天堂蜜桃91精品| 欧美体内she精高潮| 一区二区三区四区不卡视频| av电影在线观看一区| 国产日产欧美一区二区三区| 国产91在线观看| 国产欧美精品一区| 高清不卡一区二区| 日本一区二区不卡视频| 成人精品视频.| 国产精品久99| 日本国产一区二区| 国产精品美女一区二区| av电影天堂一区二区在线观看| 国产精品大尺度| caoporn国产精品| 亚洲欧美激情视频在线观看一区二区三区 | 久久精品人人做人人综合| 日韩中文字幕一区二区三区| 欧美三级视频在线观看| 亚洲综合视频在线观看| 欧美丝袜自拍制服另类| 三级精品在线观看| 日韩一区二区免费视频| 麻豆91小视频| 中文字幕国产一区二区| 色哟哟一区二区三区| 亚洲欧美日韩久久| 91精品国产欧美一区二区| 狠狠狠色丁香婷婷综合激情| 日本一区二区三区久久久久久久久不 | 色婷婷综合中文久久一本| 伊人性伊人情综合网| 欧美日韩一二三区| 日本午夜一本久久久综合| 久久婷婷色综合| 一道本成人在线| 无码av免费一区二区三区试看| 777a∨成人精品桃花网| 国产a视频精品免费观看| 亚洲情趣在线观看| 日韩无一区二区| a4yy欧美一区二区三区| 性欧美大战久久久久久久久| 久久精品人人爽人人爽| 欧美性受xxxx| 成人av网站在线| 日韩成人免费在线| 国产成人一级电影| 亚洲 欧美综合在线网络| 日韩午夜中文字幕| 成人激情黄色小说| 日韩和欧美一区二区| 日本一区免费视频| 7777精品伊人久久久大香线蕉最新版| 国产一区二区三区美女| 亚洲超丰满肉感bbw| 国产精品美女久久久久久久久久久 | 欧美日韩精品一区二区三区四区| 国内精品国产三级国产a久久| 亚洲欧美日韩国产综合在线| 精品少妇一区二区三区视频免付费| 91污在线观看| 国产精品综合一区二区三区| 亚洲大型综合色站| 综合在线观看色| 久久你懂得1024| 欧美一区欧美二区| 欧亚洲嫩模精品一区三区| 国产毛片精品视频| 蜜臀va亚洲va欧美va天堂| 亚洲欧美日韩国产综合| 国产精品亲子乱子伦xxxx裸| 精品999在线播放| 欧美精品乱码久久久久久| 成人免费高清在线观看| 久久精品99国产精品日本| 日一区二区三区| 亚洲在线免费播放| 亚洲精品视频在线| 亚洲欧洲日产国产综合网| 欧美国产一区视频在线观看| 欧美成人免费网站| 日韩亚洲国产中文字幕欧美| 欧美喷水一区二区| 欧美日韩在线精品一区二区三区激情| 北条麻妃一区二区三区| 国产成人精品免费看| 国产精品中文有码| 国产一区 二区| 激情国产一区二区| 韩国三级电影一区二区| 国产一区二区三区精品欧美日韩一区二区三区 | 99九九99九九九视频精品| 国产成人精品一区二| 丰满少妇在线播放bd日韩电影| 国产精品亚洲专一区二区三区| 国产麻豆视频一区二区| 高清不卡在线观看av| 成人一区二区三区在线观看| 成人黄色小视频| 91丨九色porny丨蝌蚪| 91小视频在线| 欧美日本免费一区二区三区| 日韩一区二区影院| 欧美mv日韩mv| 国产精品福利影院| 亚洲国产美女搞黄色| 日本aⅴ精品一区二区三区| 免费看日韩a级影片| 国产成人免费视频网站| 色婷婷久久99综合精品jk白丝| 欧美视频在线不卡| 日韩色视频在线观看| 精品国产乱码久久久久久1区2区| 久久久精品欧美丰满| 成人免费视频在线观看| 亚洲一区二区三区激情| 寂寞少妇一区二区三区| 99视频一区二区三区| 欧美三级资源在线| 日韩视频在线观看一区二区| 国产人伦精品一区二区| 一区二区三区不卡在线观看 | 久久精品国产99国产精品| 岛国精品在线观看| 欧美视频自拍偷拍| 久久这里只有精品首页| 一区二区中文视频| 免费成人小视频| 91视频精品在这里| 日韩欧美一卡二卡| 国产精品成人免费精品自在线观看| 一区二区在线免费| 国产高清精品久久久久| 欧美日韩在线直播| 欧美国产1区2区| 日韩高清在线观看| 色婷婷香蕉在线一区二区| 久久网站最新地址| 日韩高清中文字幕一区| 色哟哟一区二区在线观看| 久久日一线二线三线suv| 一级特黄大欧美久久久| 高清不卡在线观看| 日韩午夜精品视频| 亚洲午夜久久久| aaa欧美色吧激情视频| 久久只精品国产| 久久精品国产澳门| 欧美电影一区二区| 亚洲国产精品久久久久秋霞影院 | 91老师国产黑色丝袜在线| 91精品久久久久久久91蜜桃| 国产精品久久久久精k8| 精品一区二区av| 51精品秘密在线观看| 一区二区三区四区激情| 成人丝袜18视频在线观看| 精品美女被调教视频大全网站| 亚洲国产一区二区视频| 日本高清成人免费播放| 亚洲国产精品二十页| 国产成人av一区| 亚洲精品一区二区三区四区高清| 日韩和欧美一区二区三区| 欧美色图在线观看| 一区二区三区国产豹纹内裤在线| av电影在线观看不卡| 国产精品久久99| 91在线观看下载| 欧美亚洲动漫制服丝袜| 一区二区三区日韩| 欧美性受xxxx黑人xyx| 午夜精品久久久久久不卡8050| 欧美日韩性生活|