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

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..

4. 내부 풀업 사용하기

PIC에서는 내부 풀업을 지원합니다. 내부 풀업이 있으면 CHIP 단가(1608TYPE, 47K 저항 약 0.6원)를 줄일 수 있고, ARTWORK시 패턴하나 안 그려도 돼서 편리하고 SMT시(표준 CHIP SMD 약 6원)가격도 내려가게 되어 여러모로 유리하게 됩니다. 당연한 이야기겠지만, 대전류 사용시에는 사용 불가합니다. ^ ^;; 1. 내부 풀업을 하지 않아서 오동작 OPTIONR 레지스터에서 글로벌 내부 풀업 뿐만 아니라 개별 풀업도 설정해주어야 사용이 가능합니다. 글로벌 내부 풀업만 딸랑 해주고 입력이 오동작 한다고 눈물을 흘릴때가 분명히 생깁니다. 2. ADCON 설정을 하지 않아 포트 오동작. ADCON을 사용하지 않을때는 ANSEL 설정을 해줘야 합니다. AD 컨버터 설정을 안해주면 이상..