Code:
static volatile unsigned char TMR0 @ 0x01;
static volatile unsigned char PORTA @ 0x05;
static volatile unsigned char PORTB @ 0x06;
static volatile unsigned char PORTC @ 0x07;
This code is from the HT-PICC compiler, pic.h library file for PIC16F877A.
I understand what static volatile and other keyword means .
Here the Timer0 register address is 0x01, but why they use @ in front of it? Does it have something to do with a pointer?
It's a common compiler extension in many embedded compilers, which allows you to place variable in absolute memory address.
From HI-TECH C compiler manual:
In your example:
TMR0is presumably 8-bit unsigned hardware register which exists at address 0x01.