Hi,
Ich möchte die Pins GP0 und GP1 als Ausgänge, und die Pins GP2 und GP3 
eines PIC10F202 als Eingänge schalten. Die Eingänge habe ich noch 
zusätzlich mit 2 PullUp Widerständen beschalten. Komisch ist, dass sich 
der IC mit dem Taster an GP3 perfekt schalten lässt, ich bei GP2 aber 
einen Kurzschluss erhalte :/
Im Datenblatt habe ich natürlich schon gelesen, dass GP2 auch noch 
mehrere andere Funktionen hat, welche auch das TRIS-Register 
überschreiben, die habe ich soweit allerdings deaktiviert. Oder nicht?
Ich verwende MPLABX 2.00 und den XC8 Compiler.
Vielen Dank für eure Hilfe! :)
LG Markus
| 1 | /* 
 | 
| 2 |  * File:   main.c
 | 
| 3 |  * Author: Markus
 | 
| 4 |  *
 | 
| 5 |  * Created on 26. April 2014, 00:08
 | 
| 6 |  */
 | 
| 7 | #include <pic10f202.h>
 | 
| 8 | #include <plib.h>
 | 
| 9 | #include <stdlib.h>
 | 
| 10 | #include <xc.h>
 | 
| 11 | 
 | 
| 12 | #pragma config OSC = IntRC, MCLRE = OFF, WDTE = OFF, CP = OFF
 | 
| 13 | 
 | 
| 14 | 
 | 
| 15 | //Flags
 | 
| 16 | unsigned char rowOn = 1;
 | 
| 17 | unsigned char stopLightOn = 1;
 | 
| 18 | unsigned char stopLightBlinking = 0;
 | 
| 19 | 
 | 
| 20 | unsigned int ms = 0;
 | 
| 21 | unsigned char ms2 = 0;
 | 
| 22 | 
 | 
| 23 | unsigned char buttonOld = 0;
 | 
| 24 | unsigned char button = 0;
 | 
| 25 | unsigned char pressed = 0;
 | 
| 26 | 
 | 
| 27 | void main(void)
 | 
| 28 | {
 | 
| 29 |     OSCCAL = 0b01111110; //max frequency;GP2/T0CKI/COUT applied to GP2
 | 
| 30 |     OPTION = 0b11000101; //WakeUp on PinChange OFF; WeakPullUps OFF; TMR0 internal CLK; undefined; PS to TMR0; PS 1:64
 | 
| 31 |     TMR0 = 131; //8ms to OF
 | 
| 32 |     TRISGPIO = 0b00001100;
 | 
| 33 |     GP0 = 0;
 | 
| 34 |     GP1 = 1;
 | 
| 35 | 
 | 
| 36 |     while(1)
 | 
| 37 |     {
 | 
| 38 |         
 | 
| 39 |         if(TMR0 < 131) //Overflow detected
 | 
| 40 |         {
 | 
| 41 |             ms2 = ms2 + 8;
 | 
| 42 |             
 | 
| 43 |             buttonOld = button;
 | 
| 44 |             button = GP3; //0 wenn pressed
 | 
| 45 | 
 | 
| 46 |             if((buttonOld != 0) && (button == 0)) //started pressing button
 | 
| 47 |             {
 | 
| 48 |                 ms = 0;
 | 
| 49 |                 pressed = 1;
 | 
| 50 |             }
 | 
| 51 |             else if((buttonOld == 0) && (button == 0)) //continue pressing
 | 
| 52 |             {
 | 
| 53 |                 ms = ms+8;
 | 
| 54 |             }
 | 
| 55 |             else if((buttonOld == 0) && (button != 0) && (pressed == 1)) // stopped pressing
 | 
| 56 |             {
 | 
| 57 |                 
 | 
| 58 |                 if(ms < 3000)
 | 
| 59 |                 {
 | 
| 60 |                     if(rowOn == 1)
 | 
| 61 |                         rowOn = 0;
 | 
| 62 |                     else
 | 
| 63 |                         rowOn = 1;
 | 
| 64 |                 }
 | 
| 65 |                 else if(ms < 6000)
 | 
| 66 |                 {
 | 
| 67 |                     if(stopLightOn == 1)
 | 
| 68 |                         stopLightOn = 0;
 | 
| 69 |                     else
 | 
| 70 |                         stopLightOn = 1;
 | 
| 71 |                     
 | 
| 72 |                     stopLightBlinking = 0;
 | 
| 73 |                 }
 | 
| 74 |                 else
 | 
| 75 |                 {
 | 
| 76 |                     stopLightBlinking = 1;
 | 
| 77 |                 }
 | 
| 78 | 
 | 
| 79 |                 pressed = 0;
 | 
| 80 | 
 | 
| 81 | 
 | 
| 82 |             }
 | 
| 83 | 
 | 
| 84 |             TMR0 = 131;
 | 
| 85 |         }
 | 
| 86 | 
 | 
| 87 |         if(rowOn != 0) //middle LED row
 | 
| 88 |         {
 | 
| 89 |             GP1 = 1;
 | 
| 90 |         }
 | 
| 91 |         else
 | 
| 92 |         {
 | 
| 93 |             GP1 = 0;
 | 
| 94 |         }
 | 
| 95 | 
 | 
| 96 |         if(stopLightOn != 0) //break light
 | 
| 97 |         {
 | 
| 98 |             if(GP2 == 0) //BREAK
 | 
| 99 |             {
 | 
| 100 |                 if(stopLightBlinking == 1)
 | 
| 101 |                 {
 | 
| 102 |                     if(ms2 > 200)
 | 
| 103 |                     {
 | 
| 104 |                         if(GP0 == 1)
 | 
| 105 |                             GP0 = 0;
 | 
| 106 |                         else
 | 
| 107 |                             GP0 = 1;
 | 
| 108 | 
 | 
| 109 |                         ms2 = 0;
 | 
| 110 |                     }
 | 
| 111 |                 }
 | 
| 112 |                 else
 | 
| 113 |                 {
 | 
| 114 |                     GP0 = 1;
 | 
| 115 |                 }
 | 
| 116 |             }
 | 
| 117 |             
 | 
| 118 |         }
 | 
| 119 |         else
 | 
| 120 |         {
 | 
| 121 |             GP0 = 0;
 | 
| 122 |         }
 | 
| 123 |     }
 | 
| 124 | }
 |