Re: 74154IC4對16解碼
|
||||
---|---|---|---|---|
新會員
|
編碼比較簡單RC1輸入,RA3~RA0輸出就0001
但解碼4對16查表,還是不懂 是利用哪些指令做判斷 編碼我是用BTFSC和BTFSS做判斷 解的話想不出來
發表於: 2005/1/17 22:45
|
|||
|
Re: PIC16F716的ADC問題
|
||||
---|---|---|---|---|
版主
|
請利用右方「搜尋」功能,找「貼程式」這三個字。以前有人說明得很清楚了。
發表於: 2005/1/17 22:13
|
|||
|
Re: 18F452 BOOTLOAD Firmware 的問題
|
||||
---|---|---|---|---|
版主
|
打電話問一下 Steven Lin 吧,
Tel: 02-2500-6610
發表於: 2005/1/17 15:00
|
|||
|
Re: PIC16F716的ADC問題
|
||||
---|---|---|---|---|
初級會員
|
呃...請問一下...
程式碼要怎麼貼格式才不會變掉,謝謝。
發表於: 2005/1/17 14:01
|
|||
|
Re: PIC16F716的ADC問題
|
||||
---|---|---|---|---|
初級會員
|
謝謝版主的回覆
SIM可以模擬AD輸入嗎?請教一下謝謝。 我將我發生的狀況跟程式貼上,如下: MCU為 PIC16F716 VDD=3V AD的參考電壓為VDD AD輸入腳為 RA1(第18腳) LED輸出為 RB1 狀況為: 1. Brown Out Detect 選擇 On 時,AD輸入≧2.7V MCU就當住 2. Brown Out Detect 選擇 Off 時, AD輸入慢慢增加至 2.5V ,MCU動作正常 AD輸入再增加至 5V ,MCU動作也正常 AD輸入再降至 0V , AD輸入再瞬間從 0V 升至 5V ,MCU當住 (只要AD輸入瞬間從 0V 升至 3V以上 ,MCU就會當住) 不曉得為什麼會這樣?是設定有問題嗎?還是有其它原因? 如果有人知道煩請不吝指導,謝謝。(百思不解中) 我再試試,有什麼發現再貼上來。 程式碼如下: list p=16f716,r=dec ; list directive to define processor include "c:\inc\p16f716.inc" ;Variable definition ActiveFlag equ 37h ADValue equ 38h tempW equ 41h tempStatus equ 42h INTADCount1 equ 49h INTADCount2 equ 50h INTADCount3 equ 55h DelayTime equ 52h Count1 equ 53h Count2 equ 54h ;Program Segment org 00h nop goto start org 04h goto ISR start call Initial banksel OPTION_REG movlw b'11000000' movwf OPTION_REG banksel PIE1 bcf PIE1,ADIE banksel INTCON movlw b'00010000' movwf INTCON bsf INTCON,GIE ;-------------------------------------- banksel PIR1 bcf PIR1,ADIF banksel ADCON0 movlw b'01001000' movwf ADCON0 bsf ADCON0,ADON banksel ADRES clrf ADRES banksel PIE1 bsf PIE1,ADIE bsf INTCON,PEIE ;-------------------------------------- WaitInt banksel PORTB bsf PORTB,1 call ADDelay2 banksel PORTB bcf PORTB,1 banksel ADCON0 bsf ADCON0,GO_DONE;.........ADgo call ChkADValue call ADDelay2 btfsc ActiveFlag,0 goto WaitInt goto end1 Initial movlw 1h movwf ActiveFlag movlw 0h movwf ADValue movwf tempW movwf tempStatus movlw 5h movwf DelayTime banksel TRISA movlw b'00000010' movwf TRISA banksel PORTA movlw b'00000000' movwf PORTA banksel TRISB movlw b'00000001' movwf TRISB banksel PORTB movlw b'00000000' movwf PORTB banksel ADCON1 movlw b'00000100' movwf ADCON1 return ISR movwf tempW swapf STATUS,w movwf tempStatus banksel PIR1 btfsc PIR1,ADIF call GetADValue swapf tempStatus,w movwf STATUS swapf tempW,f swapf tempW,w retfie StopActive banksel INTCON movlw b'00010000' movwf INTCON bcf INTCON,GIE ;bcf INTCON,PEIE; ;banksel PIE1; ;bcf PIE1,ADIE; movlw 0h movwf ActiveFlag banksel PORTB bcf PORTB,1 PowerLed banksel PORTB bsf PORTB,1 call TestDelay bcf PORTB,1 call TestDelay decfsz DelayTime goto PowerLed movlw 5h movwf DelayTime banksel PORTB bcf PORTB,1 return ; GetADValue btfss ActiveFlag,0 goto ExitGetADValue banksel ADRES movf ADRES,w movwf ADValue banksel PIR1 bcf PIR1,ADIF return ExitGetADValue banksel PIR1 bcf PIR1,ADIF return ; ChkADValue btfss ActiveFlag,0 goto ExitChkADValue movlw D'119' bcf STATUS,C bcf STATUS,DC bcf STATUS,Z subwf ADValue,w btfsc STATUS,Z goto ADStop btfsc STATUS,C goto ADStop return ADStop call StopActive banksel ADCON0 bcf ADCON0,ADON return ExitChkADValue return ; ADDelay2 movlw D'66' movwf INTADCount1 movlw D'100' movwf INTADCount2 movlw D'100' movwf INTADCount3 ADDelay2Loop decfsz INTADCount3 goto ADDelay2Loop movlw D'100' movwf INTADCount3 decfsz INTADCount2 goto ADDelay2Loop movlw D'100' movwf INTADCount2 decfsz INTADCount1 goto ADDelay2Loop return ; TestDelay movlw D'250' movwf Count1 movwf Count2 TestLoop decfsz Count2 goto TestLoop movlw D'250' movwf Count2 decfsz Count1 goto TestLoop return end1 end
發表於: 2005/1/17 13:53
|
|||
|
Re: 請問A/D轉換
|
||||
---|---|---|---|---|
版主
|
MPLAB IDE 有提供軟體模擬功能,名稱叫 MPLAB SIM
用用看比較不會像瞎子摸象般找不到問題之所在。
發表於: 2005/1/17 13:36
|
|||
|
Re: 請問關於A/D轉換問題
|
||||
---|---|---|---|---|
版主
|
沒錯! 所以選用適當的震盪頻率與預除器的值是可以達到最快的轉換速率,OSC 不一定是越高越好。
以書上為例: 如使用38.4MHz就可以得到約 5uS 的轉換速度 Tad=(1/38.4MHz) * 16 = 41.67nS conversion rate = 12 Tad = 12 * 41.67nS = 5 uS 按書上說最小的TAD必須大於 385 nS (Table 25-21, page 372), 如果小於此時間就轉換結果就會不準。
發表於: 2005/1/17 13:32
|
|||
|
Re: 74154IC4對16解碼
|
||||
---|---|---|---|---|
版主
|
很簡單!
用軟體建一個 4 對16的查表輸出就可以了。
發表於: 2005/1/17 13:09
|
|||
|
74154IC4對16解碼
|
||||
---|---|---|---|---|
新會員
|
請問原本用74154IC做4對16解碼,用16F877做編碼
74154輸出為負電,不符合我要正輸出,利用多顆正反器來 達到正輸出,這樣體積就會變大,想說利用一顆ㄶF877來做 4對16解馬來取代74154IC RA3~RA0做4輸入,RC~RD做16輸出 如RA3~RA0都為0,即RC0輸出,0001即RC1輸出 0010即RC2輸出,0011即RC3輸出,以此類推 該用什麼方式作判斷 謝謝
發表於: 2005/1/16 22:18
|
|||
|