سلام
من برای اندازه گیری عرض پالس بوسیله ی مد کپچر میکرو از این برنامه استفاده کردم .
مشکل اصلی اینه که میکرو هربار که بهش یه پالس با عرض مشخص میدم یه جواب تازه میده !!!!!!!!!!!!!!!!!!
و هردفعه چرند پرند بهم تحویل میده .
یه بار میگه 124547 میکرو ثانیه
یه بار دیگه میگه 1457 میکرو ثانیه
خلاصه کارش رو درست انجام نمیده .
اگر میشه بگید اشکال برنامه از کجاست ؟؟؟؟
[code=qbasic]
Define Loader_Used 1 'Required if using McLoader
DEFINE OSC 4
.
.
.
time_usec var word
time var word
trisc = %00000100
t1con = %00000001
ccp1con = 0
lcdout I,clr
lcdout #time_usec,"*" ,#time
main:
t1con = %00000001
tmr1l = 0
tmr1h = 0
ccp1con = %00000100
pir1.2 = 0
loop:
if pir1.2 = 0 then loop
pir1.2 = 0
high porte.0
ccp1con = %00000101
loop2:
if pir1.2 = 0 then loop2
t1con = %00000000
ccp1con = %00000000
time_usec.byte1 = ccpr1h
time_usec.byte0 = ccpr1l
lcdout I,clr
time = time_usec
lcdout #time_usec,"m sec"
pause 1
low porte.0
goto main
end
[/code]
اضافه شده در تاریخ :
سلام
حتی این برنامه را که برای فاصله سنج اولتراسونیک نوشته شده بود هم امتحان کردم .
ولی باز هم نتیجه همون شد . :angry:
[code=qbasic]
Define Loader_Used 1 'Required if using McLoader
DEFINE OSC 4
.
.
.
ADCON1 = 7 ' Set PORTA and PORTE to digital
Low RW_line ' LCD R/W line low (W)
trisc.2=1
trisc.1=0
T1CON=0
CCP1CON=%00000101
INTCON=%11000000
PIE1.2=1
ON INTERRUPT GOTO CAPTURE
W VAR WORD
FLAG VAR BIT
CLEAR
MAIN:
T1CON.0=1
toggle portd.1
WAIT_:
IF FLAG=0 THEN WAIT_
lcdout i ,clr
lcdout i,Line1,"tm:",#w
FLAG=0
GOTO MAIN
CAPTURE:
DISABLE
T1CON.0=0
W.BYTE0 = CCPR1L
W.BYTE1 = CCPR1H
'w=w/100
TMR1L=0
TMR1H=0
PIR1.2=0
FLAG=1
RESUME
ENABLE
[/code]
من برای اندازه گیری عرض پالس بوسیله ی مد کپچر میکرو از این برنامه استفاده کردم .
مشکل اصلی اینه که میکرو هربار که بهش یه پالس با عرض مشخص میدم یه جواب تازه میده !!!!!!!!!!!!!!!!!!
و هردفعه چرند پرند بهم تحویل میده .
یه بار میگه 124547 میکرو ثانیه
یه بار دیگه میگه 1457 میکرو ثانیه
خلاصه کارش رو درست انجام نمیده .
اگر میشه بگید اشکال برنامه از کجاست ؟؟؟؟
[code=qbasic]
Define Loader_Used 1 'Required if using McLoader
DEFINE OSC 4
.
.
.
time_usec var word
time var word
trisc = %00000100
t1con = %00000001
ccp1con = 0
lcdout I,clr
lcdout #time_usec,"*" ,#time
main:
t1con = %00000001
tmr1l = 0
tmr1h = 0
ccp1con = %00000100
pir1.2 = 0
loop:
if pir1.2 = 0 then loop
pir1.2 = 0
high porte.0
ccp1con = %00000101
loop2:
if pir1.2 = 0 then loop2
t1con = %00000000
ccp1con = %00000000
time_usec.byte1 = ccpr1h
time_usec.byte0 = ccpr1l
lcdout I,clr
time = time_usec
lcdout #time_usec,"m sec"
pause 1
low porte.0
goto main
end
[/code]
اضافه شده در تاریخ :
سلام
حتی این برنامه را که برای فاصله سنج اولتراسونیک نوشته شده بود هم امتحان کردم .
ولی باز هم نتیجه همون شد . :angry:
[code=qbasic]
Define Loader_Used 1 'Required if using McLoader
DEFINE OSC 4
.
.
.
ADCON1 = 7 ' Set PORTA and PORTE to digital
Low RW_line ' LCD R/W line low (W)
trisc.2=1
trisc.1=0
T1CON=0
CCP1CON=%00000101
INTCON=%11000000
PIE1.2=1
ON INTERRUPT GOTO CAPTURE
W VAR WORD
FLAG VAR BIT
CLEAR
MAIN:
T1CON.0=1
toggle portd.1
WAIT_:
IF FLAG=0 THEN WAIT_
lcdout i ,clr
lcdout i,Line1,"tm:",#w
FLAG=0
GOTO MAIN
CAPTURE:
DISABLE
T1CON.0=0
W.BYTE0 = CCPR1L
W.BYTE1 = CCPR1H
'w=w/100
TMR1L=0
TMR1H=0
PIR1.2=0
FLAG=1
RESUME
ENABLE
[/code]
دیدگاه