|
|
View previous topic :: View next topic |
Author |
Message |
bsodmike
Joined: 05 Aug 2006 Posts: 52
|
Referencing I/O Pins. |
Posted: Thu Sep 28, 2006 3:51 am |
|
|
Hi,
According to,
http://www.phanderson.com/PIC/PICC/CCS_PCM/tmr0.html
Even though that's very old it seems at CCS at a time supported referencing pins as
Quote: | #define LED_FL_PIN rb3 // RB3
#define SPKR_PIN rb2
#define LED_FL_DIR trisb3
#define SPKR_DIR trisb2 |
and performing,
Quote: | SPKR_DIR = 0; // make SPKR and LED_FL outputs
LED_FL_DIR = 0;
LED_FL_PIN = 0;
SPKR_PIN = 0; |
In my current code I'm using something along the lines of,
#define xPin PORTB.0
#define xTris TRISB.0
while defining
#define PORTA 0x05
etc etc
and that works. However, 'xPin=0;' doesn't work and I'm forced to use output_low(xPin);
Any ideas on this? |
|
|
bsodmike
Joined: 05 Aug 2006 Posts: 52
|
|
Posted: Thu Sep 28, 2006 5:18 am |
|
|
I've noticed another problem.
Even defining,
#define xPin PORTB.0
and
output_low(xPin); //doesn't work!
However, '#define xPin PIN_B0' causes it to work, as in the headerfile these are defined in the 'register*8+pin' format (so in this case 6*8+0, as 0x06 is the PORTB register.
Some googling and I found Phanderson's definitions for the 16f84,
Code: | // DEFS_F84.H (CCS PCM)
//
// Definitions of file registers and bits.
//
// PIC16F84. These agree with Microchip.
//
// Note that bits are lower case for C, upper case for assembly.
//
// copyright Peter H. Anderson, Scotland Co, NC, Mar, '99
// register definitions
#define W 0
#define F 1
// register files
#byte INDF =0x00
#byte TMR0 =0x01
#byte PCL =0x02
#byte STATUS =0x03
#byte FSR =0x04
#byte PORTA =0x05
#byte PORTB =0x06
#byte EEDATA =0x08
#byte EEADR =0x09
#byte PCLATH =0x0a
#byte INTCON =0x0b
#byte OPTION_REG =0x81
#byte TRISA =0x85
#byte TRISB =0x86
#byte EECON1 =0x88
#byte EECON2 =0x89
#bit ra4 =0x05.4
#bit ra3 =0x05.3
#bit ra2 =0x05.2
#bit ra1 =0x05.1
#bit ra0 =0x05.0
#bit rb7 =0x06.7
#bit rb6 =0x06.6
#bit rb5 =0x06.5
#bit rb4 =0x06.4
#bit rb3 =0x06.3
#bit rb2 =0x06.2
#bit rb1 =0x06.1
#bit rb0 =0x06.0
#bit trisa4 =0x85.4
#bit trisa3 =0x85.3
#bit trisa2 =0x85.2
#bit trisa1 =0x85.1
#bit trisa0 =0x85.0
#bit trisb7 =0x86.7
#bit trisb6 =0x86.6
#bit trisb5 =0x86.5
#bit trisb4 =0x86.4
#bit trisb3 =0x86.3
#bit trisb2 =0x86.2
#bit trisb1 =0x86.1
#bit trisb0 =0x86.0 |
/me slaps head! #bit/#byte, maybe these'll help, will test in a bit.
Update: Works now, it was the #bit/#byte that sorted it out...
Thanks! |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|