Re: AD產生不同頻率輸出問題
|
||||
---|---|---|---|---|
初級會員
|
參考書上一段PWM範例程式如下:
banksel PR2 MOVLW .127 ; 設定PR2=128us 週期之PWM波形 MOVWF PR2 BANKSEL CCPR1L MOVLW .40 ; 達成DUTYCYCLE=40us MOVWF CCPR1L BANKSEL TRISC BCF TRISC,2 ; ... 原本我曾嘗試將AD輸出的值放入 CCPR1L 如下: MOVLW AD_TEMP ; MOVWF CCPR1L ; 而後發現調整AD只能變動DUTYCYCLE; 1.所以現在我應將AD輸出的值放入PR2? 2.那我要如何放入 PWM Period/2 的值在CCPR1L? 3.另我原想規劃TIMER1中斷(1ms),如依提供方法去做.現在還需要用到? 謝謝賜教!
發表於: 2004/10/21 14:00
|
|||
|
AD產生不同頻率輸出問題
|
||||
---|---|---|---|---|
初級會員
|
使用PIC16C73,不知該如何將AD輸出的值,設計搭配計時器TIMER1 ,產生不同頻率輸出?我的AD範圍由500~6000, 欲設計DUTYCYCLE=50% ,可隨AD值變化產生不同頻率 ,
發表於: 2004/10/21 0:43
|
|||
|
Re: ADC (16C73) 輸出問題
|
||||
---|---|---|---|---|
初級會員
|
問題已解,將MOVLW 05H ; 5次
改為movlw 0D ;13次 後 就可顯示至8160, 謝謝各位前輩指教!
發表於: 2004/10/18 21:47
|
|||
|
Re: ADC (16C73) 輸出問題
|
||||
---|---|---|---|---|
初級會員
|
謝謝熱心指導
我若想X32 就須左移 5 故 255X32=8160 程式一段如下,請問這樣就可顯示X32的值? ;將DAT1內之十六進位之值轉成十進位值存放於D1,D0內 HTOD2: movf ADRES,W ; 將AD 值載入W MOVWF DAT1 ; DAT1=W MOVF FSR,W MOVWF 2EH MOVLW 05H ; 5次 MOVWF TEMP CLRF D0 CLRF D1 BCF STATUS,C ; LOOPD RLF DAT1; 左移入CF RLF D1 RLF D0 DECFSZ TEMP ;共須移位5次完成後跳格回 GOTO ADJD1 ;位值調整副程式 MOVF 2EH,W ;將原存於2EH之FSR取回W MOVWF FSR RETLW 00H ADJD1 MOVLW D1 MOVWF FSR CALL ADJB MOVLW D0 MOVWF FSR CALL ADJB GOTO LOOPD
發表於: 2004/10/18 19:54
|
|||
|
Re: ADC (16C73) 輸出問題
|
||||
---|---|---|---|---|
初級會員
|
是的,因我計劃從0250~6000,劃分25段,每段增加25,
不知是否有相關範例可供參考,THANKS
發表於: 2004/10/18 17:26
|
|||
|
Re: ADC (16C73) 輸出問題
|
||||
---|---|---|---|---|
初級會員
|
我是想,既然16C73有一個ADRES (00~FF=0~255)那要顯示至0~9999並非不可行,只要乘上倍率後,存至兩暫存器,再轉成7-SEG顯示.如依此或可解決,只是不知有無此一段範例程式.
發表於: 2004/10/17 13:14
|
|||
|
ADC (16C73) 輸出問題
|
||||
---|---|---|---|---|
初級會員
|
請問該如何將AD值正確輸出至4位數7段顯示器上,但顯示器最大只能顯示0255, 因PIC 16C73
只有一個AD暫存器(ADRES) ? 假使如此,有何辦法解決? *不 換MICROCONTROLLER為前提* --------------------------------------------------------------------------
發表於: 2004/10/14 16:09
|
|||
|
Re: 0~9999計數程式,請教各位
|
||||
---|---|---|---|---|
初級會員
|
謝謝版主的回應建議,我會就你的建議研究流程.
發表於: 2004/10/4 12:56
|
|||
|
Re: 0~9999計數程式,請教各位
|
||||
---|---|---|---|---|
初級會員
|
感謝版主的友善回應,但因敝人對pic摸索中.只能參照書本範例截取片段,現改寫如下
但還是有問題,電路為RB0~7接7 SEG (SINK MODE),RC 4~7 接PNP以推動 7SEG 煩請再不吝賜教 ;0計數9 ; LIST P=16C73 ; W_STK EQU 0X20 ; STATUS_STK EQU 0X21 ; PCLATH_STK EQU 0X22 ; TMPCNT EQU 0X24 ; CNT EQU 0X25 ; SCANCH EQU 0X26 ; CH EQU 0X27 ; TNR0H EQU 0X28 ; #DEFINE _DIGIT_ADDR 0X30 ; ORG 00H ; GOTO START ; ORG 04H ; MOVF STATUS,W ; CLRF STATUS ; MOVWF STATUS_STK ; MOVF PCLATH,W ; MOVWF PCLATH_STK ; CLRF PCLATH ; BCF STATUS,RP0 ; BTFSC PIR2,CCP2IF ; GOTO INIT ; END_INT: BCF STATUS,RP0 ; MOVF PCLATH_STK,W ; MOVWF PCLATH ; MOVF STATUS_STK,W ; MOVWF STATUS ; MOVF W_STK,W ; RETFIE ; START CALL PIC_INIT ; BSF INTCON,PEIE ; BSF INTCON,GIE ; INIT MOVLW 0FFH ; RESET RB MOVWF RB ;.. MOVWF RC ; MOVLW DSPTB ; 將TABLE表資料,載入TEMP register MOVWF TABN ;.. MOVF TABN,W ;.. MOVWF TEMP ;.. MOVWF TEMP1 ;.. MOVWF TEMP2 ;.. MOVWF TEMP3 ;.. MOVLW 0AH ; 設定計數器CNTT=0A MOVWF CNTT ;.. MOVLW 64H ; 設定計數器CNTH=64H MOVWF CNTH ;.. MOVLW 03H ; 設定計數器CNTK(K1 K2)=03E8H MOVWF CNTK1 ;.. MOVLW 0E8H ; MOVWF CNTK2 ;.. MOVLW 00 ; 設定計數器CNT9X=00 MOVWF CNT9A ; .. MOVWF CNT9B ; .. MOVWF CNT9C ; .. MOVWF CNT9D ; .. MOVLW 01H ; 被減數 be applied for ROUND4 MOVWF ASS ; .. ZERO1 MOVF TABN,W ; 歸零 MOVWF TEMP2 ; .. MOVWF TEMP1 ; .. MOVWF TEMP ; .. ROUND1 CALL RESET ; MOVLW 0AH ; 設定比較器COMP=0A MOVWF COMP ;.. MOVLW 70H ; 設定SCAN個位數 MOVWF SCAND ;.. MOVF SCAND,W ; 將SCANNER 設定RA ENABLE MOVWF RC ;.. MOVF TEMP,W ; (將個位數PC(PROGRAM COUNTER)移至W register CALL LDTAB ; 載入table表至PC MOVWF RB ; 顯示TABLE表數值至個位數 7 seg) ;GOTO END_INT ; ;RETURN ; INCF TEMP ; 每次執行,TEMP數值+1 INCF CNT9A ; 每次執行,CNT9A數值+1 MOVF CNT9A,W ; (XOR運算"CNT9A&COMP"後 XORWF COMP ; ,存入COMP BTFSS 03H,02 ; ZF旗標為"0"則跳行,否則繼續) GOTO ROUND1 ; GOTO INIT ; RESET MOVLW 0FFH ; RESET RB MOVWF RB ;.. RETURN ; PIC_INIT ;Bank1 CLRF INTCON ; ;BSF INTCON,T0IE ; BSF STATUS,RP0 ; MOVLW B'00000000' ; MOVWF TRISB ; MOVLW B'00000000' ; MOVWF TRISC ; CLRF PIE2 ; BSF PIE2,CCP2IE ; ;Bank0 BCF STATUS,RP0 ; MOVLW B'11111111' ; MOVWF RB ; MOVLW 0XFF ; MOVWF RC ; MOVLW B'00110001' ; MOVWF T1CON ; MOVLW B'00001000' ; MOVWF CCP2CON ; MOVLW 0XF4 ; MOVWF CCPR2H ; MOVLW 0X24 ; MOVWF CCPR2L ; RETURN ; LDTAB MOVWF PCL ; ORG 0E0H ; RETLW B'00001000' ;0 RETLW B'11101011' ;1 RETLW B'01010000' ;2 RETLW B'11000000' ;3 RETLW B'10000011' ;4 RETLW B'10000100' ;5 RETLW B'00000100' ;6 RETLW B'10001001' ;7 RETLW B'00000000' ;8 RETLW B'10000001' ;9 RETLW 00 ;
發表於: 2004/10/1 11:36
|
|||
|