Eine Möglichkeit wäre, mit `moredelim` ein neues Delimiter-Paar zu definieren und die Hexadezimal-Ausdrücke jeweils damit zu begrenzen. Das wäre zwar nicht automatisch, würde aber funktionieren:
\documentclass{article}
\usepackage{xcolor,listings}
\begin{document}
\lstset{
language=C,
tabsize=4,
captionpos=b,
numbers=left,
commentstyle=\color{green},
backgroundcolor=\color{white},
numberstyle=\color{gray},
keywordstyle=\color{blue} \textbf,%otherkeywords={xdata},
keywords=[2]{xdata},
keywordstyle=[2]\color{red}\textbf,
identifierstyle=\color{black},
stringstyle=\color{red}\ttfamily,
basicstyle = \ttfamily \color{black} \footnotesize,
inputencoding=utf8/latin1,
showstringspaces=false ,
moredelim=[s][\color{yellow}]{|}{|},
moredelim=[is][\color{yellow}]{|}{|},
}
\begin{lstlisting}[caption={i2c.h},frame=tlrb]
xdata unsigned char CS_I2C @ |0xC100|;
xdata unsigned char I2C_REG_S1 @ |0xC101|;
\end{lstlisting}
\end{document}
![alt text][1]
Beschrieben ist `moredelim` in der [Dokumentation zu `listings`][2].
[1]: http://texwelt.de/wissen/upfiles/listings.png
http://texwelt.de/wissen/upfiles/listings_1.png
[2]: http://texdoc.net/pkg/listings