초보의 아웅다웅 설계하기/PIC 16

수신부 모듈

TIMER COUNT를 사용하여 들어오는 신호의 길이를 확인하고 데이터 입력을 받아 저장하는 부분입니다. RF 수신에서 주로 사용하였습니다. GET_RXD_RF MOVLW .7 MOVWF TEMP2 CALL START_TMR0_8US BTFSC INTCON, T0IF RETLW .0;에러 CLRWDT BTFSS RXD_RECEIVER;RXD_RF;싱크헤드시작지점찾기위해H체크 GOTO $-4 CHK_SYNCHEAD_START;┐싱크헤드시작지점하강에지찾음 CALL START_TMR0_8US BTFSC INTCON,T0IF RETLW .0;에러 CLRWDT BTFSC RXD_RECEIVER;RXD_RF GOTO $-4 CHK_SYNCHEAD_TIME;└────┘싱크헤드구간측정 CALL START_TMR0_8U..

시뮬레이터 실행하기

Debugger -> Select Tool -> MPLAB SIM을 실행합니다. 우측 상단에 Animate(>>표시)를 누르면 한단계씩 설정해 놓은 시간대로 실행이 됩니다. 만일 들어간 루프에서 빠져 나와 다음 실행을 하고 싶을 경우에는 일시 정지 버튼을 누른 후 Step Out를 눌러주면 돌고 있는 루프를 빠져 나옵니다. 시뮬레이션 도중 프로그램을 변경하게 되는 경우에는 다시 한번 Quickbuild를 해주고 돌려야 됩니다. View 에서 원하는 것들을 빼서 보면서 돌리면 레지스터 값 변화나 프로그램의 용량 W레지스터 값등을 확인 하면서 돌릴 수 있습니다.

포트 설정하기

프로그램을 작성하기 전에 포트를 미리 설정해주어야 합니다. 물론 만들다보면 포트 조건이 맞지 않거나 원하는 동작을 해주지 않아 바꾸는 경우도 있지만, 미리 설정해 주지 않으면 단가가 올라가거나(풀업 저항을 따로 달아줘야한다거나) 원하는 동작을 지원해주지 않아 프로그램이 복잡해지는 경우가 생기기도 합니다.(I2C나 UART, ADCON등)

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 ;현재 어드레스에서..