Re: 請問PIC16F877如何除頻?
|
||||
---|---|---|---|---|
新會員
|
下面是我的程式流程
我有寫一個疊代的迴圈 但是結果一樣 不知道這樣是不是版大的意思 還是說還要在寫一個迴圈?? 麻煩了~~ ====================== ;;;;程式宣告 ;;;;定義自訂變數暫存器名稱 ;;;;設定程式組譯起始位置 org 0x00 nop goto mainprogram ;;;;主程式 mainprogram call Initial MainLoop call Oper ;運算X(k+1)=A*X(k)+B*U call PortC_Out ;輸出X(k)到PortC call XK1TOXK ;疊代X(k+1)到X(k) goto MainLoop ;初始化副程式 ;給使用者設定係數 Initial 起始Xk=0 banksel PORTC clrf PORTC ;將PORTC的輸出清除為零 banksel TRISC clrf TRISC banksel ADCON1 movlw B'00001110' movwf ADCON1 bsf TRISA,0 banksel ADCON0 movlw B'10000001' movwf ADCON0 return ;;;;運算 ;;;;XK1TOXK副程式 ;;;;A/D轉換副程式 ;;;; END
發表於: 2005/6/22 6:57
|
|||
|
請問PIC16F877如何除頻?
|
||||
---|---|---|---|---|
新會員
|
因為我目前使用20Mhz的石英震盪器
我設計一個DSP系統 需用到疊代運算 XK1=A*XK+B*U YK=XK A=0.9048 B=0.0952 U=2V電壓輸入經過AD轉換成AD_variable值 XK=起始為0 當我使用PORTC輸出 經過我自己所組裝的D/A電路 在示波器上所看到的只是2V電壓 理論上輸出應該是會產生一個步階信號慢慢的逼近2V電壓才對 所以我這樣的情形不知道是不是工作頻率太快 請問能夠使用除頻嗎 請問該如何使用 麻煩各位專家了 謝~~
發表於: 2005/6/21 10:02
|
|||
|
Re: 請問AD轉換 可輸入sin波嗎
|
||||
---|---|---|---|---|
新會員
|
謝謝各位專家大大的答覆...
我瞭解了.. Thanks..
發表於: 2005/6/21 8:00
|
|||
|
請問AD轉換 可輸入sin波嗎
|
||||
---|---|---|---|---|
新會員
|
如題
我使用信號產生器輸入(RA0)一個sin波信號 再使用轉換後的值 和另一個值作相乘EX:'B00000010'*ADRESH ->使用PORTC及PWM輸出 我的結果輸出怪怪的 不知道這樣可行嗎 請問 (1)我所使用之PIC16F877單晶片能夠接受負的電壓嗎 (2)這款單晶片能接受的工作電壓最大是不是只能到達5V 請求各位專家大大替我解惑 謝~~
發表於: 2005/6/19 11:42
|
|||
|
請問AD轉換與乘法問題??
|
||||
---|---|---|---|---|
新會員
|
請問
(1)AD轉換出來的訊號是何種訊號?是0101...嗎? (2)若是如此 我可以給自己所設定的暫存器一個值(例如10100011) 再與AD輸出值相乘嗎 再做輸出嗎? (3)如何判定AD輸出的訊號值為何(例如:RA0輸入3V->輸出為何?) (4)以下是我所撰寫的程式 我希望使用PWM做輸出 但是結果好像不是我所寫要的 可否麻煩各位專家幫我看一下哪有錯 --我希望RA0輸入3V經過AD輸出 再與乘數AB相乘 再使用PWM輸出Mux_L 使用示波器擷取RC2訊號-- LIST P=16F877, R=DEC INCLUDE <P16F877.INC> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; AD_variable EQU 0x20 ; XY EQU 0x21 ; AB EQU 0x22 ; Mux_H EQU 0x23 ; Mux_L EQU 0x24 ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; org 0x00 nop goto mainprogram ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; mainprogram call initial call ADtrans call DSP_Oper call MuxABXY call PWM_Out ;;;;;;;;;;;;;;;;;;;;;;;;; initial movlw B'00000101' ; movwf AB ;乘數 banksel TRISC movlw B'00000000' movwf TRISC banksel PORTC movlw B'00000000' movwf PORTC movlw 0xff movwf PR2 banksel TMR2 clrf TMR2 movlw 0x00 movwf CCPR1L movlw 0x0C movwf CCP1CON movlw 0x00 movwf T2CON bsf T2CON,TMR2ON banksel ADCON1 movlw B'00001110' movwf ADCON1 bsf TRISA,0 bcf STATUS,RP0 movlw B'10000001' movwf ADCON0 banksel PORTC bsf PORTC,3 return ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ADtrans banksel ADCON0 bsf ADCON0,GO Wait btfsc ADCON0,GO goto Wait movf ADRESH,W movwf AD_variable return ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DSP_Oper movf AD_variable,W movwf XY return ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 2個8bit暫存器XY、AB相乘,將16bit結果分別存於2個8bit暫存器Mux_H與Mux_L中 MuxABXY clrf Mux_H clrw MuxLoop addwf XY,W btfsc STATUS,C incf Mux_H,f decfsz AB,f goto MuxLoop movwf Mux_L return ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; PWM_Out movf Mux_L,W banksel CCPR1L movwf CCPR1L return ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; END PS:我所使用的是PIC16F877單晶片 麻煩各位專家大人.... 謝~~
發表於: 2005/5/21 13:22
|
|||
|
Re: 請問安裝轉移函數 in PIC using operating System method問題...
|
||||
---|---|---|---|---|
新會員
|
那您的意思是說
若我堅持要用pic16f877及組合語言 利用作業系統中斷方式 要完成安裝轉移函數(濾波器)是不行的嗎??
發表於: 2005/3/19 15:56
|
|||
|
請問安裝轉移函數 in PIC using operating System method問題...
|
||||
---|---|---|---|---|
新會員
|
我想要寫一套DSP程式(轉移函數G(z)->含有加法.乘法與Daley)
安裝進入PIC單晶片 我希望在寫程式語言(組合語言)的時候 使用作業系統的方式 像DOS中斷一樣 根據AX的值來執行不同的動作 但是我該如何去查PIC內部作動的指令 將我想要的一個一個工作步驟放入指定的暫存器中 再來作CALL的動作呢 PS:我先說明一下 我所使用的是PIC16F877單晶片 不知此塊單晶片是否能夠執行這樣子的工作 還是說需要用別塊PIC? 麻煩各位瞭解的大大 能夠替我解惑....謝~~
發表於: 2005/3/15 14:28
|
|||
|
2個8bit暫存器A、B相乘問題~~
|
||||
---|---|---|---|---|
新會員
|
我要將2個8bit暫存器A、B相乘,
將16bit結果分別存於2個8bit暫存器MuxHigh與MuxLow中 以下是我的程式: ============================================== MuxAB clrf MuxHigh ; clrw Loop addwf A,W btfsc STATUS,C incf MuxHigh,F decfsz B,F goto Loop movwf MuxLow return ======================================= 我想要累加A暫存器,共累加B次 (1)而我的A=1.8472 B=0.8765 那我的A與B該怎麼宣告 是不是要將A.B值 先畫成010101...的形式 (2)最後若我想要在portC作輸出 該怎麼設定啊 PS:我是用PIC16F877晶片.. 麻煩一下~~ 謝...
發表於: 2004/11/22 10:17
|
|||
|