컨트롤러"Timer0

M

mickbristol

Guest
안녕하세요, 저는 PIC는 새입니다.나는 포트 D 조 timer0 및 1 초에 도달 prescaler를 사용하여 LED를 전환하려고합니다.

메신저 만약 틀렸다면 정정 해주십시오.
나는 8MHz의 크리스탈을 사용합니다.
이렇게 명령어 사이클 1 / (8000000 / 4) = 500ns,
256에서 prescaler를 사용하여.내주기를 500ns × 256 = 128us됩니다
내가 INTCON, 2 시험에서 235 사이클을 할 것입니다
다음과 같은 고토 235 × 2에
내가 루프 11 번 할 것입니다 additionnal 몇 가지 지침을 내가해야 더하기
(235x2) (235) 10 = 715
루프 715x11 = 7865 사이클
7865x128us = 1.00672 초

내 개발 보드는 아니지만 .. 훨씬 빠르고!내가 말할 것이라고 0.5 초
누구나 수정할 수있습니다 어디에 내 잘못이야?

진심으로 감사합니다

여기에 코드입니다

목록으로 P는 = 16F877A
# P16F877A.inc 포함

__CONFIG _CP_OFF & _DEBUG_OFF & _WRT_OFF & _CPD_OFF & _LVP_OFF & _PWRTE_OFF & _BODEN_OFF & _WDT_OFF & _HS_OSC

org 0x0000
루프 equ 0x20
메인 고토
주된
banksel PORTD
clrf PORTD; 취소 포트 D 조

banksel TRISD; 은행 1
movlw b'00000000 '; 로드할 0000 0000
movwf TRISD; portD 출력을했다

BCF 원사 OPTION_REG, 5; 내부 클럭
BCF 원사 OPTION_REG, 3; TMR0에 prescale

BSF OPTION_REG, 0; prescaler에서 1:256
BSF OPTION_REG, 1
BSF OPTION_REG, 2
940
banksel 루프
movlw 디부 11 '
movwf 루프

L2
banksel TMR0; bank0
movlw 디부 20 '; 충전기 0001 0100
movwf TMR0; TMR0에
BCF 원사 INTCON, 2; 플래그를 취소

의 L3 btfss INTCON, 2; 플래그 timer0 시험
고토의 L3

decfsz 루프, 1; 12월 루프 1에 의해 다음 InStr 건너면 루프 = 0
고토 L2

comf PORTD; PORTD 보완
고토 940; 루프로 이동


 
<a href="http://www.komputerswiat.pl/nowosci/internet/2010/30/5-faktow-o-operze-mini-ktorych-nie-znacie.aspx"> <img align="left" src="http://www.komputerswiat.pl/media/1302239/opera-mini-zajawka.jpg" /></a> Na niedawnym spotkaniu w warszawskim oddziale Opera Software dowiedzieliśmy się kilku ciekawych rzeczy. Poniżej dzielimy się nimi z wami.<img width='1' height='1' src='http://rss.feedsportal.com/c/32559/f/491281/s/c4dc0ed/mf.gif' border='0'/><br/><br/><a href="http://da.feedsportal.com/r/77787957331/u/0/f/491281/c/32559/s/206422253/a2.htm"><img src="http://da.feedsportal.com/r/77787957331/u/0/f/491281/c/32559/s/206422253/a2.img" border="0"/></a>

Read more...
 
Timer0 20와 함께로드됩니다 x 128 우리가 = 30080 우리 (매주 30.08 석사 발생 235 인터럽트 계산됩니다).그래서, 당신은 배치할 / 30.08ms = aprox을 사용해야합니다들 1을 33 배 아니 11 당신이 루프에 사용됩니다.

 
tmr0 인터럽트를 사용하지 않는 ...
그냥 연기를 사용하여 서브루틴을 ..........<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="미소" border="0" />
 
감사합니다 rkodaira
그러니까 만약 내가 이해, 당신 12월 및 고토의주기를 돌봐없이 타이머 235 건의 곱하면?
내 생각에 당신이 당신의 새로운 prescaler주기 시간을 계산, 그리고 당신이 새로운 사이클 타임에 대한 모든 지침을 참조하십시오를 사용하여 ...?

그래서 그냥 timer0의 순간에서 연습하는 방법이 너무 고마워, 난 그냥 배우고 xylynn,하지만 난 여전히 흥미, 무슨 지연 서브루틴을 의미합니까?

감사합니다

 
인용구 :

그러니까 만약 내가 이해, 당신 12월 및 고토의주기를 돌봐없이 타이머 235 건의 곱하면?

내 생각에 당신이 당신의 새로운 prescaler주기 시간을 계산, 그리고 당신이 새로운 사이클 타임에 대한 모든 지침을 참조하십시오를 사용하여 ...
?

 
그것은 작동하고 난 이해

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="미소" border="0" />

감사합니다

예, 루프와도 몇 가지 연습을 해본 적이 되잖아 : P는

덕분에 또, 내가 내 어쨌든 그래서 난 꽤 자주 권자 메시지를 게시할 수있습니다 학습 수행

안녕 둘 다 감사합니다

 

Welcome to EDABoard.com

Sponsor

Back
Top