컨트롤러"지연

G

Guest

Guest
4MHZ 크리스탈을 사용하여

movlw 디 13 '
movwf CounterB
movlw 디 251 '
movwf CounterA
루프 decfsz CounterA, 1
고토 루프
decfsz CounterB, 1
고토 루프
돌아가기

대답은 10ms delay.but되어야하는 이미 내게 설명할 수있는 사람이 얼마나 지연 시간이 계산되고있다?

thxsss

 
첫째, 기계 사이클 당 시간의 길이를 결정합니다.그 내부 명령어 시계.PIC를 들어, 귀하의 기계를주기 발진기 속도를 4로 나눈 같다.만약 당신이 4MHz 오실레이터를 가지고 그래서, 당신 내부의 PIC 속도 4MHz / 4 = 1MHz의입니다.저 주파수의.기간이나 시간의 길이, 각 머신 사이클 후 1/1MHz = 1 마이크로초입니다.

각 명령은 ASM 1 머신 사이클이다.고토, 건너뛰기, 리턴 2 머신 사이클의 각입니다.일러스트 들어, 다음과 같은 :

코드 :

movlw 디 251 '; / / 1주기

movwf CounterA; / / 1주기

루프 decfsz CounterA, 1; 스킵 할 때 0 / / 1주기 (2 사이클)

고토 루프; / / 2 사이클
 
explaination에 대한 thxs!

만약 내가 완 38KHZ 캐리어 주파수를 생성하는 p16F877 PWM을 사용하여, 나는 38KHZ 주파수를 생성하는 각 사이클에 대한 지연 시간을 고려해야합니까??

 
때문에 지연이 때 다른 일을해야합니다 모든 프로세서의 지연 시간을 점유 주파수를 사용하여 지속적인 개발을위한 좋은 방법이 아니다.38KHz 만들기위한 가장 간단한 방법은 PIC의의 PWM 모듈을 사용하는 50 % 듀티 사이클을 설정합니다.

여기에 난 기사를 쓰는 PIC18 용은 황새의 PWM Basic 컴파일러에 대한 가치를 쓴 작은 프로그램입니다 :

http://circuit-ed.com/uplds/pwm_writer.exe

당신은이 프로그램에서 볼 것이다 4MHz 발진기 (Fosc), Timer2 Prescaler = 1, PR2 = 25 당신은 ..... 38462 Hz에서 주파수를 얻을 수있습니다아주 정확히 38KHz를 닫습니다.

어떤이 이루어 전체 코드 모듈이 여기에있습니다 :

http://www.sfcompiler.co.uk/wiki/pmwiki.php?n=SwordfishUser.PWM2PIC는의의 PWM 모듈을 사용하여 아름다움 주파수, 아무 방해 또는 지연이 필요합니다 상수이며, 귀하의 능력이 다른 코드에 기능을 할 영향을 미치지 않을 것입니다.

 
소스에 대한 thxs
하지만 난 transmiting에 대한 38KHZ 생성 적외선 디자인 어셈블리 언어를 사용하지만, 38KHZ 데이터를 내 데이터를 수신 IR 수신기를 사용하여 38KHZ 사촌 전송을 생성하는 PWM을 사용할 계획이다.U 어떤 생각합니까?

 
아무도 날 8051 마이크로 컨트롤러에 대한 오래 지연 프로그램을 줄 수

 
안녕,
그것은 당신은 타이머 인터럽트를 사용할 수있는 간단하고 종료됩니다.올린날짜 6 분 후 :Oooops,
Abrakadabra :
http://www.edaboard.com/viewtopic.php?t=149273

 
만약 당신이 주의깊게 보면 그것을 반환 등 정확히 10000 사이클이 필요 원본 코드 확인, 중첩 루프입니다.CounterA = 251을 통해 처음하지만 그것을 롤 ...

코드 :

4 사이클 카운터를 로드할 수있습니다.

755 사이클을 통해 처음으로.

9240 사이클을 앞으로 12 번 (12 * 770).

-1 사이클 지난번에 마지막으로 고토 건너 뛰십시오.

2주기를 반환합니다.총 10000
 
암호화 썼습니다 :

만약 당신이 주의깊게 보면 그것을 반환 등 정확히 10000 사이클이 필요 원본 코드 확인, 중첩 루프입니다.
CounterA = 251을 통해 처음하지만 그것을 롤 ...코드 :

4 사이클 카운터를 로드할 수있습니다.

755 사이클을 통해 처음으로.

9240 사이클을 앞으로 12 번 (12 * 770).

-1 사이클 지난번에 마지막으로 고토 건너 뛰십시오.

2주기를 반환합니다.총 10000
 
암호화 썼습니다 :

만약 당신이 주의깊게 보면 그것을 반환 등 정확히 10000 사이클이 필요 원본 코드 확인, 중첩 루프입니다.
CounterA = 251을 통해 처음하지만 그것을 롤 ...코드 :

4 사이클 카운터를 로드할 수있습니다.

755 사이클을 통해 처음으로.

9240 사이클을 앞으로 12 번 (12 * 770).

-1 사이클 지난번에 마지막으로 고토 건너 뛰십시오.

2주기를 반환합니다.총 10000
 
그것은 귀하의 카운터를 로드할 4 사이클 걸립니다.

귀하의 코드를 CounterA = 251, 루프를 제외했을 때 그것을 CounterA = 0, 더하기 겨우 2 걸립 3주기 12 CounterB 감소 3주기에 걸릴 통해 처음이다.

251 x 3 - 1 3 = 755

이제 12 바깥 루프가 남아있습니다.CounterA = 0 CounterB = 12.

는 12 X (256 × 3 - 1 3) =는 12 X 770 = 9240.

외부 루프를 통해 지난 3 단 2 사이클 안 걸립니다.

9240 - 1 = 9239.

최종 복귀 2 사이클 걸립니다.

4 755 9239 2 = 10000.

 
이 7.5ms 지연

코드 :

movlw 디 10 '

movwf CounterB

movlw 디 188 '

movwf CounterA

루프 decfsz CounterA, 1

고토 루프

decfsz CounterB, 1

고토 루프

retlw

 
그것은 귀하의 카운터를 로드할 4 사이클 걸립니다.

귀하의 코드를 CounterA = 188, 루프를 제외했을 때 그것을 CounterA = 0, 더하기 겨우 2 걸립 3 사이클 9 CounterB 감소 3주기에 걸릴 통해 처음이다.

188 x 3 - 1 3 = 566

이제 9 바깥 루프가 남아있습니다.CounterA = 0 CounterB = 9.

9 x (256 × 3 - 1 3) = 9 x 770 = 6930.

외부 루프를 통해 지난 3 단 2 사이클 안 걸립니다.

6930 - 1 = 6929.

최종 복귀 2 사이클 걸립니다.

4 566 6929 2 = 7501.

 
암호화 썼습니다 :

그것은 귀하의 카운터를 로드할 4 사이클 걸립니다.귀하의 코드를 CounterA = 188, 루프를 제외했을 때 그것을 CounterA = 0, 더하기 겨우 2 걸립 3 사이클 9 CounterB 감소 3주기에 걸릴 통해 처음이다.188 x 3 - 1 3 = 566이제 9 바깥 루프가 남아있습니다.
CounterA = 0 CounterB = 9.9 x (256 × 3 - 1 3) = 9 x 770 = 6930.외부 루프를 통해 지난 3 단 2 사이클 안 걸립니다.6930 - 1 = 6929.최종 복귀 2 사이클 걸립니다.4 566 6929 2 = 7501.
 

Welcome to EDABoard.com

Sponsor

Back
Top