標(biāo)題:
PIC12F675兩通道的AD轉(zhuǎn)換的匯編程序
[打印本頁(yè)]
作者:
51黑ff
時(shí)間:
2016-9-12 00:17
標(biāo)題:
PIC12F675兩通道的AD轉(zhuǎn)換的匯編程序
完整程序下載:
PIC12F675兩通道的AD轉(zhuǎn)換的匯編程序.zip
(1.81 KB, 下載次數(shù): 51)
2016-9-12 00:16 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
;程序功能:上電開機(jī):PIN5為高電平,綠燈亮;PIN2,PIN3為低電平,紅燈滅;
; 輪流檢測(cè)PIN6,PIN7腳電平,欠壓3.9V,10V,紅燈亮,綠燈滅,過(guò)壓5.9V,15.9V
; 紅燈亮,綠燈滅,alram為TTL高電平,過(guò)壓鎖死
LIST P=12F675
INCLUDE <P12F675.INC>
__CONFIG(B'11000101110100')
;Highest band gap voltage,0,0,Data memory is not protected
;Program memory is code-protected,BOD enabled,MCLR pin is MCLR function
;PWRT enabled,WDT disabled,INTOSC oscillator
;**************************************
READH EQU 2Ah ;讀到的高2位數(shù)據(jù)
READL EQU 2Bh ;讀到的低8位數(shù)據(jù)
SOUH EQU 40h ;欠壓設(shè)置,高2位存儲(chǔ)地址
SOU EQU 41h ;欠壓設(shè)置,低8位存儲(chǔ)地址
RLTH EQU 42h ;過(guò)壓設(shè)置,高2位存儲(chǔ)地址
RLT EQU 43h ;過(guò)壓設(shè)置,低8位存儲(chǔ)地址
ORG 0000H
GOTO MAIN
ORG 0004H
GOTO ADBEGIN
ORG 0030H
MAIN
BCF STATUS,RP0 ;BANK 0
CLRF GPIO
MOVLW 07H
MOVWF CMCON ;關(guān)閉比較器
BSF STATUS,RP0 ;BANK 1
CALL 3FFH ; 讀內(nèi)部振蕩出廠校準(zhǔn)字,返回值在W寄存器內(nèi)
MOVWF OSCCAL ;校準(zhǔn)晶振
MOVLW B'00001011';TRISIO 三態(tài)控制器
MOVWF TRISIO ;設(shè)置TRISIO方向控制器,GP0,GP1,GP3為輸入口
MOVLW B'00010011'
MOVWF ANSEL ;8分頻晶振,AN0AN1為模擬口,AN2AN3為數(shù)字口
BANKSEL OPTION_REG
MOVLW B'00000000';將預(yù)分頻器分配給TIMER0 模塊,2分頻
MOVWF OPTION_REG ;
BANKSEL INTCON
MOVLW B'10100000' ;允許全局中斷,禁止外圍中斷,允許TRMO中斷,禁止GP2/INT外部中斷
MOVWF INTCON ;禁止GPIO端口電平變化中斷,TMR0寄存器沒(méi)有溢出,未發(fā)生GP2/INT中斷
;GP5:GP0 引腳電平均未發(fā)生變化
MOVLW 02H
MOVWF 24H ;AD通道設(shè)置選擇
MOVLW D'10'
MOVWF 25H ;過(guò)壓后延時(shí)采樣,10*90uS=900uS
;********************************************
;欠壓設(shè)置2.5V,5V路對(duì)應(yīng)值3.8V,15V路對(duì)應(yīng)值10V
MOVLW 0002H
MOVWF SOUH
MOVLW 0000H
MOVWF SOU
;*********************************************
;過(guò)壓設(shè)置值3.9V,5V路對(duì)應(yīng)值5.9V,15V路對(duì)應(yīng)15.9V
MOVLW 0003H
MOVWF RLTH
MOVLW 0020H
MOVWF RLT
MOVLW B'10000001'
MOVWF ADCON0 ;右對(duì)齊,參考電壓Vdd,模擬通道0
BANKSEL TMR0
MOVLW D'242'
MOVWF TMR0
GOTO $
;*********************************************
;定時(shí)中斷后開始AD轉(zhuǎn)換
ADBEGIN
BTFSC INTCON,T0IF ;是否是定時(shí)器TMR0中斷
BANKSEL ADCON0
BSF ADCON0,GO ;開始轉(zhuǎn)換
ADWAIT
BTFSC ADCON0,GO
GOTO ADWAIT ;等待轉(zhuǎn)換完成
;**********************************************
;AD轉(zhuǎn)換后數(shù)據(jù)判斷處理
READ
BANKSEL ADRESH ;自動(dòng)設(shè)置存儲(chǔ)地址bank
MOVF ADRESH,W ;讀電壓值高2位,
CLRF STATUS
MOVWF READH ;讀到的高2位數(shù)據(jù)放到vrevh寄存器
BANKSEL ADRESL ;自動(dòng)設(shè)置存儲(chǔ)地址bank
MOVF ADRESL,w ;讀電壓低8位
CLRF STATUS
MOVWF READL
;*****************************************************
LOWPOWER
MOVF SOU,W
SUBWF READL,W
BTFSS STATUS,C;沒(méi)有借位,跳過(guò)
GOTO JUMP1
MOVF SOUH,W
CONTIUE1
SUBWF READH,W
BTFSS STATUS,C ;沒(méi)有借位,跳過(guò)
GOTO ALARM0
OVERPOWER
MOVF RLT,W
SUBWF READL,W
BTFSS STATUS,C ;沒(méi)有借位,跳過(guò)
GOTO JUMP2
MOVF RLTH,W
CONTIUE2
SUBWF READH,W
BTFSS STATUS,C ;;沒(méi)有借位,跳過(guò)
GOTO NORMAL
GOTO ALARM1
;*****************************************
;時(shí)間到,準(zhǔn)備選擇通道和賦值
LOOP
DECFSZ 24H,F
GOTO SKIP
BANKSEL ADCON0
MOVLW B'10000001'
MOVWF ADCON0 ;右對(duì)齊,參考電壓Vdd,模擬通道0
MOVLW D'2'
MOVWF 24H
GOON
BCF INTCON,T0IF;恢復(fù)定時(shí)器繼續(xù)判斷
BANKSEL INTCON
BSF INTCON,7
BANKSEL TMR0
MOVLW D'242'
ADDWF TMR0,F
GOTO $
;***************************************************
;子程序
SKIP
BANKSEL ADCON0
MOVLW B'10000101'
MOVWF ADCON0 ;右對(duì)齊,參考電壓Vdd,模擬通道0
GOTO GOON
JUMP1
INCFSZ SOUH,W
GOTO CONTIUE1
JUMP2
INCFSZ RLTH,W
GOTO CONTIUE2
NORMAL
BANKSEL GPIO
BTFSC 22H,0 ;為0跳過(guò)
GOTO BACK
BSF GPIO,2 ;綠燈亮
BCF GPIO,4 ;紅燈滅
BACK
BCF 22H,0
GOTO LOOP
ALARM0
BSF 22H,0
BANKSEL GPIO
BCF GPIO,2 ;綠燈滅
BSF GPIO,4 ;紅燈亮
GOTO LOOP
ALARM1
DECFSZ 25H,F ;為0則跳
GOTO LOOP
BANKSEL GPIO
BSF GPIO,5 ;關(guān)機(jī)
BCF GPIO,2 ;紅燈亮
BSF GPIO,4 ;綠燈滅
GOTO $
END
復(fù)制代碼
作者:
mickeyeva2
時(shí)間:
2017-5-5 15:03
感謝分享,
作者:
lxz335
時(shí)間:
2017-12-1 13:32
樓主有沒(méi)有用c語(yǔ)言寫的啊
作者:
mahn168
時(shí)間:
2017-12-24 15:45
好東西。收藏
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1