초보의 아웅다웅 설계하기 336

9. 딜레이 설정

4MHz X-TAL 사용시 딜레이 타임 설정 딜레이 설정시 명령어당 사이클 수를 계산하여 설정해주어야 합니다. DELAY_200US MOVLW .49 MOVWF COUNT1 GOTO D_US DELAY_400US MOVLW .99 MOVWF COUNT1 GOTO D_US DELAY_500US MOVLW .124 MOVWF COUNT1 GOTO D_US DELAY_550US MOVLW .136 MOVWF COUNT1 GOTO D_US DELAY_600US MOVLW .150 MOVWF COUNT1 GOTO D_US DELAY_800US MOVLW .200 MOVWF COUNT1 GOTO D_US DELAY_1MS MOVLW .250 MOVWF COUNT1 GOTO D_US D_US CLRWDT DECFSZ..

8. TMR0 설정하기.

내부 TMR0 설정하기 START_TMR0_2US MOVLW B'00000000' ;TMR0 PRE(1:2)타이머0를2분주(4MHz=0.25US,*4CLK,*2분주=2US) GOTO START_TMR0_INIT START_TMR0_4US MOVLW B'00000001' ;TMR0 PRE(1:4)타이머0를4분주(4MHz=0.25US,*4CLK,*4분주=4US) GOTO START_TMR0_INIT START_TMR0_8US MOVLW B'00000010' ;TMR0 PRE(1:8)타이머0를8분주(4MHz=0.25US,*4CLK,*8분주=8US) GOTO START_TMR0_INIT START_TMR0_16US MOVLW B'00000011' ;TMR0 PRE(1:16)타이머0를16분주(4MHz=0.25US..

7. 내부 EEPROM 사용하기

EEPROM_WR CLRWDT SELBANK0 MOVF DATA_EE_ADDR, W;데이터를 넣을주소값 SELBANK2 MOVWF EEADR SELBANK0 MOVF DATA_EE_DATA, W;;넣을데이터값 SELBANK2 MOVWF EEDAT SELBANK3 BCF EECON1, EEPGD ;Point to DATA memory BSF EECON1, WREN;쓰기 허용 BCF INTCON, GIE ;Disable INTs. BTFSC INTCON, GIE ;SEE AN576 GOTO $-2 MOVLW 0x55 MOVWF EECON2 MOVLW 0xAA MOVWF EECON2 BSF EECON1, WR;쓰기 시작 BTFSC EECON1, WR;쓰기가 다끝났는지 확인. GOTO $-1 ;현재 어드레스에서..

5. TMR 사용하기.

프로그램을 짜다보면 TMR을 사용하는 경우가 많이 생깁니다. 들어오는 입력신호의 길이를 측정하거나,(물론 타이머가 아니여도 측정할 수는 있습니다.) 일정시간 후 다른 동작을 해야하는 인터럽트로 사용한다거나 하는 등의 경우처럼요. 물론 정밀한 시간을 측정해야 할 경우 외부에서 받아오는 경우도 있습니다. 이 타이머도 설정만하고 초기화 하지 않으면 TMR0 초기값이 0이 아닌 다른값에서 시작하여 예측 불허의 결과가 생길 수도 있습니다. TMR0_SET; INTCON을 설정하는 순간부터 인터럽트가 허가 되므로 INTCON을 나중에 설정 SELBANK1 MOVLW B'00000101';ENABLE GLOBAL WEAK PULL-UP, TMR PRES(1:64) MOVWF OPTIONR SELBANK0 CLRF T..