PIC 16 2 9
3 4 PIC 5 7 4-1 4-2 4-3 4-4 4-5 4-6 4-7 4-8 4-9 7 7 7 0 7 0 7 11 13 14 15 19 5-1 5-2 5-3 19 19 19 5-4 20 5-5 20 5-6 22 5-7 23 5-8 25 5-9 26 5-10 27 29 6-1 29 6-2 29 6-3 29 1
6-4 IC 30 6-5 31 6-6 33 6-7 34 6-8 35 43 44 45 2
PIC 3
PIC16F628 PIC16F873 4
PIC PIC Peripheral Interface Controller PIC CPU ROM RAM / PIC 3 PIC16F628 16F873 14 PIC16F628 16F873 A/D PIC MPLAB PIC PIC AKI PIC PIC MPLAB PIC PIC PIC PIC PIC 3.1 PIC 5
3.1 PIC 6
4-1. PIC 1 0 4-2. 1 4 7 LED 99 0 4-3. 7 LED 4 LED LED PIC LED 4-4. 0 0 PIC 0 4-5. 0 0 OPTION OPTION RESET OPTION 4.1 7
4.1 OPTION bit7 RBPU bit0 INTEDG T0CS T0SE PSA PS2 PS1 PS0 OPTION RBPU bit7 PORT B 1 0 INTEDG bit6 INT 1 0 T0CS bit5 0 1 T0CKI 0 T0SE bit4 0 1 0 PSA bit3 1 WDT 0 0 PS2 PS1 PS0 bit2 0 PS2-0 0 WDT 000 1 2 1 1 001 1 4 1 2 010 1 8 1 4 011 1 16 1 8 100 1 32 1 16 8
PS2-0 0 WDT 101 1 64 1 32 110 1 128 1 64 111 1 256 1 128 0 0 0 255 0 0 OPTION 4 4 0 1 0 4 0 0 PIC CPU 4 1 0 CPU 4 CPU 4 0 INTCON INTCON 4.2 9
4.2 INTCON bit7 bit0 GIE EEIE T0IE INTE RBIE RTIF INTF RBIF INTCON GIE bit7 1 0 EEIE bit6 EEPROM 1 EEPROM 0 T0IE bit5 0 1 0 INTE bit4 PORT B INT 1 PORT B 0 RBIE bit3 PORT B 1 PORT B 0 RTIF bit2 0 1 1 0 0 INTF bit1 PORT B INT 1 PORT B 1 0 0 10
RBIF bit0 PORT B 1 PORT B 1 0 0 4-6. 7 7 LED 7 1 LED 10mA 7 70mA 4.3 7 7 LED 4.3 R1 0.7V R1 2.3V 4.3 7 100 7 LED 7 70mA R1 0.7mA R1 2. 3 0. 7 v ma 3. 29 k 3. 3 k R 1 LED 2V 7 LED 11
1 V 10 ma 0. 1 k 100 BCD 4.4 BCD BCD BCD 7 LED LED BCD 1 4.4 BCD BCD 7 LED BCD HIGH PIC OPTION RBPU bit7 0 PIC RA4 RA5 12
4-7. 4.5 4.5 13
4-8. 7 4.5cm 4.6 4.7 14
4-9. 4.8 BCD 7 LED 00 00 BCD 0 7 7 LED 0 4.9 4.10 7 LED 10 1 4.11 0 1 1 10 1 0 9 10 0 5 15
10 BCD-SW 1 BCD-SW 7 LED Yes 00 No No Yes ON 7 LED Yes No 4.8 No Yes 16
7 LED 10 BCD-SW PORTB 10 BCD-SW 10 10 LED 1 BCD-SW 1 BCD-SW 1 1 LED 10 BCD-SW 10 LED 1 BCD-SW No 1 LED Yes RETURN RETURN 4.9 4.10 2 3 17
0 0 No 0 Yes 0 9 1 0 No 0 No 1 0 Yes 0 Yes 0 5 1 0 N0 0 No 0 Yes Yes 9 1 0 No 0 Yes No 0 0 Yes 0 No Yes 0 1 RETFIE 4.11 4 18
5-1. 5-2. 9 5-3. 1 2 8bit 16bit 16bit 40bit 5.1 0 0 0 0 0 0 0 0 8bit 5.2 1 C2 C1 C0 0 1 D4 D3 D2 D1 D0 1 0 0 0 0 5.3 19
5-4. 5.1 8bit 16bit 2 5.2 0 5.3 1 3bit 1 1 2bit 5bit 5bit 32 16bit 2 2 2 5-5. 9 PIC 1 1 9 9 3 3 6 5.4 20
1 2 3 1 2 3 5.4 5.4 LED 9 LED 10 LED 5.5 RB0 RB4 LED RA0 RA3 RA5 RB5 RB7 RC6 LED LED LED 21
5-6. 5.5 22
5-7. 2 LED PIC 5.6 5.7 23
5.8 5.9 5.10 24
5-8. 0.3 0.3 No Yes LED 0.3 5.11 25
5-9. 0 1 37.9kHz 0 1 37.9kHz 37.9kHz 1 37.9kHz 26 1 13 0 13 1 600 600 26 23 1 0 23 1 600 1 PIC 4kHz PIC 4 1 1 1 4kHz 4 1 5.12 1 5.12 1 600 PIC 600 PIC 0.5% 26
5-10. 5.12 27
28
6-1. 0 6-2. 6-3. 6.1 Q1 Q2 Q3 Q4 OFF OFF OFF OFF ON OFF OFF ON ( ) OFF ON ON OFF ( ) OFF OFF ON ON 6.1 Q1 Q4 ON 29
Q2 Q3 ON Q3 Q4 ON Q1 Q3 Q2 Q4 ON OFF 6-4. IC IC IC TA7291P 20V 0.4A 2.0A 6.2 IC 6.2 30
6.2 PIC 6 2 4 6.1 1(5PIN) 2(6PIN) 1(2PIN) 2(10PIN) LOW LOW HIGHT LOW HIGHT LOW ( ) LOW HIGHT LOW HIGHT ( ) HIGHT HIGHT LOW LOW 6.1 6-5. SPS-443-1 38kHz 6.3 1 0 1 50% 0 6.3 PIC 6.4 31
6.4 0 High Low PIC Low 0 1 Low High PIC High 1 6.4 SPS-433-1 4.7V 5.3V IN 4 LED PIC 4.7 F 6.5 32
6-6. 6.5 33
6-7. 6.6 34
35 6-8. 6.7 600 300 600 600 600 600 600 600 600 600 600 600 300 6.7 6.7 300 100 3
100 300 100 6.8 6.9 6.8 6.9 36
1 PWM PWM PIC 0 0 16 0 2 2 0 15 0 16 HIGH LOW 0 6.10 HIGH LOW 15 0 6.11 37
Yes 100 No No Yes 200 No Yes 600 No 2 Yes 6.10 1 38
Yes No Yes 1 0 No 1 0 Yes No 6.11 2 39
0 1 No Yes 1 1 2 No Yes 1 1 RETURN 6.12 3 40
0 T0IF 0 1 0 Yes No DUTY1 0 No 1 DUTY2 0 16 DUTY1 DUTY2 1 2 No 2 RETFIE 6.13 4 41
6.14 6.15 6.14 6.15 42
0 1 2 IC 2 2 PIC PIC 43
PIC PIC PIC PIC PIC CQ PIC 44
A254 45
1 ;******************************************************************: ; ;****************************************************************** ; LIST P=PIC16F873 INCLUDE "P16F873.INC" ;******************************************* SDATA EQU 20H CNT1 EQU 21H CNT2 EQU 22H CNT3 EQU 23H CNT4 EQU 24H BITCNT EQU 25H WCNT EQU 26H W6CNT EQU 27H WORK EQU 28H KEYDT EQU 29H WCNT2 EQU 3AH DEVICE SET 080H ORG 0 ;****************************************** MAIN PORT_INI Loop CLRF CLRF BSF PORTA PORTB KEYSCAN LEED SEND SEND PORTB,0 1
2 TIME60M BCF PORTB,0 BSF PORTB,1 TIME60M BCF PORTB,1 BSF PORTB,2 TIME60M BCF PORTB,2 BSF PORTB,4 TIME60M BCF PORTB,4 BSF PORTB,3 TIME60M BCF PORTB,3 LOOP ;******************************************* PORT_INI BSF STATUS,RP0 H'07' ADCON1 H'07' TRISC H'00' TRISB H'00' TRISA BCF OPTION_REG,7 BCF STATUS,RP0 CLRF PORTA CLRF PORTB RETURN
;******************************************* KEYSCAN LEFT H'08' PORTC LEFT1 BTFSS PORTC,0 LEFT2 TIM10M BTFSC PORTC,0 SIG11 LEFT2 BTFSS PORTC,1 LEFT3 TIM10M BTFSC PORTC,1 SIG12 LEFT3 BTFSS PORTC,2 CENTER TIM10M BTFSC PORTC,2 SIG13 CENTER CENT1 BTFSS BTFSC CENT2 BTFSS BTFSC CENT3 BTFSS H'10' PORTC PORTC,0 CENT2 TIM10M PORTC,0 SIG21 PORTC,1 CENT3 TIM10M PORTC,1 SIG22 PORTC,2 RIGHT 3
4 TIM10M BTFSC PORTC,2 SIG23 RIGHT H'20' PORTC RIGHT1 BTFSS PORTC,0 RIGHT2 TIM10M BTFSC PORTC,0 SIG31 RIGHT2 BTFSS PORTC,1 RIGHT3 TIM10M BTFSC PORTC,1 SIG32 RIGHT3 BTFSS PORTC,2 KEYSCAN TIM10M BTFSC PORTC,2 SIG33 KEYSCAN ;**************************************************** TIM10M TIME5M TIME5M RETURN ;******************************************************* SIG11 BSF PORTA,0 H'14'
RETURN KEYDT SIG12 BSF PORTA,3 H'08' KEYDT RETURN SIG13 BSF PORTB,5 H'0E' KEYDT RETURN SIG21 BSF PORTA,1 H'04' KEYDT RETURN SIG22 BSF PORTC,6 H'0A' KEYDT RETURN SIG23 BSF PORTB,6 H'10' KEYDT RETURN SIG31 BSF PORTA,2 H'06' KEYDT RETURN SIG32 BSF PORTA,5 H'0C' KEYDT 5
6 RETURN SIG33 BSF PORTB,7 H'12' KEYDT RETURN ;************************************************************** LEED 8 BITCNT LDLP BIT0 DECFSZ BITCNT,F LDLP RETURN ;*************************************************** SEND BIT1 ;**************************************************** 3 BITCNT DCODE RLF KEYDT,F BTFSS STATUS,C BIT0 BTFSC STATUS,C BIT1 DECFSZ BITCNT,F DCODE BIT0 BIT1 ;******************************************************** 5 BITCNT
7 KEYCODE RLF KEYDT,F BTFSS STATUS,C BIT0 BTFSC STATUS,C BIT1 DECFSZ BITCNT,F KEYCODE RLF KEYDT,F BIT1 ;*********************************************************** 4 BITCNT TARIL BIT0 DECFSZ BITCNT,F TARIL RETURN ;**************************************************************** BIT0 BCF PORTC, 7 ;***************************************************************** H 0C W6CNT BT01LP H 0F WCNT BT00LP DECFSZ WCNT,F BT00LP DECFSZ W6CNT,F BT01LP RETURN
;******************************************* ;******************************************* BIT1 H 17 W6CNT ;********************************************* BTLOOP BSF PORTC,7 ;************************************************** BCF PORTC,7 ;***************************************************** DECFSZ W6CNT,F 8
9 BTLOOP RETURN ;*************************************************** WAIT H 0A CNT3 WTLP3 H 63 CNT2 WTLP2 H 64 CNT1 WTLP1 DECFSZ CNT1,F WTLP1 DECFSZ CNT2,F WTLP2 DECFSZ CNT3,F WTLP3 RETURN ;******************************** TIME100 H 09 CNT1 T_LP1 TIME10 DECFSZ CNT1,F T_LP1 RETURN TIME10 H 07 CNT2 T_LP2 DECFSZ CNT2,F
RETURN TIME1M T_LP3 DECFSZ RETURN TIME5M T_LP4 DECFSZ RETURN T_LP2 H 0A CNT3 TIME100 CNT3,F T_LP3 H 38 CNT4 TIME100 CNT4,F T_LP4 TIME60M TIME60 DECFSZ RETURN H'0C' WCNT2 TIME5M WCNT2,F TIME60 END 10
2 ;************************************************************** ; ;************************************************************** LIST P=PIC16F628 INCLUDE "P16F628.INC" ;************************* DUTY1 EQU 20H DUTY2 EQU 21H DYWRK1 EQU 22H DYWRK2 EQU 23H WIDTH EQU 24H W_TEMP EQU 25H ST_TMP EQU 26H RDATA1 EQU 27H RDATA2 EQU 28H CNT1 EQU 29H CNT2 EQU 2AH BITCNT EQU 2BH SPD1 EQU 2CH SPD2 EQU 2DH DIR1 EQU 2EH DIR2 EQU 2FH WORK EQU 30H ZNS EQU 31H STOPF EQU 32H TURN EQU 33H DEVICE SET H'00' ;*************************** ORG 0 START 1
2 ORG 4 T0ISR ;****************************** START BCF STATUS,RP0 H 07' CMCON BSF STATUS,RP0 H'13' TRISA CLRF TRISB H 88 OPTION_REG BCF STATUS,RP0 CLRF PORTA CLRF PORTB ;********************************** H 10 WIDTH DUTY1 DUTY2 DYWRK1 DYWRK2 CLRF TMR0 BSF INTCON,T0IE CLRF STOPF CLRF TURN BCF PORTA, 2 ;*********************************** MAIN2 CLRF TURN BSF INTCON,GIE MAIN ;************ BCF STATUS,RP0
BTFSS PORTA, 4 LOOP2 WAIT100 BTFSC PORTA, 4 LOOP H'0C' BSF PORTB, 2 PORTA BSF PORTB, 3 LOOP2 BTFSC PORTA,0 MTR1UP BTFSS PORTA,0 MTR1DWN ;************************************* BTFSC PORTA,1 MTR2UP BTFSS PORTA,1 MTR2DWN MAIN ;************************************* MTR1UP ; H 10 SUBWF DUTY1,W BTFSS STATUS,C INCF DUTY1,F RETURN MTR1DWN 1 SUBWF DUTY1,W BTFSC STATUS,C DECF DUTY1,F 3
4 RETURN ;************************************* MTR2UP H 10 SUBWF DUTY2,W BTFSS STATUS,C INCF DUTY2,F RETURN MTR2DWN 1 SUBWF DUTY2,W BTFSC STATUS,C DECF DUTY2,F RETURN ;*************************************** T0ISR W_TEMP SWAPF STATUS,W ST_TMP BCF INTCON,T0IF DECFSZ WIDTH,F DTY1CNT ;***************************************** DTYCLR H 10 WIDTH MOVF DUTY1,W DYWRK1 BSF PORTB,6 MOVF DUTY2,W DYWRK2 BSF PORTB,4 POPRTN ;*****************************************
DTY1CNT MOVF BTFSC DECFSZ DTY1Z BCF DTY2CNT MOVF BTFSC DECFSZ DTY2Z BCF POPRTN SWAPF SWAPF SWAPF RETFIE DYWRK1,W STATUS,Z DTY1Z DYWRK1,F DTY2CNT PORTB,6 DYWRK2,W STATUS,Z DTY2Z DYWRK2,F POPRTN PORTB,4 ST_TMP,W STATUS W_TEMP,F W_TEMP,W ;**** REMOCON MODE LOOP BCF STATUS,RP0 BTFSS PORTA, 4 LOOP WAIT100 BTFSS PORTA, 4 LOOP LOOPA BCF INTCON,GIE STRTBIT ANDLW H'FF' BTFSS STATUS, Z 5
WHICH MOVF WORK,W RDATA1 LOOPB BCF STATUS,RP0 BTFSS PORTA, 4 LOOPB WAIT100 BTFSS PORTA, 4 LOOPB STRTBIT ANDLW H'FF' BTFSS STATUS, Z LOOP MOVF WORK,W RDATA2 SUBWF RDATA1,W BTFSS STATUS,Z MAIN2 RCVED MOVF RDATA1,W ANDLW H'E0' BTFSS STATUS,C LOOP ;********************************************** BCF PORTB, 2 CLRF PORTA BCF PORTB, 3 BCF STATUS,C RRF RDATA1,F MOVF RDATA1,W ANDLW H'0F' ADDWF PCL,F KEY00 KEY01 6
7 KEY02 KEY03 KEY04 KEY05 KEY06 KEY07 KEY08 KEY00 ;*************************************** MAIN2 WHICH BTFSS TURN,0 MAIN2 LOOP ; ;********************************************* ;****** GO STRAIGHT KEY01 KEY011 CLRF STOPF H'FF' TURN H'50' PORTB H'3C' SPD1 KEY011A DECFSZ SPD1 KEY011A H'FF' SPD1 CLRF STOPF LOOP
;***** TURN TO THE LEFT KEY00 KEY00A CLRF STOPF H'FF' TURN BSF PORTA,3 H'48' PORTB BSF PORTB,3 H'05' SPD1 KEY0AA DECFSZ SPD1 KEY0AA BCF PORTB,3 BCF PORTA,3 LOOP ;***** TURN TO THE RIGHT KEY02 KEY02A CLRF STOPF H'FF' TURN BSF PORTA,2 8
9 H'14' PORTB BSF PORTB,2 H'05' SPD1 KEY2AA DECFSZ SPD1 KEY2AA BCF PORTB,2 BCF PORTA,2 LOOP ;**** LEFT WINKER KEY03 CLRF STOPF H'FF' TURN BSF PORTB,3 H'40' SPD1 KEY03A BCF PORTB,3 BSF PORTB,3
10 DECFSZ SPD1 KEY03A BCF PORTB,3 LOOP ;**** STOP KEY04 H'FF' TURN H'00' PORTB BSF PORTA,2 BSF PORTA,3 H'3C' SPD1 KEY044 DECFSZ SPD1 KEY044 BCF PORTA,2 BCF PORTA,3 H'02' SUBWF STOPF, W BTFSC STATUS, Z KEY045 INCF STOPF, F LOOP KEY045 CLRF STOPF CLRF TURN MAIN2 ;**** RIGHT WINKER
11 KEY05 CLRF STOPF H'FF' TURN BSF PORTB,2 H'40' SPD1 KEY05A BCF PORTB,2 BSF PORTB,2 DECFSZ SPD1 KEY05A BCF PORTB,2 LOOP ;**** BACK TO THE LEFT KEY06 KEY06A CLRF STOPF H'FF' TURN BSF PORTA,3 H'88' PORTB BSF PORTB,3 H'05' SPD1 KEY6AA
12 H'A8' PORTB H'88' PORTB DECFSZ SPD1 KEY6AA BCF PORTB,3 BCF PORTA,3 LOOP ;**** BACK TO THE STRAIGHT KEY07 KEY071 CLRF STOPF H'FF' TURN BSF PORTA,2 BSF PORTA,3 H'A0' PORTB H'3C' SPD1 KEY71A DECFSZ SPD1 KEY71A BCF PORTA,2 BCF PORTA,3 LOOP
;**** BACK TO THE RIGHT KEY08 KEY08A CLRF STOPF H'FF' TURN BSF PORTA,2 H'24' PORTB BSF PORTB,2 H'05' SPD1 KEY8AA H'A4' PORTB H'24' PORTB DECFSZ SPD1 KEY8AA BCF PORTB,2 BCF PORTA,2 LOOP STRTBIT WAIT100 WAIT100 13
14 BCF STATUS,RP0 BTFSS PORTA, 4 RETLW H'FF' ;******************************************** CLRF WORK 3 BITCNT CDLP WAIT600 BTFSS PORTA,4 BCF STATUS,C BTFSC PORTA,4 BSF STATUS,C RLF WORK,F DECFSZ BITCNT,F CDLP ;*********************************************** WAIT600 BTFSC PORTA,4 RETLW H'FF' WAIT600 BTFSS PORTA,4 RETLW H'FF' ;************************************************* 5 BITCNT DTLP WAIT600 BTFSS PORTA,4 BCF STATUS,C BTFSC PORTA,4 BSF STATUS,C RLF WORK,F DECFSZ BITCNT,F DTLP
15 ;*************************************************** WAIT600 BTFSS PORTA,4 RETLW H'FF' WAIT600 BTFSC PORTA,4 RETLW H'FF' WAIT600 BTFSC PORTA,4 RETLW H'FF' ;******************************************************** RETLW H'00' WAIT300 H'43' CNT1 LP1 DECFSZ CNT1,F LP1 WAIT100 H'20' CNT1 LP2 DECFSZ CNT1,F LP2 RETURN WAIT600 H'02' CNT1 LP3 H'65' CNT2 LP4 DECFSZ CNT2,F
DECFSZ RETURN LP4 CNT1,F LP3 LP5 LP6 DECFSZ DECFSZ RETURN H'07' CNT1 H'F0' CNT2 CNT2,F LP6 CNT1,F LP5 END 16